リリース時に手動でコンテナのビルドをするのが面倒なので、GitHub Actionsを使ってdocker buildを行うこととなった。
意外と簡単にできたので、もっと早くやればよかった。
今後はCI/CDをやりたいのでpytestの自動化とか、ドキュメントの自動生成も組み込んで行きたいと思うが、
今回は最初なので、ブランチかコミットにtagをつけるとコンテナがビルドされるように設定を行った。
ファイルを作成する
GitHub Actionsを使うには.github\workflows\main.yml のファイルを作成する必要がある。
main.ymlのファイル名については*.yaml or *.ymlであれば何でも良いので、どのような処理を行うものかわかるようなファイル名を設定すること。
今回はテストなのでmain.ymlとした。
.github\workflows\main.yml
- 以下の所はdocker hubにアップロードする際に利用されるコンテナの名称になるので変更が必要。
- tags: ${{ secrets.DOCKER_USERNAME }}/コンテナの名前:${{ steps.prep.outputs.tag }}
- contextの所が.となっているのでリポジトリの/にDockerfileがあることが前提となっています。
name: Build and Deploy of Docker container on: push: tags: - '*' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to Docker Hub uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Prepare tag name id: prep run: echo ::set-output name=tag::${GITHUB_REF/refs\/tags\//} - name: Build and push uses: docker/build-push-action@v2 with: context: . push: true tags: ${{ secrets.DOCKER_USERNAME }}/コンテナの名前:${{ steps.prep.outputs.tag }}
secretsの設定を行う
secretsの設定を行うことによりmain.ymlで利用できる環境変数を設定する。 今回だとDOCKER_USERNAME, DOCKER_PASSWORDを設定する。
DOCKER_USERNAMEにはdocker hubにログインするときに利用するユーザー名 DOCKER_PASSWORDにdocker hubにログインするときに利用するパスワード
タグを付ける
git tag -a release-20240509-001 master -m "2024-05-09 release" git push origin release-20240509-001
docker hubを確認
問題なく動作している。