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 Inc. 沒有任何關聯,也不是 GitHub Inc. 的官方解決方案。