rails8.0.2とkamalとGitHub Actionsを使ってCDしました。
ローカルからの手動デプロイについては下記を参照して下さい。
[rails8 \+ Kamalでデプロイする \| FJORD BOOT CAMP(フィヨルドブートキャンプ)](https://bootcamp.fjord.jp/articles/170)
## 準備
該当のGitHubのプロジェクトのsecretsに`KAMAL_REGISTRY_PASSWORD`(Docker Hubのパスワード)と`RAILS_MASTER_KEY`と`SSH_PRIVATE_KEY`を設定して下さい。
`SSH_PRIVATE_KEY`はこれ用にパスフレーズの無いキーを作っておくことをお勧めします。
下記でパスフレーズのないキーペアを作ってroot@sakura.fjord.jpに公開鍵を登録しています。
```sh
$ ssh-keygen -t rsa -b 4096 -N "" -f id_rsa
$ ssh-copy-id -i id_rsa.pub root@sakura.fjord.jp
```
## 設定
あとは`.github/workflows/deploy.yml`に下記を作ってpushするだけです。
```yaml
# .github/workflows/deploy.yml:
name: Deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4.3'
bundler-cache: true
- name: Setup SSH
uses: webfactory/ssh-agent@v0.8.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Create secrets file
run: |
echo "KAMAL_REGISTRY_PASSWORD=${{ secrets.KAMAL_REGISTRY_PASSWORD }}" > .kamal/secrets
echo "RAILS_MASTER_KEY=${{ secrets.RAILS_MASTER_KEY }}" >> .kamal/secrets
- name: Deploy with Kamal
run: bin/kamal deploy
```
ローカルからのデプロイと違うところは、secretsファイルを作っているところです。
ブログ