GitHub ActionsでPivotal Web Serviceに自動デプロイする
layers Dev/CI/GitHubActions
label
Pivotal Application Service
label
Cloud Foundry
label
GitHub Actions
date_range
更新日時 : 2022/05/29 15:51 date_range
投稿日時 : 2020/05/31 08:25前にConcourse CIで構築したCIパイプラインをGitHub Actionsで構築し直す。
移行する理由は、AWSで構築したConcourse CIの費用削減というものだ。月額600円程度だが、かなり安めのCPU設定のため、実行しすぎると月末にはCIがまともに動かせない。
それとGitHub Actionsをまだ触ったことがなかったため、どんなものか触ってみたかった。今の会社だとJenkinsを利用しているチームが多く、そっちも勉強したかったが、GitHub Actionsはパブリックリポジトリだと無料のため、結局費用面を重視した。
実施したこと
master
ブランチにpushがあったとき、テストを実行するPivotal Web Service
に最新のソースコードをデプロイする
設定
リポジトリのタブにActions
からJava with Maven
のテンプレートをまず引っ張ってきて、それを思考錯誤した。Concourse CIと同様にymlファイルで設定するため、割とすんなり理解できた。
Maven
でのビルド部分はmaking
さんのリポジトリを参考にさせていただいた。
Pivotal Cloud Foundryへのデプロイはマーケットプレイスのものを利用した。似たパイプラインは結局既存のものを参考にするので、CIを共有できるのは便利だと思う。ただ環境変数やコマンドの設定の仕方を理解するのに時間がかかった。
secure information
パスワードなどの認証情報はどうするの?と思ったので、調べたところリポジトリの設定に環境変数が設定ができるようだ。
ymlファイル内で${{ secrets.CF_USERNAME }}
で参照できる。
最終的な設定ファイル
https://github.com/vagivagi/blog-api/blob/master/.github/workflows/ci.yml
name: Deploy to Pivotal Web Services
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: '1.8'
- uses: actions/cache@v1
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: mvn test
run: |
set -e
./mvnw -V test
- name: mvn package
run: |
set -e
./mvnw -V package -DskipTests=true
- name: Pivotal Cloud Foundry (PCF) CLI
uses: d3sandoval/cloud-foundry-action@1.1.1
with:
args: 'push blog-api'
env:
CF_USERNAME: ${{ secrets.CF_USERNAME }}
CF_PASSWORD: ${{ secrets.CF_PASSWORD }}
CF_TARGET_ORG: ${{ secrets.CF_TARGET_ORG }}
CF_TARGET_SPACE: ${{ secrets.CF_TARGET_SPACE }}
BLOG_GITHUB_ACCESS_TOKEN: ${{ secrets.BLOG_GITHUB_ACCESS_TOKEN }}
BLOG_GITHUB_WEBHOOK_SECRET: ${{ secrets.BLOG_GITHUB_WEBHOOK_SECRET}}
感想
- CIをマーケットプレイスから利用できるのは便利
- マーケットプレイスのREADMEを読んでも記法が途中で変わった?せいか引数や環境変数の設定は少し調べる必要があった。
- 無料助かる
まだできていないこと
- 他のクラウドサービスへのデプロイ
- 次は
blog-ui
でHerokuを試したい
- 次は
- プルリクエスト作成時のテスト実行とエラーチェック
- SlackやLINEなどへの通知