Sunforger

Sunforger

用 github action 從倉庫A向倉庫B提交代碼

GitHub Actions 是 GitHub 的推出的持續集成服務。教程可以參看 GitHub Actions 入門教程官方文檔

我們或許會希望在倉庫 A 上觸發 workflow 將倉庫 A 上的全部或部分代碼,提交(部署)到另一個倉庫 B 上,此時需要分情況考慮

倉庫 A#

不論倉庫 A 公有或私有,對整個 workflow 沒有影響。在創建 workflow 時,github 會自動創建秘鑰,以支持倉庫訪問。秘鑰通過 ${{ secrets.GITHUB_TOKEN }} 從上下文中獲取(示例)。秘鑰權限可以根據需求調整。

倉庫 B#

public#

個人博客項目可能會需要將博客頁面部署到 github page 上。此時我們可以在私有的倉庫 A 上維護博客源代碼,然後在 A 倉庫上定義工作流,對源代碼進行編譯和部署。這時候倉庫 B 是一個公有倉庫

# to do

該種類型也適用下面的 private 小節中介紹方法

private#

有時也可能會向私有的倉庫 B 提交代碼

這就需要引入 deploy key 再通過 ssh 協議提交

此時需要首先生成 ssh key,例如

ssh-keygen -t ed25519

倉庫 A > Settings > Secrets > New Repository Secret 配置公鑰

倉庫 B > Settings > Deploy Keys > Add Deploy Key 配置私鑰

然後在倉庫 A 中構造 github action 的 workflow 如下

name: test

on:
  push:
    branches:
      - 'main'

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        token: ${{ secrets.GITHUB_TOKEN }}

    - name: Git init
      run: |
        git config user.name "${{ github.actor }}"
        git config user.email "${{ github.actor_id }}@users.noreply.github.com"
      ### or you can use github action bot as commit user
      # git config --local user.email "action@github.com"
      # git config --local user.name "GitHub Action

    - name: Add SSH Key
      uses: webfactory/ssh-agent@v0.5.4
      with:
        ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }}

    - name: Push to repo
      run: |
        git remote add target "git@github.com:${{ your repo path }}.git"
        git checkout --orphan temp
        git add --all
        git commit --allow-empty -m "your commit message"
        git push target temp:main --force

提交 github 測試即可


參考: https://stackoverflow.com/questions/68590575/github-actions-remote-repo-issues

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。