概要
- 複数のリポジトリでGithub Actions内の処理を共通化をしたい
- 他リポジトリで管理してクローンすればいいんじゃね?
- 一工夫必要なのでその方法です
完成品
name: CloneTest
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Clone another repository
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git clone https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/tkada/UnityEquirectRenderer
この例ではpublicリポジトリですが、アクセス権さえあればprivateリポジトリでもクローンできます
publicリポジトリしかクローン出来ないようです・・・
解説
最初は単純に
git clone https://github.com/tkada/UnityEquirectRenderer.git
とやったのですが、拒否られてしまいました
アクセストークンでクローンできるらしいので
git clone https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/tkada/UnityEquirectRenderer
としてみましたがこれでもダメでした。
実は、GITHUB_TOKEN
の環境変数を使う際はその前に設定をしておく必要があります。
GITHUB_TOKENシークレット
GITHUB_TOKENシークレットは、ワークフロー を含むリポジトリにスコープされたGitHub Appインストールトークンです GitHubは、デフォルトでGITHUB_TOKENシークレットを自動的に作成しますが、アクションでそれを使用するには、ワークフローファイルに追加する必要があります。 GITHUB_TOKENシークレットを使用すると、認証されたGitHub APIコールを、アクションに代わって実行することができます。
ワークフローファイルで、GITHUB_TOKENシークレットにアクセスする必要があるアクションごとに環境変数を作成してください。
https://help.github.com/ja/articles/virtual-environments-for-github-actions#environment-variables
GITHUB_TOKEN
の環境変数を使う前に
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
という記述が必要となります。