Sunforger

Sunforger

用 github action 从仓库A向仓库B提交代码

GitHub Actions は GitHub が提供する継続的インテグレーションサービスです。チュートリアルは GitHub Actions 入門チュートリアル または 公式ドキュメント を参照してください。

私たちは、リポジトリ A でワークフローをトリガーし、リポジトリ A のすべてまたは一部のコードを別のリポジトリ B にコミット(デプロイ)したいと考えるかもしれません。この場合、状況に応じて考慮する必要があります。

リポジトリ A#

リポジトリ A が公開か非公開かにかかわらず、全体のワークフローには影響しません。ワークフローを作成する際、GitHub は自動的に秘密鍵を作成し、リポジトリへのアクセスをサポートします。秘密鍵は ${{ secrets.GITHUB_TOKEN }} を介してコンテキストから取得されます()。秘密鍵の権限は必要に応じて調整できます。

リポジトリ B#

公開#

個人ブログプロジェクトでは、ブログページを GitHub Pages にデプロイする必要があるかもしれません。この場合、私的なリポジトリ A でブログのソースコードを管理し、A リポジトリでワークフローを定義してソースコードをコンパイルおよびデプロイできます。このとき、リポジトリ B は公開リポジトリです。

# to do

このタイプは、以下の private セクションで紹介する方法にも適用されます。

非公開#

時には、非公開のリポジトリ B にコードをコミットする必要があるかもしれません。

この場合、デプロイキーを導入し、SSH プロトコルを介してコミットする必要があります。

まず、SSH キーを生成する必要があります。例えば:

ssh-keygen -t ed25519

リポジトリ A > 設定 > 秘密 > 新しいリポジトリの秘密 に公開鍵を設定します。

リポジトリ B > 設定 > デプロイキー > デプロイキーを追加 に秘密鍵を設定します。

次に、リポジトリ A で GitHub Actions のワークフローを次のように構築します。

name: test

on:
  push:
    branches:
      - 'main'

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
    - name: コードをチェックアウト
      uses: actions/checkout@v4
      with:
        token: ${{ secrets.GITHUB_TOKEN }}

    - name: Git初期化
      run: |
        git config user.name "${{ github.actor }}"
        git config user.email "${{ github.actor_id }}@users.noreply.github.com"
      ### または、コミットユーザーとしてGitHub Actionsボットを使用できます
      # git config --local user.email "action@github.com"
      # git config --local user.name "GitHub Action"

    - name: SSHキーを追加
      uses: webfactory/ssh-agent@v0.5.4
      with:
        ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }}

    - name: リポジトリにプッシュ
      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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。