Descreva o bug
Ao executar automaticamente em um ambiente de CI, por exemplo, Ações do Github, auto shipit
falhará quando a proteção do branch master for ativada. Existe alguma maneira, talvez configurando permissões de uma determinada maneira, de superar esse problema sem desabilitar a proteção do branch?
Reproduzir
Usar o seguinte fluxo de trabalho Github Action e definir master como um branch protegido resultará em uma tentativa de push falhada com esta mensagem de erro:
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.
Fluxo de trabalho do 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
não tem acesso de gravação ao seu repo. Você precisa criar um token de um usuário com acesso de gravação.
Acho que esse é o problema. Se funcionar, por favor, comente e adicionarei uma nota aos documentos. (Ou se você quiser fazer uma RP, eu irei mesclá-la)
Infelizmente, isso não resolveu o problema. Parece que GITHUB_TOKEN
é criado automaticamente e deve ter as permissões corretas. Mas tentei com um token personalizado que também não funcionou.
Ainda tenho certeza de que seu token precisa de um pouco mais de permissões. Para verificar isso, fiz o seguinte:
Ative a proteção de filial para auto-config-hipstersmoothie
e mude para GITHUB_TOKEN
.
Resultado: https://github.com/hipstersmoothie/auto-config-hipstersmoothie/runs/451642081?check_suite_focus=true
Recebi o mesmo erro que você.
Depois de voltar para o GH_TOKEN
eu configurei (criado a partir de um usuário com write
acesso e dando ao token repo
acesso).
Resultado: https://github.com/hipstersmoothie/auto-config-hipstersmoothie/actions/runs/40930001
Lançamento bem-sucedido ✅
Acho que preciso deixar mais claro quais permissões dar ao token na documentação 😅
Ative a proteção de branch para auto-config-hipstersmoothie e mude para GITHUB_TOKEN.
Quando você diz para ativar a proteção de ramificação, o que isso inclui? Allow force pushes
desativado?
EDIT: O segundo link provavelmente deve ser este: https://github.com/hipstersmoothie/auto-config-hipstersmoothie/runs/451645892?check_suite_focus=true
O segundo link provavelmente deve ser este
sim, desculpe!
Permitir empurrões de força desativado
automático não força push, então isso não deve ser um problema. Aqui está o que eu configurei
@bbrinx Alguma atualização sobre isso? Provavelmente fechará em breve sem um exemplo reproduzível
@hipstersmoothie Eu adicionei um token com todas as permissões e funcionou! Parece que não configurei as permissões corretas na primeira vez que tentei. Obrigado!
Incrível!
Comentários muito úteis
@hipstersmoothie Eu adicionei um token com todas as permissões e funcionou! Parece que não configurei as permissões corretas na primeira vez que tentei. Obrigado!