GitHub Actions,用于使用授权的 GitHub 令牌将本地更改推送到 GitHub。
为了确保您的 GitHub Actions 工作流程正常运行,为每个存储库配置GITHUB_TOKEN
适当的访问权限非常重要。
请按照以下步骤设置必要的权限:
Settings
。Actions
。Actions
设置下,找到并单击General
。Workflow permissions
部分。GITHUB_TOKEN
的默认权限设置。单击Read and write permissions
选项。确保在退出设置页面之前保存更改。
笔记
授予Read and write permissions
允许工作流修改您的存储库,包括添加或更新文件和代码。始终确保您信任使用这些权限启用的工作流程。
还可以为工作流中的所有作业全局配置GITHUB_TOKEN
权限,也可以为每个作业单独配置。
此示例演示如何在作业级别设置contents
和pull-requests
范围的必要权限:
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
要全局应用权限(这将影响工作流中的所有作业),您可以在工作流文件的根级别定义permissions
键,如下所示:
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
根据工作流程的要求调整权限级别和范围。有关每个权限级别的更多详细信息,请参阅 GitHub 文档。
使用 GitHub 平台进行身份验证并将更改推送到指定引用(例如已经可用的分支)的示例工作流程:
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 }}
使用分支参数将更改推送到指定分支(例如拉取请求分支)的示例工作流程:
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 }}
使用force-with-lease参数强制推送到存储库的示例工作流程:
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
在结帐操作中使用 GitHub 应用程序令牌和默认令牌的示例工作流程。您可以在此处找到有关该主题的更多信息:
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 }}
使用非默认令牌推送到另一个存储库的示例工作流程。请注意,在这种情况下强制租用标志是不可能的:
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
更新/覆盖现有标签的示例工作流程:
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
通过部署密钥或一般 SSH 向 GitHub 平台进行身份验证的示例工作流程:
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 }}
推送到存储库内受保护分支的示例工作流程。请注意,必须使用个人访问令牌并在actions/checkout
操作中使用它。在出现同步和推送错误的情况下,指定强制租用标志可能是一个好主意。如果您想生成足够的个人访问令牌,可以按照以下说明操作:
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
姓名 | 价值 | 默认 | 描述 |
---|---|---|---|
github_token | 细绳 | ${{ github.token }} | GITHUB_TOKEN 或回购范围 个人访问令牌。 |
SSH | 布尔值 | 错误的 | 确定是否使用 ssh/部署密钥。 |
分支 | 细绳 | (默认) | 推送更改的目标分支。 可以使用 ${{ github.ref }} 传入。 |
力量 | 布尔值 | 错误的 | 确定是否使用强制推送。 |
强制租用 | 布尔值 | 错误的 | 确定是否使用强制租赁推送。请在结帐操作的ref 部分中指定相应的分支,例如ref: ${{ github.head_ref }} 。请注意,如果您想更新分支和相应的标记,请使用force 参数而不是force_with_lease 选项。 |
原子 | 布尔值 | 真的 | 确定是否使用原子推送。 |
推送到子模块 | 细绳 | '一经请求' | 确定是否使用 --recurse-submodules=。该值定义了所使用的策略。 |
仅推送标签 | 布尔值 | 错误的 | 确定操作是否应该只推送标签,默认 false |
标签 | 布尔值 | 错误的 | 确定是否使用--tags 。 |
目录 | 细绳 | '.' | 推送之前要更改到的目录。 |
存储库 | 细绳 | ” | 存储库名称。 默认或空存储库名称代表 当前的 github 存储库。 如果你想推送到其他存储库, 你应该制作一个个人访问令牌 并将其用作 github_token 输入。 |
如果您在作业的输出中看到以下错误,并且您想要更新现有标签:
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'
请使用force
而不是force_with_lease
参数。使用--force-with-lease
参数不可能更新标签。
该项目中的 Dockerfile 以及相关脚本和文档是根据 MIT 许可证发布的。
GitHub 是 GitHub, Inc. 的注册商标。本项目中使用的 GitHub 名称仅用于识别目的。该项目与 GitHub Inc. 没有任何关联,也不是 GitHub Inc. 的官方解决方案。提供该项目是为了方便使用 GitHub 网站。