ZunĂ€chst einmal vielen Dank fĂŒr die Veröffentlichung von Auto, es ist sehr angenehm zu verwenden und die Verhinderung von Commit Message Bike-Shorting ist ein GlĂŒcksfall!
Beschreibe den Fehler
Es sieht so aus, als ob auto shipit
GH_TOKEN
, um seinen Push an unser privates Repository und unsere Organisation zu authentifizieren:
npm notice integrity: sha512-kXkHqsVqSmGJl[...]cfW+F0SWxcjBg==
npm notice total files: 57
npm notice
Error: Running command 'git' with args [push, --follow-tags, --set-upstream, https://github.com/COMPANY/REPO, master] failed
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: At least 1 approving review is required by reviewers with write access.
To https://github.com/finanzcheck/traversal-editor
* [new tag] v0.6.5 -> v0.6.5
! [remote rejected] master -> master (protected branch hook declined)
error: failed to push some refs to 'https://github.com/COMPANY/REPO'
at ChildProcess.<anonymous> (/home/runner/work/REPO/REPO/node_modules/@auto-it/core/dist/utils/exec-promise.js:49:24)
at ChildProcess.emit (events.js:311:20)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
##[error]Process completed with exit code 1.
Wir verwenden das Token eines Bot-Benutzers als GH_TOKEN
, NPM_TOKEN
und NODE_AUTH_TOKEN
mit den richtigen GĂŒltigkeitsbereichen und es ist ein Administrator des Repositorys. StatusprĂŒfungen und ĂberprĂŒfungsanforderungen scheinen jedoch weiterhin zu gelten, unabhĂ€ngig vom Wert von "Administratoren einbeziehen" in den ZweigbeschrĂ€nkungen.
Wir haben ĂŒberprĂŒft, dass der Bot-Benutzer Commits direkt an den Master pushen kann. Wir haben auch versucht, Token von zwei Entwicklern zu verwenden, und sind auf das gleiche Problem gestoĂen.
Interessantes Detail, der Github-Workflow wird "korrekt" ausgefĂŒhrt, wenn direkt auf master
. Es schlÀgt immer noch fehl, Commits zu pushen, aber das Skript gibt keinen Fehler aus:
npm notice
+ @COMPANY/[email protected]
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: At least 1 approving review is required by reviewers with write access.
To https://github.com/COMPANY/REPO.git
* [new tag] v0.6.2 -> v0.6.2
! [remote rejected] master -> master (protected branch hook declined)
error: failed to push some refs to '***github.com/COMPANY/REPO.git'
âč info Current "Latest Release" on Github: v0.6.1
âč info Using release notes:
#### â ïž Pushed to `master`
- COMMIT
#### Authors: 1
- AUTHOR
âč info Releasing v0.6.2 to GitHub.
auto shipit
funktioniert gut fĂŒr PRs, was seltsam ist, da der Github-Workflow identisch ist, mit Ausnahme einiger if-Bedingungen, die auf Pr-Labels basieren.
Reproduzieren
auto shipit
auf PR . ausauto shipit
auf dem Master ausfĂŒhren -> schlĂ€gt fehl
Direkt zum Master drĂŒcken
auto shipit
-> funktioniert-ish, der Push schlÀgt immer noch fehl, aber das Skript schlÀgt nicht fehlErwartetes Verhalten
Push schlÀgt nicht fehl
Screenshots
FĂŒgen Sie gegebenenfalls Screenshots hinzu, um Ihr Problem zu erklĂ€ren.Umweltinformationen:
Bitte fĂŒhren Sie `npx auto info` aus und geben Sie die Ergebnisse in den folgenden Abschnitt einEnvironment Information:
"auto" version: v9.15.2
"git" version: v2.25.0
"node" version: v13.8.0
Project Information:
â Repository: COMPANY/REPO
â Author Name: Robert Wawrzyniak
â Author Email: [redacted]
â Current Version: v0.6.6
â Latest Release: v0.6.2
â Labels configured on GitHub project
GitHub Token Information:
â Token: [Token starting with 52ba]
â Repo Permission: admin
â User: thuringia
â API: https://api.github.com
â Enabled Scopes: gist, notifications, read:packages, repo, write:packages
â Rate Limit: 4997/5000
âš Done in 42.03s.
Time: 0h:00m:43s
ZusÀtzlicher Kontext
Hier ist der Github-Workflow, der auto
ausfĂŒhrt:
name: Release on master
on:
push:
branches:
- master
jobs:
release:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message , 'ci skip') && !contains(github.event.head_commit.message, 'skip ci')"
steps:
- uses: actions/checkout<strong i="9">@v2</strong>
- run: git fetch --prune --unshallow --tags
- uses: actions/setup-node<strong i="10">@v1</strong>
with:
node-version: "12.x"
registry-url: "https://npm.pkg.github.com/"
scope: "@COMPANY"
- id: yarn-cache-dir
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache<strong i="11">@v1</strong>
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- run: yarn install
env:
NODE_AUTH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
- uses: actions/cache<strong i="12">@v1</strong>
with:
path: ${{ steps.yarn-cache-dir.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Create Release
env:
GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
run: |
yarn install --frozen-lockfile
yarn build:library
yarn autorelease
# yarn build: library runs babel
# yarn autorelease is just "auto shipit"
Hat das schon mal funktioniert? Ich habe vor kurzem an Code herumgefummelt, der dies bewirken könnte.
BTW Danke fĂŒr die tolle Problembeschreibung!
Ich bin mir nicht sicher, ob das jemals funktioniert hat, um ehrlich zu sein
Ich habe das letzte Jahr oder so mit Gitlab gearbeitet⊠Also andere Regeln fĂŒr PRs und so
Lass es mich wissen, wenn ich dir beim Debuggen helfen oder dich anderweitig unterstĂŒtzen kann
Nach einigem Ausprobieren konnte ich mögliche Grundursachen weiter klÀren, eine könnte auto
-bezogen sein, die andere könnte ein Problem mit Github selbst sein.
Wir haben es geschafft, mit einem Àhnlichen Trick wie in #945 erwÀhnt zu pushen, um das Git origin
zu modifizieren.
Es funktionierte jedoch immer noch nicht ... es sei denn, wir deaktivieren die Anforderung fĂŒr PR-Genehmigungen im Zweigschutz ... Was kein Problem sein sollte, da wir einen Benutzer auf Administratorebene verwenden, aber hier sind wir.
_Korrektur:_ Es funktioniert nicht mehr, wenn StatusprĂŒfungen erforderlich sind. Der Schutz von Github-Zweigen ist definitiv ein Problem. Ich muss PR-Genehmigungen und StatusprĂŒfungen vorerst deaktivieren
Das Git origin
könnte von auto
mit GH_TOKEN
adressiert werden, um seinen Push zu authentifizieren, vielleicht hinter einem Feature-Flag oder so. Der andere erfordert möglicherweise einige Dokumentation und Arbeiten rund um Github.
Glauben Sie, dass eine solche Einstellung fĂŒr auto
eine gute Idee wÀre?
Als Referenz können wir mit dieser URL richtig pushen:
git remote add origin "https://[email protected]/COMPANY/REPO"
@hipstersmoothie Ich
Haben Sie dies mit aktivierten Verzweigungsvorhersagen getestet? Ich werde irgendwie Ă€ngstlich, wenn ich dieses MenĂŒ anfasse đ
Ich habe nicht mit aktiviertem Verzweigungsschutz getestet. Aber wenn es aus diesem Grund fehlschlagen sollte, mĂŒssten Sie meiner Meinung nach nur Ihr eigenes GH_TOKEN mit repo
Berechtigung hinzufĂŒgen
Ich teste ganz schnell auf https://github.com/hipstersmoothie/create-check
Erhalten Sie Ihren Fehler https://github.com/hipstersmoothie/create-check/runs/495554019
Scheint ein Problem mit GitHub-Aktionen zu sein. https://github.community/t5/GitHub-Actions/Allowing-github-actions-bot-to-push-to-protected-branch/td-p/34367
https://github.com/semantic-release/github/issues/175#issuecomment -527224825
Anscheinend sind die Lösungen:
repo
Berechtigungen und verwenden Sie dieses anstelle von GH_TOKENEs ist bedauerlich, dass Sie den Bot nicht als Administrator hinzufĂŒgen können.
Ich habe groĂe Probleme, alles zum Laufen zu bringen :(
Hmm seltsamerweise kann ich checkoutv1 zum Laufen bringen, aber nicht checkout v2
- uses: actions/checkout<strong i="7">@v1</strong>
- name: Prepare repository
run: git checkout "${GITHUB_REF:11}"
- uses: actions/checkout<strong i="12">@v2</strong>
- name: Prepare repository
run: git fetch --prune --unshallow
@thuringia Kannst du v9.19.3
ausprobieren und deiner Aktion Folgendes hinzufĂŒgen?
steps:
- uses: actions/checkout<strong i="8">@v2</strong>
with:
# Make sure to get all the commits
fetch-depth: 0
- name: Prepare repository
# Fetch the rest of the git info (tags)
run: git fetch --prune
- name: Unset header
# checkout<strong i="9">@v2</strong> adds a header that makes branch protection report errors ):
run: git config --local --unset http.https://github.com/.extraheader
@hipstersmoothie Alles funktioniert jetzt đ
Dieser zusÀtzliche Header ist ziemlich interessant, ich habe ihn nicht viel erwÀhnt gesehen.
Ein Nebeneffekt des Entfernens des Headers scheint zu sein, dass das Pushen ohne explizite Anmeldeinformationen nicht mehr funktioniert:
fatal: could not read Username for 'https://github.com': No such device or address
Das Ersetzen des gröĂten Teils des Release-Skripts durch auto shipit
behebt dies jedoch:
export PATH=$(npm bin):$PATH
VERSION=`auto version`
## Support for label 'skip-release'
if [ ! -z "$VERSION" ]; then
yarn auto shipit
fi
Vielen Dank fĂŒr die schnelle Hilfe!
auto shipit
fĂŒhrt diese VersionsprĂŒfung fĂŒr Sie durch. Sie mĂŒssen also nur auto shipit
ausfĂŒhren đ Kein Skript erforderlich
:rocket: Ausgabe wurde in v9.19.4
:rocket: