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)
求むまともな方法
ホンマにこんな方法しか無いのか極めて怪しいですが、時間がないのでグロい方法で対応してしまいました・・・・ まともな情報を探しています…
この記事をシェア