Auto: `auto shipit` menggunakan token/pengguna yang salah untuk mendorong komit di Git

Dibuat pada 6 Mar 2020  ·  17Komentar  ·  Sumber: intuit/auto

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

  1. Aktifkan batasan ulasan dan pemeriksaan status untuk cabang
  2. Dorong cabang, dan buka PR
  3. Jalankan auto shipit pada PR
  4. Terima PR
  5. Jalankan auto shipit pada master -> gagal

  6. Dorong langsung ke master

  7. Jalankan auto shipit -> works-ish, push masih gagal, tapi script tidak error

Perilaku 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 ini
Environment 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" 
bug released

Semua 17 komentar

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

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:

  1. Hapus centang pada opsi sertakan administrator https://github.com/semantic-release/github/issues/175#issuecomment -527224825 (tidak berfungsi )
  2. Buat GH_TOKEN di akun administrator dengan izin repo dan gunakan itu sebagai ganti GH_TOKEN

Sangat disayangkan Anda tidak dapat menambahkan bot sebagai admin.

Saya mengalami banyak kesulitan mendapatkan sesuatu untuk bekerja :(

Hmm anehnya saya bisa membuat checkoutv1 berfungsi tetapi tidak checkout v2

bekerja

      - uses: actions/checkout<strong i="7">@v1</strong>

      - name: Prepare repository
        run: git checkout "${GITHUB_REF:11}"

tidak bekerja

      - 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:

Apakah halaman ini membantu?
0 / 5 - 0 peringkat