GitHubActionsでghcrにBuild&Push
Githubの提供するghcr.io(GitHub Container Registry )でdocker imageを管理したいなと思ったのでやってみたときのメモ。
ArgoCDをLocalで試してみるにあたっての前段階的にやってみた。
事前準備
- ghcr.io の認証
ログインにgithubの Personal Access Tokenが必要なのでそれも容易しとく。
手順は公式で書かれているものがある。
Tokenのpermissionはドキュメントにあるように、read:packages
write:packages
があればよい。
docker login ghcr.io した後に動作確認を兼ねて docker tag
docker push
で Githubの Packages にdocker imageが表示されれば問題なし。
- Dockerfileの準備
適当にbuild対象になるDockerfileを容易しておく。
今回はFlaskのDockerfileを作っていたのでそれを使用。
上記の記事で使ったもの。
Workflow作成
公式ドキュメントにあるサンプルを一部改変したものです。
とりあえず動作確認で動かしたかったので pull requestをトリガーに動かすようにする。
password: ${{ secrets.GHCR_TOKEN }}
は Personal Access Token を指定。
env.github.XXX
は 公式ドキュメントのコンテキストを参照。
name: Publish Docker image on: pull_request: env: REGISTORY: ghcr.io IMAGE_NAME: ${{ github.repository }} jobs: build-and-push-image: name: Push Docker image to Docker Hub runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Check out the repo uses: actions/checkout@v2 - name: Log in to Docker Hub uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: ${{ env.REGISTORY }} username: ${{ github.actor }} password: ${{ secrets.GHCR_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 with: images: ${{ env.REGISTORY }}/${{ env.IMAGE_NAME }} - name: Build and push Docker image uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc with: context: app push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}
これで pull reqestを作成すれば、GitHub Actionsが実行される。