As ações do GitHub para enviar alterações locais ao GitHub usando um token autorizado do GitHub.
Para garantir que seus fluxos de trabalho do GitHub Actions funcionem corretamente, é importante configurar o GITHUB_TOKEN
com os direitos de acesso apropriados para cada repositório.
Siga estas etapas para configurar as permissões necessárias:
Settings
localizada na barra de ferramentas do repositório.Actions
.Actions
, encontre e clique em General
.Workflow permissions
.GITHUB_TOKEN
. Clique na opção Read and write permissions
.Certifique-se de salvar suas alterações antes de sair da página de configurações.
Observação
A concessão de Read and write permissions
permite que os fluxos de trabalho modifiquem seu repositório, incluindo adição ou atualização de arquivos e código. Certifique-se sempre de confiar nos fluxos de trabalho habilitados com essas permissões.
As permissões GITHUB_TOKEN
também podem ser configuradas globalmente para todos os trabalhos em um fluxo de trabalho ou individualmente para cada trabalho.
Este exemplo demonstra como definir as permissões necessárias para os escopos contents
e pull-requests
em nível de trabalho:
jobs :
job1 :
runs-on : ubuntu-latest
permissions : # Job-level permissions configuration starts here
contents : write # 'write' access to repository contents
pull-requests : write # 'write' access to pull requests
steps :
- uses : actions/checkout@v4
Para aplicar permissões globalmente, o que afetará todos os trabalhos no fluxo de trabalho, você definiria a chave de permissions
no nível raiz do arquivo de fluxo de trabalho, da seguinte forma:
permissions : # Global permissions configuration starts here
contents : read # 'read' access to repository contents
pull-requests : write # 'write' access to pull requests
jobs :
job1 :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
Ajuste os níveis de permissão e escopos de acordo com os requisitos do seu fluxo de trabalho. Para obter mais detalhes sobre cada nível de permissão, consulte a documentação do GitHub.
Um exemplo de fluxo de trabalho para autenticar com a plataforma GitHub e enviar as alterações para uma referência especificada, por exemplo, um branch já disponível:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
fetch-depth : 0 # otherwise, there would be errors pushing refs to the destination repository.
- name : Create local changes
run : |
...
- name : Commit files
run : |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
branch : ${{ github.ref }}
Um exemplo de fluxo de trabalho para usar o parâmetro branch para enviar as alterações para um branch especificado, por exemplo, um branch Pull Request:
name : Example
on : [pull_request, pull_request_target]
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
branch : ${{ github.head_ref }}
Um exemplo de fluxo de trabalho para usar o parâmetro force-with-lease para forçar o push para um repositório:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
force_with_lease : true
Um exemplo de fluxo de trabalho para usar um token de aplicativo GitHub junto com o token padrão dentro da ação de checkout. Você pode encontrar mais informações sobre o tema aqui:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
persist-credentials : false
- name : Generate Githup App Token
id : generate_token
uses : tibdex/github-app-token@v1
with :
app_id : ${{ secrets.APP_ID }}
installation_id : ${{ secrets.INSTALLATION_ID }}
private_key : ${{ secrets.APP_PRIVATE_KEY }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ env.TOKEN }}
Um exemplo de fluxo de trabalho para usar o envio de token não padrão para outro repositório. Esteja ciente de que a bandeira de forçar com arrendamento não é possível nesse caso:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
token : ${{ secrets.PAT_TOKEN }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.PAT_TOKEN }}
repository : Test/test
force : true
Um exemplo de fluxo de trabalho para atualizar/substituir uma tag existente:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git tag -d $GITHUB_REF_NAME
git tag $GITHUB_REF_NAME
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
force : true
tags : true
Um exemplo de fluxo de trabalho para autenticação na plataforma GitHub por meio de Deploy Keys ou em geral SSH:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ssh-key : ${{ secrets.SSH_PRIVATE_KEY }}
persist-credentials : true
- name : Create local changes
run : |
...
- name : Commit files
run : |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
ssh : true
branch : ${{ github.ref }}
Um exemplo de fluxo de trabalho para enviar para um branch protegido dentro do seu repositório. Esteja ciente de que é necessário utilizar um token de acesso pessoal e utilizá-lo dentro da ação actions/checkout
. Pode ser uma boa ideia especificar o sinalizador force-with-lease em caso de erros de sincronização e push. Se quiser gerar um token de acesso pessoal adequado, você pode seguir estas instruções:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
token : ${{ secrets.PAT_TOKEN }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.PAT_TOKEN }}
repository : Test/test
force_with_lease : true
nome | valor | padrão | descrição |
---|---|---|---|
github_token | corda | ${{ github.token }} | GITHUB_TOKEN ou um repositório com escopo definido Token de acesso pessoal. |
ssh | booleano | falso | Determina se as chaves ssh/Deploy são usadas. |
filial | corda | (padrão) | Ramo de destino para enviar alterações. Pode ser transmitido usando ${{ github.ref }} . |
vigor | booleano | falso | Determina se o impulso forçado é usado. |
forçar_com_lease | booleano | falso | Determina se o push de força com concessão é usado. Especifique a ramificação correspondente dentro da seção ref da ação de checkout, por exemplo, ref: ${{ github.head_ref }} . Esteja ciente, se você deseja atualizar o branch e a tag correspondente, use o parâmetro force em vez da opção force_with_lease . |
atômico | booleano | verdadeiro | Determina se o push atômico é usado. |
push_to_submodules | corda | 'Sob demanda' | Determina se --recurse-submodules= é usado. O valor define a estratégia utilizada. |
push_only_tags | booleano | falso | Determina se a ação deve apenas enviar as tags, padrão falso |
etiquetas | booleano | falso | Determina se --tags é usado. |
diretório | corda | '.' | Diretório para o qual mudar antes de enviar. |
repositório | corda | '' | Nome do repositório. O nome do repositório padrão ou vazio representa repositório atual do github. Se você quiser enviar para outro repositório, você deve criar um token de acesso pessoal e use-o como entrada github_token . |
Se você vir o seguinte erro na saída do trabalho e quiser atualizar uma tag existente:
To https://github.com/Test/test_repository
! [rejected] 0.0.9 -> 0.0.9 (stale info)
error: failed to push some refs to 'https://github.com/Test/test_repository'
Por favor, use o force
em vez do parâmetro force_with_lease
. A atualização da tag com o parâmetro --force-with-lease
não é possível.
O Dockerfile e os scripts e documentação associados neste projeto são lançados sob a licença MIT.
GitHub são marcas registradas da GitHub, Inc. O nome GitHub usado neste projeto é apenas para fins de identificação. O projeto não está associado de forma alguma ao GitHub Inc. e não é uma solução oficial do GitHub Inc. Foi disponibilizado com o objetivo de facilitar a utilização do site GitHub.