GitHub Container Registry が GA したみたいなので使ってみます. ついでなので Flutter web で. 普通に docker push するのは普通過ぎるので actions でやります. サンプルレポジトリは下記です.

GitHub - yuzumone/flutter-web-docker-sample

Contribute to yuzumone/flutter-web-docker-sample development by creating an account on GitHub.

github.com favicon image github.com

Dockerfile

サンプルなので flutter create でやってます. 実際の場合は git clone するか COPY かどっちかですかね.

FROM cirrusci/flutter:beta AS buildRUN flutter config --enable-webRUN flutter create sample
WORKDIR /home/cirrus/sample
RUN flutter build webFROM nginx
COPY --from=build /home/cirrus/sample/build/web /usr/share/nginx/html

workflow.yml

run してるだけだし shell と変わらないけど. tag どうするか悩んで github.sha 使ったんですけどベストプラクティスがあれば知りたい.

jobs:
  build:
    name: Build image
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@master
      - name: Login
        run: docker login docker.pkg.github.com -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
      - name: Build
        run: docker build -t docker.pkg.github.com/${{ github.repository }}/${IMAGE_NAME}:${{ github.sha }} --file Dockerfile .
      - name: Push
        run: docker push docker.pkg.github.com/${{ github.repository }}/${IMAGE_NAME}:${{ github.sha }}

あと IMAGE_NAME も今回は env で指定したけど今回みたいに 1 個しか作らないなら下の感じでやるのが良さそう.

echo ${{ github.repository }} | awk -F '/' '{print $2}'