最近inneiの記事を読んで、リポジトリ間でのプロジェクトの自動ビルドとサーバーへのデプロイは私にとって非常に刺激的でした。
私は vercel を使用して innei の Shiro を構築していますが、クローズドソースバージョンがあるため、リポジトリをフォークすることができず、コミットを簡単に同期することができません。ローカルで fetch してから push するしかありませんでした。以前は GitHub のアクションを使用して自動化しようと考えましたが、常に失敗してしまいました。
その後、手動で同期しましたが、記事を読んだ後、GPT に尋ねて初めて理解しました。
プロセス#
- ソースコードリポジトリの変更をチェックする
- 定期的に実行する
- 変更がある場合、自動的にリベースとプッシュを行う
参考設定(GPT による)#
name: Sync with upstream repo
on:
schedule:
- cron: '0 */6 * * *' # 6 hours
workflow_dispatch:
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
repository: 'Sync-Repo'
token: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
fetch-depth: 0
- name: Sync with upstream
run: |
git config user.name 'Username'
git config user.email 'Useremail'
git remote add upstream 'https://github.com/username/source-repo'
git fetch upstream
git checkout main
git rebase upstream/main
git push origin main -f
注意:このリポジトリには、PERSONAL_ACCESS_TOKENという名前の Secrets を追加する必要があります。
アクセス権限トークン#
プライベートリポジトリへのアクセス権限を持つトークンを取得するにはどうすればよいですか?
まず、Setting ->> Developer setting ->> Personal access tokens (classic) ->> Generate new token (classic) に移動します。
repoを必ず選択し、workflow は確認できません。
その後、同期したいリポジトリに移動します。
追加してください。
この記事はMix Spaceからの同期更新です。
元のリンクはhttps://www.ssstttar.com/posts/programming/auto-sync-repoです。