山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

GitHub ActionsでGitHub Package RegistryにDocker Imageをpushする

前の記事では手動でGithub Package RegistryにDocker Imageをpushしましたが、実際にはそんなの手でやってられません。こういう事はCIにやらせましょう。

GitHub Actions及びGitHub Package Registryは正式公開されたばかりだからか、情報が少なかったのでメモ。
特に docker login については個人ユーザに紐づく方法しかみつからないので、結構ハマる方がいるはずです。

結論

以下のようにログインユーザ及びパスワード(トークン)を指定して、docker login すればOK

    - name: Push to Github Package Registry
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        docker login docker.pkg.github.com -u ${GITHUB_ACTOR} -p ${GITHUB_TOKEN}
        docker tag original docker.pkg.github.com/yamap55/python_dev_env/original:latest
        docker push docker.pkg.github.com/yamap55/python_dev_env/original:latest

設定ファイル全て

name: Build Dockerfile and Push Github Package Registry
on:
  push:
    branches:
      - develop

jobs:
  build-and-push:
    runs-on: ubuntu-18.04
    timeout-minutes: 300
    steps:
    - uses: actions/checkout@v1

    - name: Build Image
      run: |
        cd docker/ && docker build -f Dockerfile_original.dockerfile -t original .

    - name: Push to Github Package Registry
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        docker login docker.pkg.github.com -u ${GITHUB_ACTOR} -p ${GITHUB_TOKEN}
        docker tag original docker.pkg.github.com/yamap55/python_dev_env/original:latest
        docker push docker.pkg.github.com/yamap55/python_dev_env/original:latest

他のファイル構成などは以下を参照
https://github.com/yamap55/python_dev_env

参考