Github Actions でclone がしたい
2022年 09月 27日 火曜日
GitHub Actions でclone がしたい
uses: actions/checkout@v3
使ってますか?
普通はこれを使います
checkoutの挙動
調べたわけではないので、予想ですが、API経由で、tar をダウンロードしてきて
/_/orgname/reponame
に ソースを配置するコマンドです
clone したい
Rails でよく使われるデプロイツールの Capistrano は、中で勝手にgit のコミットハッシュを参照するので、cap production deploy
を実行するには git レポジトリ上である必要がありますが、
checkout@v3 を使うと、.git
ファイルが除外されてしまいます.
解決策
- GitHub DeployKey というところに秘密鍵を配置
- GitHub Secret を使って環境変数に秘密鍵を配置
- こんなかんじで、secret を /root/ssh/id_ed25519 に配置してclone
name: Deploy to staging
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
container:
image: ubuntu:18.04
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
steps:
- name: Setup ssh key
run: |
set -xe
mkdir -p /root/.ssh
chmod 700 /root/.ssh
echo "$SSH_PRIVATE_KEY" | tr -d '\r' > /root/.ssh/id_ed25519
chmod 600 /root/.ssh/id_ed25519
- name: Clone
run: |
set -xe
ssh-keyscan GitHub.com >> /root/.ssh/known_hosts
git clone [email protected]:orgname/reponame.git .
git config --global --add safe.directory $(pwd)
求むまともな方法
ホンマにこんな方法しか無いのか極めて怪しいですが、時間がないのでグロい方法で対応してしまいました・・・・ まともな情報を探しています…
この記事をシェア