Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@y-_-y

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

はじめに

ようやく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
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
y-_-y
フロントエンドよりのエンジニア。 React, React Native, TypeScript, GraphQL
timedia
創業20周年の技術者集団。 確かな技術力・豊富な実績をもとに、多種多様な案件を手掛けるシステム会社のパイオニア

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?