Git
Workflow
actions

Github Actionsが使えるようになったので使ってみる


本記事

本記事では、少し前にアナウンスされたGithub ActionsというCIツールのようなものを実際に触ってみて、現時点での使い勝手をまとめてみようと思います。

実際に使えるようになると以下のようなタブが追加されています。

image.png

まだベータ版ですが使うには申し込む必要があるので、このリンクから申し込んでください。


初めて使ってみる


ActionページにいってWorkflowを作ってみる

Actionページに行くと以下のようなページでWorkflowを作り始められます。

image.png

"Create a new workflow"を押して開始してみます。


Visual Editor


基本的なこと

以下のように設定できます。

image.png

いくつものWorkflowを定義できるようです。

image.png

一つ目のActionのEditをおしてみます。

image.png

これはトリガーです。


どのようなことが起きればこのWorkflowが走るか


を定義するものです。

Runで定義するトリガーは以下のものがあります。

項目
トリガー条件

check_run
Checkが走ってcreated, rerequested, requested_actionになったら

check_suite
Check runの集合で、ステータスがcompleted, requested, rerequestedになったら

commit_comment
コミットコメントがcreatedになったらトリガー

create
ブランチやタグが作られたら

delete
ブランチやタグが作られたら

deployment
APIを通してデプロイメントが作られたら

deployment_status
デプロイメントステータスが更新されたら

fork
リポジトリがフォークされたら

gollum
Wikiページがアップデートされたら

issue_comment
Issueにコメントがcreatedediteddeletedされたら

issues
Issueがassigned, unassigned, labeled, unlabeled, opened, edited, milestoned, demilestoned, closed, reopenedされたら

label
ラベルがcreated, edited, deletedしたら

member
メンバーが招待、削除に追加されたり権限が変わったら

milestone
マイルストーンがcreated, closed, opened, editeddeleted`されたら

page_build
ページサイトがbuiltされたり失敗されたら

project_card
Project Cardがcreatededited, moved, Issueにconverteddeletedされたら

project_column
Project Columnがcreated, edited, moveddeletedされたら

project
Projectがcreated, edited, closedreopenend, deletedされたら

public
リポジトリがPrivateからPublicに変わったら

pull_request_review_comment
Pull requestにreviewコメントがついたら

pull_request_review
Pull requestがreviewされたら

pull_request
Pull requestがassigned, openedなどしたら(多すぎて省略します)

push
tagやコミットがpushされたら

repository_vulnerability_alert
vulnerability alertが通知されたら

release
リリースが作成されたら

repository_dispatch
他のユーザーがアプリのイベントをトリガーしたら

status
リポジトリステータスがAPIによって変更されたら

watch
ユーザーがリポジトリがStarされたら

非常にトリガーが豊富ですね。

詳細はこちらをご覧ください。

https://developer.github.com/actions/creating-workflows/workflow-configuration-options/#events-supported-in-workflow-files:embed:cite


トリガーを組み立てる

次はトリガーをもらって、何をするかを定義します。

以下のようにトリガー枠の青い点を点線にドラッグしてつなぎます。

hoge.gif

ビルドインですでにいくつかActionがあります。

また、GCPを使う人は、かなり簡単にアクションを作ることができるとおもいます。

image.png

適当に自前のRun Actionを定義します。

image.png


環境変数を定義

また、環境変数を定義することができます。

image.png

あとで解説しますが、再利用可能なActionsにすることができます。


Secretも定義

また、Secretも定義できます。

image.png

Plain Textで保存するのはセキュリティ的にあれということがあればGoogle KMSなどを合わせて使うと安全でしょう。参考リンク


Workflowを保存する

あとで解説しますが./.github/以下にワークフローの設定ファイルが保存されます。

右上でコミットして保存します。

image.png


ファイルで設定もできる

先ほどWorkflowを保存しましたが、同様に./.github/hogehoge.workflow.workflowがつく名前で定義することができます。

これによって宣言的にWorkflowを定義することができます。

このような感じで保存されています。

image.png

そして、プレビューでVisual Modeでみることができます。

image.png

実際は以下のようなファイルになっています。

workflow "New workflow" {

on = "push"
resolves = ["Hello World"]
}

action "Hello World" {
uses = "./say_hello.sh"
env = {
MY_NAME = "KeisukeYamashita"
}
args = "\"Hello world, I'm $MY_NAME!\""
}



  • on: トリガーのイベント


  • resolves: Actionを解決する


ログも見れる

Check APIのようにログをみることができます。

image.png


気になる点


Workflowの差分はどのように見れるのか?

試しにActionの名前をHello WorldからEnd Worldに変更し、プルリクを投げてみます。

image.png

しかもresolve(=トリガーとAction)を繋げ忘れたことをCheckしてくれました。

image.png

差分自体はPlain Textでみることになりそうです


Visual Editorで複雑なWorkflowは定義できるの

現時点ではできないようです。

新しいActionはPlain Textでしか作成できないみたいです。

image.png


まとめ

まだまだドキュメントも豊富ではありませんが、Githubにソースコードを置かないチームはなかなかないので、Githubだけで完結してくれると非常に嬉しいです。

特にCIは種類も豊富で、できることできないことを把握して技術選定するのが面倒なので、GithubActionsがデフォルトスタンダードになってくれるといいなと思います。


参考文献


公式ドキュメント

[https://developer.github.com/actions/:embed:cite]