0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHubActionsのworkflow_dispatchを触ってみた(ついでにGithub Container Registryも)

Posted at

はじめに

ようやくGitHub Actionsでworkflow単位の手動実行ができるようになったそうなので、workflow_dispatchを試してみました。
ついでにGitHub Container Registryがベータで出たそうなのでこちらも試してみました。

今回作成したレポジトリはhttps://github.com/yohei-yamazaki/workflow_dispatch_test

GitHub Container Registryの利用準備

GitHub Package RegistryからGitHub Container Registryへの移行より

Add your new container registry authentication personal access token (PAT) as a GitHub ACtions secret. GitHub Container Registry does not support using GITHUB_TOKEN for your PAT so you must use a different custom variable, such as CR_PAT. For more information, see "Creating and storing encrypted secrets."

GitHub Container RegistryではGITHUB_TOKENをサポートしていないのでパーソナルアクセストークンを作成する必要がある。必要な権限はread:packages,write:packages,delete:packagesの3つである。

作成したトークンを対象のリポジトリのSettingsタブのSecretsに登録する。今回はCR_PATとして登録した。

今回のworkflow内容

今回のworkflowは以下で手動実行でGitHub Container Registryにpushするworkflowである。また、workflow内でinputの値を参照できるので、手動実行時にtag名を変更するとImageのtagを変更できる仕様を追加してみた。


name: manual trigger for push to GitHub Container Registry
on:
  workflow_dispatch:
    inputs:
      tag:
        description: Image tag
        default: master

env:
  DOMAIN: ghcr.io

jobs:
  push-dhcr:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Login GitHub Container Registry
        run: docker login ${DOMAIN} -u ${GITHUB_ACTOR} -p ${{ secrets.CR_PAT }}
      - name: Build image
        run: docker build -f Dockerfile -t ${DOMAIN}/${{ github.repository_owner }}/centos:${{ github.event.inputs.tag }} .
      - name: Push image to GitHub Container Registry
        run: docker push ${DOMAIN}/${{ github.repository_owner }}/centos:${{ github.event.inputs.tag }}

workflow_dispatchを使用する

Actionsタブのworkflow_dispatchを使用したworkflowを選択する。今回はmanual trigger for push to GitHub Container Registryを選択し、Run workflowをクリック。

image.png

workflowを実行するブランチとinputsで設定した値を指定できる部分とworkflowを実行するボタンが出てくるので、確認した上でworkflowを実行してみると、画面がリフレッシュされて少し後に手動実行したworkflowの実行途中のresultが表示された。
image.png

GitHub Container Registryにpushされているか確認

Github Container Registryの方を確認してみると、無事pushできていた。

image.png
余談だが、GitHub Container Registryはレポジトリに依存しないので所有者の方のpackagesタブにしか表示されない。

感想

workflow_dispatchに関しては、workflow単位と任意のブランチ、変数を指定できて欲しかった機能だったので良さそうだが、inputのdefaultにgithub.shaのように変数を使用したかったがそのまま埋め込まれてしまったので、回りくどい方法をする必要がありそうだなと感じた。

GitHub Container Registryに関しては、GitHub Package RegistryからDocker部分を切り出したという感じだと思うのでそんなないが、トークンに関してGITHUB_TOKENが万能?だったのはあるが、パーソナルアクセストークンはチームでの運用は大変そうなのでGITHUB_TOKEN使用したいと思った。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?