GitHubActions의 workflow_dispatch를 만져 보았습니다 (이어서 Github Container Registry도)

소개



마침내 GitHub Actions에서 workflow 단위의 수동 실행이 가능하게 되었다 그래서 workflow_dispatch를 사용해 보았습니다.
김에 GitHub Container Registry가 베타에서 나왔습니다. 그렇기 때문에 이쪽도 시험해 보았습니다.

이번에 작성한 리포지토리는 htps : // 기주 b. 코 m / 요헤이 - 야마자키 / rkf

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, se storing encrypted secrets."

GitHub Container Registry는 GITHUB_TOKEN를 지원하지 않으므로 개인 액세스 토큰을 만들어야합니다. 필요한 권한은 read:packages , write:packages , delete:packages의 세 가지입니다.

작성한 토큰을 대상 리포지토리의 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를 클릭하십시오.



workflow를 실행하는 브랜치와 inputs로 설정한 값을 지정할 수 있는 부분과 workflow를 실행하는 버튼이 나오므로 확인한 후 workflow를 실행해 보면 화면이 새로 고쳐지고 조금 후에 수동으로 실행한 workflow 실행 도중 결과가 표시되었습니다.


GitHub Container Registry에 push되어 있는지 확인



Github Container Registry 쪽을 확인해 보면, 무사 push 되어 있었다.


여담이지만 GitHub Container Registry는 리포지토리에 의존하지 않기 때문에 소유자의 패키지 탭에만 표시됩니다.

감상



workflow_dispatch에 관해서는, workflow 단위와 임의의 브랜치, 변수를 지정할 수 싶었던 기능이었으므로 좋을 것 같지만, input의 default에 github.sha , 돌아다니는 방법을 할 필요가 있을 것 같다고 느꼈다.

GitHub Container Registry에 관해서는, GitHub Package Registry에서 Docker 부분을 잘라냈다는 느낌이라고 생각하기 때문에 그런 없지만, 토큰에 대해서 GITHUB_TOKEN 가 만능? 이었던 것은 있지만, 퍼스널 액세스 토큰은 팀에서의 운용은 힘들 것 같기 때문에 GITHUB_TOKEN 사용하고 싶었다.

참고문헌


  • htps : // 기주 b. bぉg/짱게ぉg/2020ー07ー06ーぎぉbーあぁぅぅㅅㅅㅎㅎㅎ
  • htps : // 기주 b. bぉg/2020-09-01-인 t 로즈신 g-기-b-안녕 r-레기 stri/
  • https://docs.github.com/en/packages/getting-started-with-github-container-registry/migrating-to-github-container-registry-for-docker-images#updating-your-github-actions- workflow
  • 좋은 웹페이지 즐겨찾기