はじめに
この記事ではGitHub Actioins(以下Actions)の仕組みやについて書いていき、簡単なハンズオンも実施してみます。
普段何気なく使っていたActionsの裏側で何が行われているかや、概念的な部分を特に詳しく書いていこうと思います。
仕組み
Actionsの実行環境としては主に、以下の2パターンがあります。
- GitHubが用意してくれる仮想マシン上で行う"GitHub仮想ホストマシン型"
- 自分で実行マシンを用意する"セルフホスト型"
それぞれメリット、デメリットありますが、”GitHub仮想ホストマシン型”は自分で実行環境を用意する必要がない分すぐに始められ、actions実行用のサーバー運用も必要ありません。
その分Actionsの実行時間に制限等はあります。
”セルフホスト型”は自分でActionsの実行環境を用意する必要がありますが、Actionsの時間制限がなかったり、クレデンシャル等の機密情報を自社で管理できるといったメリットがあります。
今回は"GitHub仮想ホストマシン型"の仕組みで解説していきます。
そして、Actionsの中身を見ていくといくつかの要素があります。
- on
- Actionsが実行されるトリガーを指定
- job
- actionsの一番大きな単位。job単位ごとに別々の仮想マシンのホスト上で実行
- runs-on
- 仮想マシン上で動くOSを指定
- steps
- jobの中で順番に実行するコマンドを含める
- run
- Steps内で順番に実行するコマンドを記載する
以下に図解します。
注意点として、Stepsは上から順番に実行されますが、jobは並列で処理されます。
またjopbはそれぞれ別の仮想マシンホスト上で実行されるので、"run"で設定したコマンドを実行するのにパッケージのインストール等が必要な場合には、job毎に実施する必要があります。
上記画像のActionsが実行される順序は以下のようになります。
- onで指定したトリガーを条件にActionsが起動
- job1,job2が同時に実行
- job1,job2それぞれで、runs-onで指定したOSでStep内のコマンドが順番に実行される
イメージとしては、Actions実行の度に環境構築からコマンドの実施までその都度実施しているイメージです。
Actionsを使用してAWS等のクラウドサービスにアクセスすることも可能で、その際に使用するクレデンシャルの情報もGitHub Secret等に設定しておき参照することも可能です。
制限時間があるとはいえ、無償で使わせてくれるGitHubさん凄すぎます。。
ハンズオン
実際に簡単なActionsを動かしてみます!
name: GitHub Actioins Test
on: [push]
jobs:
job_1:
name: greetings
runs-on: ubuntu-latest
steps:
- name: "気持ちのいい挨拶"
run: echo "hello world"
- name: "気持ちのいい別れ"
run: echo "good bye"
jopb_2:
name: like foods
runs-on: ubuntu-latest
steps:
- name: "食べ物1"
run: echo "sushi"
- name: "食べ物2"
run: echo "egg"
上記では2つのjobの中で、挨拶と好きな食べ物を出力する、Actionsを記載していて,pushをトリガーに起動します。
実際にpushしてみます。
"setups"内のrunが2つ実行されているのが確認できます。
また、"setup"の部分でimageを指定しているので、内部的にはDockerを使用してActionsを動かしていると思われます。
終わりに
今回はGitHubActionsの仕組みについて記載しました。
次回はもう少し業務で使用しているようなActionsを作ってみて、どんなメリットがあるのかやっていこうと思います!
誰かの参考になれば幸いです。