Jelaskan bugnya
Saat menjalankan otomatis di lingkungan CI, misalnya Github Actions, auto shipit
akan gagal saat perlindungan cabang master diaktifkan. Apakah ada cara, mungkin dengan mengatur izin dengan cara tertentu, untuk mengatasi masalah ini tanpa menonaktifkan perlindungan cabang?
Untuk Mereproduksi
Menggunakan alur kerja Github Action berikut dan mengatur master sebagai cabang yang dilindungi akan mengakibatkan upaya push yang gagal dengan pesan kesalahan ini:
Error: Running command 'git' with args [push, --follow-tags, --set-upstream, origin, 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.
Alur kerja Github Action
name: Release
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="15">@v1</strong>
- name: Prepare repository
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git checkout ${GITHUB_REF:11} --
git remote rm origin
git remote add origin "https://x-access-token:[email protected]/<owner>/<repository>"
git fetch origin --tags
git branch --set-upstream-to origin/${GITHUB_REF:11} ${GITHUB_REF:11}
- name: Use Node.js 12.x
uses: actions/setup-node<strong i="16">@v1</strong>
with:
node-version: 12.x
- name: Cache node modules
uses: actions/cache<strong i="17">@v1</strong>
with:
path: node_modules
key: yarn-deps-${{ hashFiles('yarn.lock') }}
restore-keys: |
yarn-deps-${{ hashFiles('yarn.lock') }}
- name: Create Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
yarn install --frozen-lockfile
yarn build
yarn auto shipit
secrets.GITHUB_TOKEN
sebenarnya tidak memiliki akses tulis ke repo Anda. Anda perlu membuat token dari pengguna dengan akses tulis.
Saya pikir ini adalah masalah. Jika ini berhasil, silakan beri komentar kembali dan saya akan menambahkan catatan ke dokumen. (Atau jika Anda ingin membuat PR saya akan menggabungkannya)
Sayangnya ini tidak menyelesaikan masalah. Sepertinya GITHUB_TOKEN
dibuat secara otomatis dan harus memiliki izin yang tepat. Tetapi saya mencobanya dengan token khusus yang juga tidak berfungsi.
Saya masih cukup yakin bahwa token Anda membutuhkan lebih banyak izin. Untuk memeriksa ini, saya melakukan hal berikut:
Aktifkan perlindungan cabang untuk auto-config-hipstersmoothie
dan alihkan ke GITHUB_TOKEN
.
Hasil: https://github.com/hipstersmoothie/auto-config-hipstersmoothie/runs/451642081?check_suite_focus=true
Saya mendapat kesalahan yang sama seperti yang Anda lakukan.
Setelah beralih kembali ke GH_TOKEN
saya atur (dibuat dari pengguna dengan akses write
dan memberikan token akses repo
).
Hasil: https://github.com/hipstersmoothie/auto-config-hipstersmoothie/actions/runs/40930001
Rilis sukses
Saya pikir saya perlu memperjelas izin apa untuk memberikan token di dokumen
Aktifkan perlindungan cabang untuk auto-config-hipstersmoothie dan beralih ke GITHUB_TOKEN.
Saat Anda mengatakan aktifkan perlindungan cabang - apa saja yang termasuk di dalamnya? Apakah Allow force pushes
dinonaktifkan?
EDIT: Tautan kedua mungkin harus ini: https://github.com/hipstersmoothie/auto-config-hipstersmoothie/runs/451645892?check_suite_focus=true
Tautan kedua mungkin seharusnya ini
yup, maaf!
Izinkan dorongan paksa dinonaktifkan
otomatis tidak memaksa Push jadi ini seharusnya tidak menjadi masalah. Inilah yang telah saya konfigurasikan
@bbrinx Adakah pembaruan tentang ini? Mungkin akan segera ditutup tanpa contoh yang dapat direproduksi
@hipstersmoothie Saya menambahkan token dengan semua izin dan berhasil! Sepertinya saya tidak mengatur izin yang benar saat pertama kali mencoba. Terima kasih!
Luar biasa!
Komentar yang paling membantu
@hipstersmoothie Saya menambahkan token dengan semua izin dan berhasil! Sepertinya saya tidak mengatur izin yang benar saat pertama kali mencoba. Terima kasih!