新しいGitHub ActionsとGitHub Package RegistryでCI/CD(サンプルあり)

ありがたいことにGitHub Actions(beta)GitHub Package Registry(beta)両方が使えるようになったので試してみました。

About

絶賛 limited public beta な GitHub Actions ですが既に 2 世代存在します。

  • /.github/*.workflow を HCL で書くもの
    • 忘れましょう
  • /.github/workflows/*.yml を書くもの
    • この記事ではこちらのみ扱います
    • CI/CD できる!
    • Azure Pipelines動いていてUbuntu, macOS, Windows で並列実行できる!

ですので、もしこの画像のページにたどりついてしまったらハズレです。
https://help.github.com/en/articles/about-github-actions に行きましょう。

また GitHub Package Registry の概要はDocker image をローカルから push する記事もご参照ください。

Examples

サンプルはこのリポジトリにあります。

201908.github-actions-cicd-examples

GitHub Actions の実行結果は GitHub にログインしていればActions タブから見れます。
未ログインだと public repository でも今のところ 404 になります。

各 workflow の yaml と内容はざっと以下です。

Status badge

同僚に教えていただいたのですが

https://github.com/${NAMESPACE}/${REPOSITORY}/workflows/${WORKFLOW_NAME}/badge.svg

でステータスバッヂが取れます。

注意点としては ${WORKFLOW_NAME} は workflow ファイル名ではなく name で指定 するようです。

したがって /.github/workflows/basic-01-environment.yml

name: "Basic 01: Environment"

と書いた場合、badge を取得するためには basic-01-environment ではなく Basic%2001%3A%20Environment と指定する必要があります。

今回の例であれば https://github.com/mazgi/201908.github-actions-cicd-examples/workflows/Basic%2001%3A%20Environment/badge.svg みたいな感じですね。
…workflow 名をもう少しシンプルにすればよかった。

That’s all

私は Context で取れるものを調べたりちょっとした書き方でハマってしまって時間を費やしたので、この記事がどなたかの参考になれば幸いです。

また github.com/ruby/ruby の workflow はとても参考になりました。
ありがとうございます 🙏

GitHub Actions は特に on で思った通りに発火しないとか [skip ci] 的なことできなさそうとか beta なこともあり色々と試行錯誤していますが、総じてとても便利な機能だと感じたので引き続きじゃんじゃん使わせていただきます 💪