Se você tiver uma verificação e um status com o mesmo nome e selecionar esse nome como uma verificação de status obrigatória, a verificação e o status serão obrigatórios. Para obter mais informações, consulte "Verificações".
Depois que você habilitar as verificações de status solicitadas, seu branch pode precisar estar atualizado com o branch de base antes da ação de merge. Isso garante que o branch foi testado com o código mais recente do branch base. Se o branch estiver desatualizado, você precisará fazer merge do branch base no seu branch. Para obter mais informações, consulte "Sobre branches protegidos".
Observação: também é possível atualizar o seu branch com o branch base usando o rebase do Git. Para obter mais informações, consulte "Rebase no Git".
Não será possível fazer push de alterações locais em um branch protegido enquanto todas as verificações de status obrigatórias não forem aprovadas. Sendo assim, você receberá uma mensagem de erro semelhante a esta.
remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing
Observação: as pull requests que são atualizadas e passam nas verificações de status obrigatórias podem sofrer merge localmente e enviadas por push para o branch protegido. Isso pode ser feito sem verificações de status em execução no próprio commit de merge.
Conflitos entre o título do commit e o commit de merge do teste
Por vezes, os resultados das verificações de status para o commit de mescla teste e o commit principal entrarão em conflito. Se o commit de merge de testes tem status, o commit de merge de testes deve passar. Caso contrário, o status do commit principal deve passar antes de você poder mesclar o branch. Para obter mais informações sobre commits de merge de teste, consulte "Pulls".
Manipulação ignorada, mas verificações necessárias
Observação: Se um fluxo de trabalho for ignorado devido � filtragem do caminho, a filtragem do caminho ou mensagem de commit as verificações associadas a esse fluxo de trabalho permanecerão em um estado "Pendente". Um pull request que requer que essas verificações sejam bem sucedidas será bloqueado do merge.
Se um trabalho em um fluxo de trabalho for ignorado devido a uma condicional, ele informará seu status como "Sucesso". Para obter mais informações, consulte Ignorando as execuções do fluxo de trabalho e Usando condições para controlar a execução do trabalho.
Exemplo
O exemplo a seguir mostra um fluxo de trabalho que exige um status de conclusão de "Sucesso" para o trabalho de criação
, mas o fluxo de trabalho será ignorado se o pull request não alterar quaisquer arquivos no diretório de scripts
.
name: ci
on:
pull_request:
paths:
- 'scripts/**'
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
Devido � filtragem do caminho, um pull request que apenas altera um arquivo na raiz do repositório não acionará esse fluxo de trabalho e está bloqueada de fazer merge. Você verá o seguinte status no pull request:
Você pode corrigir isso criando um fluxo de trabalho genérico, com o mesmo nome, que retornará verdadeiro em qualquer caso semelhante ao fluxo de trabalho abaixo:
name: ci
on:
pull_request:
paths-ignore:
- 'scripts/**'
- 'middleware/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required" '
Agora, as verificações sempre passarão sempre que alguém enviar uma solicitação pull que não altere os arquivos listados em caminhos
no primeiro fluxo de trabalho.
Notas:
- Certifique-se de que a chave
nome
e o nome do trabalho necessário sejam o mesmo em ambos os arquivos do fluxo de trabalho. Para obter mais informações, consulte "Sintaxe do fluxo de trabalho para GitHub Actions". - O exemplo acima usa GitHub Actions, mas esta solução alternativa também se aplica a outros provedores de CI/CD que se integram a GitHub.