GitHub Actions内で別レポジトリをcloneする方法をまとめます。
はじめに
依存関係を持つレポジトリが別にある場合、GitHub Actions内でその別レポジトリもcloneして使いたくなることがあります。
今回は、そのようなGitHub Actions内で別レポジトリをcloneする方法をまとめます。
GitHub Actionsで別レポジトリをcloneする
やり方
actions/checkoutのrepository
オプションを指定することで、別レポジトリもcloneすることが出来ます:
- name: Checkout uses: actions/checkout@v3 with: path: main - name: Checkout tools repo uses: actions/checkout@v3 with: repository: my-org/my-tools path: my-tools
↑のようにすることで、メインのレポジトリをmain
配下に、別のレポジトリmy-org/my-tools
をmy-tool
配下にcloneできます。
やってみた
では、私のレポジトリを使って実際にやってみます。
bioerrorlog/actions-testsレポジトリのActionsで、別のレポジトリrust-lang/rustをcloneしてみます:
name: Multiple repos clone tests on: push: branches: - main jobs: multi-repos: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 with: path: main - name: Checkout another repo uses: actions/checkout@v3 with: repository: rust-lang/rust path: another # 以降確認用 - run: | pwd ls -la - name: Check the main repo working-directory: main run: | pwd ls -la - name: Check the another repo working-directory: another run: | pwd ls -la
確認用のaction実行結果はこちら:
# 作業ディレクトリで pwd / ls -la # -> mainディレクトリとanotherディレクトリが並列で作成されている /home/runner/work/actions-tests/actions-tests total 16 drwxr-xr-x 4 runner docker 4096 Aug 7 07:17 . drwxr-xr-x 3 runner docker 4096 Aug 7 07:17 .. drwxr-xr-x 7 runner docker 4096 Aug 7 07:17 another drwxr-xr-x 4 runner docker 4096 Aug 7 07:17 main # main ディレクトリでpwd / ls -la # -> mainのレポジトリ: bioerrorlog/actions-tests がcloneされている /home/runner/work/actions-tests/actions-tests/main total 20 drwxr-xr-x 4 runner docker 4096 Aug 7 07:17 . drwxr-xr-x 4 runner docker 4096 Aug 7 07:17 .. drwxr-xr-x 8 runner docker 4096 Aug 7 07:17 .git drwxr-xr-x 3 runner docker 4096 Aug 7 07:17 .github -rw-r--r-- 1 runner docker 60 Aug 7 07:17 README.md # another ディレクトリでpwd / ls -la # -> 指定した別のレポジトリ: rust-lang/rust がcloneされている /home/runner/work/actions-tests/actions-tests/another total 896 drwxr-xr-x 7 runner docker 4096 Aug 7 07:17 . drwxr-xr-x 4 runner docker 4096 Aug 7 07:17 .. -rw-r--r-- 1 runner docker 417 Aug 7 07:17 .editorconfig drwxr-xr-x 8 runner docker 4096 Aug 7 07:17 .git -rw-r--r-- 1 runner docker 187 Aug 7 07:17 .git-blame-ignore-revs -rw-r--r-- 1 runner docker 464 Aug 7 07:17 .gitattributes drwxr-xr-x 4 runner docker 4096 Aug 7 07:17 .github -rw-r--r-- 1 runner docker 1251 Aug 7 07:17 .gitignore -rw-r--r-- 1 runner docker 1556 Aug 7 07:17 .gitmodules -rw-r--r-- 1 runner docker 28418 Aug 7 07:17 .mailmap -rw-r--r-- 1 runner docker 131 Aug 7 07:17 CODE_OF_CONDUCT.md -rw-r--r-- 1 runner docker 2415 Aug 7 07:17 CONTRIBUTING.md -rw-r--r-- 1 runner docker 9322 Aug 7 07:17 COPYRIGHT -rw-r--r-- 1 runner docker 128743 Aug 7 07:17 Cargo.lock -rw-r--r-- 1 runner docker 5059 Aug 7 07:17 Cargo.toml -rw-r--r-- 1 runner docker 9723 Aug 7 07:17 LICENSE-APACHE -rw-r--r-- 1 runner docker 1023 Aug 7 07:17 LICENSE-MIT -rw-r--r-- 1 runner docker 10308 Aug 7 07:17 README.md -rw-r--r-- 1 runner docker 593768 Aug 7 07:17 RELEASES.md drwxr-xr-x 65 runner docker 4096 Aug 7 07:17 compiler -rw-r--r-- 1 runner docker 32437 Aug 7 07:17 config.toml.example -rwxr-xr-x 1 runner docker 292 Aug 7 07:17 configure drwxr-xr-x 18 runner docker 4096 Aug 7 07:17 library -rw-r--r-- 1 runner docker 1307 Aug 7 07:17 rustfmt.toml drwxr-xr-x 11 runner docker 4096 Aug 7 07:17 src -rw-r--r-- 1 runner docker 9520 Aug 7 07:17 triagebot.toml -rwxr-xr-x 1 runner docker 1531 Aug 7 07:17 x.py
このように、指定したディレクトリに任意のレポジトリをclone出来ることがわかりました。
おわりに
以上、GitHub Actionsで別レポジトリをcloneする方法をまとめました。
GitHub Actionsをフル活用して、良いCICDライフを送っていきたいものです。
[関連記事]
参考
GitHub - actions/checkout: Action for checking out a repo
possible to checkout or clone another repo? · Issue #24 · actions/checkout · GitHub