Pertama-tama, terima kasih telah merilis otomatis, ini cukup menyenangkan untuk digunakan dan pencegahan pesan komit bike-shedding adalah anugerah!
Jelaskan bugnya
Sepertinya auto shipit
tidak menggunakan GH_TOKEN
untuk mengotentikasi Push-nya ke repo dan org pribadi kami:
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.
Kami menggunakan token pengguna Bot sebagai GH_TOKEN
, NPM_TOKEN
dan NODE_AUTH_TOKEN
dengan cakupan yang benar, dan ini adalah admin repo. Pemeriksaan status dan persyaratan peninjauan tampaknya masih berlaku, terlepas dari nilai "Sertakan administrator" dalam batasan cabang.
Kami telah memverifikasi bahwa mendorong secara langsung bahwa pengguna bot dapat mendorong komit langsung ke master. Kami juga mencoba menggunakan token dari dua pengembang dan mengalami masalah yang sama.
Detail yang menarik, alur kerja Github dijalankan "dengan benar" saat mendorong langsung ke master
. Masih gagal untuk mendorong komit tetapi skrip tidak error:
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
berfungsi dengan baik untuk PR, yang aneh, karena alur kerja Github identik, kecuali untuk beberapa kondisi if berdasarkan label pr.
Untuk Mereproduksi
auto shipit
pada PRJalankan auto shipit
pada master -> gagal
Dorong langsung ke master
auto shipit
-> works-ish, push masih gagal, tapi script tidak errorPerilaku yang diharapkan
Dorong tidak gagal
Tangkapan layar
Jika berlaku, tambahkan tangkapan layar untuk membantu menjelaskan masalah Anda.Informasi lingkungan:
Silakan jalankan `npx auto info` dan letakkan hasilnya di bagian di bawah iniEnvironment 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
Konteks tambahan
Berikut adalah alur kerja Github yang mengeksekusi auto
:
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"
Apakah ini pernah berhasil sebelumnya? Saya baru-baru ini mengutak-atik kode yang dapat mempengaruhi ini.
BTW Terima kasih atas penulisan masalah yang luar biasa!
Saya tidak yakin ini pernah berhasil jujur
Saya bekerja dengan Gitlab selama sekitar satu tahun terakhir ... Aturan yang sangat berbeda untuk PR dan semacamnya
Beri tahu saya, jika saya dapat membantu Anda men-debug ini, atau mendukung Anda sebaliknya
Setelah beberapa percobaan dan kesalahan, saya dapat mengklarifikasi lebih lanjut tentang akar penyebab potensial, yang satu mungkin terkait auto
yang lain mungkin merupakan masalah dengan Github itu sendiri.
Kami berhasil mendorong menggunakan trik serupa dengan yang disebutkan di #945 untuk memodifikasi git origin
.
Namun tetap tidak berhasil… kecuali kami menonaktifkan persyaratan untuk persetujuan PR di perlindungan cabang…… Yang seharusnya tidak menjadi masalah karena kami menggunakan pengguna tingkat admin, tapi inilah kami.
_Koreksi:_ Tidak lagi berfungsi jika pemeriksaan status diperlukan. Perlindungan cabang Github jelas merupakan masalah. Saya harus menonaktifkan persetujuan PR dan pemeriksaan status untuk saat ini
Git origin
dapat ditangani oleh auto
menggunakan GH_TOKEN
untuk mengotentikasi Push-nya, mungkin di belakang flag fitur atau semacamnya. Yang lain mungkin memerlukan beberapa dokumentasi dan bekerja di sekitar Github.
Apakah menurut Anda pengaturan seperti itu akan menjadi ide yang bagus untuk auto
?
Untuk referensi, kami dapat mendorong dengan benar menggunakan URL ini:
git remote add origin "https://[email protected]/COMPANY/REPO"
@hipstersmoothie Saya mengerti apa yang Anda maksud dengan "bermain-main" (#1036) Ini memperbaiki sebagian besar masalah, terima kasih banyak!
Apakah Anda menguji ini dengan prediksi cabang diaktifkan? Saya agak cemas menyentuh menu ini
Saya tidak menguji dengan perlindungan cabang diaktifkan. Tetapi jika gagal karena alasan itu, saya pikir yang perlu Anda lakukan hanyalah menambahkan GH_TOKEN Anda sendiri dengan izin repo
Saya akan menguji dengan sangat cepat di https://github.com/hipstersmoothie/create-check
Mendapatkan kesalahan Anda https://github.com/hipstersmoothie/create-check/runs/495554019
Sepertinya ini adalah masalah dengan tindakan GitHub. 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
Sepertinya solusinya adalah:
repo
dan gunakan itu sebagai ganti GH_TOKENSangat disayangkan Anda tidak dapat menambahkan bot sebagai admin.
Saya mengalami banyak kesulitan mendapatkan sesuatu untuk bekerja :(
Padahal banyak yang menginginkan ini. https://github.community/t5/GitHub-Actions/How-to-Push-to-protected-branches-in-a-GitHub-Action/td-p/29609
Hmm anehnya saya bisa membuat checkoutv1 berfungsi tetapi tidak 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 Bisakah Anda mencoba v9.19.3
dan menambahkan yang berikut ini ke tindakan Anda?
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 Semuanya berfungsi sekarang
Header tambahan itu cukup menarik, saya belum melihat yang disebutkan banyak.
Satu efek samping dari menghapus tajuk tampaknya adalah mendorong tanpa kredensial eksplisit tidak lagi berfungsi:
fatal: could not read Username for 'https://github.com': No such device or address
Mengganti sebagian besar skrip rilis dengan auto shipit
memperbaiki ini:
export PATH=$(npm bin):$PATH
VERSION=`auto version`
## Support for label 'skip-release'
if [ ! -z "$VERSION" ]; then
yarn auto shipit
fi
Terima kasih banyak atas bantuan cepatnya!
auto shipit
apakah versi itu memeriksa Anda. Jadi yang perlu Anda lakukan hanyalah menjalankan auto shipit
Tidak perlu skrip
:rocket: Masalah dirilis di v9.19.4
:rocket: