Las acciones de GitHub para enviar cambios locales a GitHub utilizando un token de GitHub autorizado.
Para garantizar que los flujos de trabajo de GitHub Actions funcionen correctamente, es importante configurar GITHUB_TOKEN
con los derechos de acceso adecuados para cada repositorio.
Siga estos pasos para configurar los permisos necesarios:
Settings
ubicado en la barra de herramientas del repositorio.Actions
.Actions
, busque y haga clic en General
.Workflow permissions
.GITHUB_TOKEN
. Haga clic en la opción Read and write permissions
.Asegúrese de guardar los cambios antes de salir de la página de configuración.
Nota
Otorgar Read and write permissions
permite que los flujos de trabajo modifiquen su repositorio, incluida la adición o actualización de archivos y códigos. Asegúrese siempre de confiar en los flujos de trabajo que habilita con estos permisos.
Los permisos GITHUB_TOKEN
también se pueden configurar globalmente para todos los trabajos en un flujo de trabajo o individualmente para cada trabajo.
Este ejemplo demuestra cómo configurar los permisos necesarios para los contents
y los alcances pull-requests
a nivel de trabajo:
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 permisos globalmente, lo que afectará a todos los trabajos dentro del flujo de trabajo, definiría la clave de permissions
en el nivel raíz del archivo de flujo de trabajo, así:
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 los niveles y alcances de permisos según los requisitos de su flujo de trabajo. Para obtener más detalles sobre cada nivel de permiso, consulte la documentación de GitHub.
Un flujo de trabajo de ejemplo para autenticarse con la plataforma GitHub y enviar los cambios a una referencia específica, por ejemplo, una rama ya disponible:
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 }}
Un flujo de trabajo de ejemplo para usar el parámetro de rama para enviar los cambios a una rama específica, por ejemplo, una rama de solicitud de extracción:
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 }}
Un flujo de trabajo de ejemplo para utilizar el parámetro force-with-lease para forzar el envío a un repositorio:
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
Un flujo de trabajo de ejemplo para usar un token de aplicación GitHub junto con el token predeterminado dentro de la acción de pago. Puedes encontrar más información sobre el tema aquí:
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 }}
Un flujo de trabajo de ejemplo para utilizar el envío de token no predeterminado a otro repositorio. Tenga en cuenta que en tal caso no es posible marcar forzar con arrendamiento:
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
Un flujo de trabajo de ejemplo para actualizar/sobrescribir una etiqueta 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
Un flujo de trabajo de ejemplo para autenticarse con la plataforma GitHub mediante claves de implementación o, en general, 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 }}
Un flujo de trabajo de ejemplo para enviar a una rama protegida dentro de su repositorio. Tenga en cuenta que es necesario utilizar un token de acceso personal y utilizarlo dentro de la acción actions/checkout
. Puede ser una buena idea especificar el indicador forzar con arrendamiento en caso de errores de sincronización y envío. Si deseas generar un token de acceso personal adecuado, puedes seguir estas instrucciones:
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
nombre | valor | por defecto | descripción |
---|---|---|---|
token_github | cadena | ${{ github.token }} | GITHUB_TOKEN o un repositorio con alcance Token de acceso personal. |
ssh | booleano | FALSO | Determina si se utilizan ssh/Deploy Keys. |
rama | cadena | (por defecto) | Rama de destino para impulsar cambios. Se puede pasar usando ${{ github.ref }} . |
fuerza | booleano | FALSO | Determina si se utiliza fuerza de empuje. |
fuerza_con_arrendamiento | booleano | FALSO | Determina si se utiliza el empuje forzado con arrendamiento. Especifique la rama correspondiente dentro de la sección ref de la acción de pago, por ejemplo, ref: ${{ github.head_ref }} . Tenga en cuenta que si desea actualizar la rama y la etiqueta correspondiente, utilice el parámetro force en lugar de la opción force_with_lease . |
atómico | booleano | verdadero | Determina si se utiliza empuje atómico. |
push_to_submodules | cadena | 'Bajo demanda' | Determina si se utiliza --recurse-submodules=. El valor define la estrategia utilizada. |
push_only_tags | booleano | FALSO | Determina si la acción solo debe insertar las etiquetas; el valor predeterminado es falso |
etiquetas | booleano | FALSO | Determina si se utiliza --tags . |
directorio | cadena | '.' | Directorio al que cambiar antes de presionar. |
repositorio | cadena | '' | Nombre del repositorio. El nombre del repositorio predeterminado o vacío representa repositorio actual de github. Si desea enviar a otro repositorio, deberías crear un token de acceso personal y úselo como entrada github_token . |
Si ve el siguiente error dentro del resultado del trabajo y desea actualizar una etiqueta 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'
Utilice force
en lugar del parámetro force_with_lease
. La actualización de la etiqueta no es posible con el parámetro --force-with-lease
.
El Dockerfile y los scripts y la documentación asociados en este proyecto se publican bajo la licencia MIT.
GitHub son marcas comerciales registradas de GitHub, Inc. El nombre de GitHub utilizado en este proyecto tiene fines de identificación únicamente. El proyecto no está asociado de ninguna manera con GitHub Inc. y no es una solución oficial de GitHub Inc. Se puso a disposición para facilitar el uso del sitio GitHub.