【Github】Github Actions ~ 基礎知識編 ~

■ はじめに

GitHub Actions について、調べなければならなくなったのでメモ。

目次

【0】おさらい:CI/CD
【1】GitHub Actions
【2】用語整理
 1)Workflow(ワークフロー)
 2)Action(アクション)
 3)Runner(ランナー)
【3】料金
 1)パブリックリポジトリの場合
 2)プライベートリポジトリの場合

【0】おさらい:CI/CD

1)CI:Continuous Integration(継続的インテグレーション

* 開発環境におけるコード統合(e.g. ビルド, Unit Tests)を
 継続的に実現するための手法

2)CD:Continuous Delivery(継続的デリバリー)

* ビルド, デプロイ, 単体試験, などの「価値を届ける」ことを
 継続的に実現するための手法

cf. Delivery = 配送, 引き渡す
 => ここでは、ユーザーにソフトウェアの「価値を届ける」といった意味

詳細は、以下のサイトを参照。

https://atmarkit.itmedia.co.jp/ait/articles/2107/28/news014.html
https://www.kagoya.jp/howto/it-glossary/develop/cicd/

【1】GitHub Actions

* 予め定義した処理(Workflow)を自動化する Github の CI/CD機能
 => AWS CodeBuild の Github でできる版

https://dk521123.hatenablog.com/entry/2020/01/21/221122

* GitHubの、Pushなどのイベントをトリガーにし、
 予め設定していた対応するアクションを組み合わせて
 ワークフローの自動化が行える仕組み

【2】用語整理

1)Workflow(ワークフロー)

https://docs.github.com/ja/actions/learn-github-actions/understanding-github-actions#workflows

より抜粋
~~~~~~~~~~~~~
ワークフローは、1 つ以上のジョブを実行する構成可能な自動化プロセスです。
~~~~~~~~~~~~~

* 実行する処理を定義したYAML形式のファイル
* リポジトリ内の.github/workflowsディレクトリ内に保存することで実行
 => AWS CodeBuild の buildspec.yml みたいなもの

2)Action(アクション)

https://docs.github.com/ja/actions/learn-github-actions/understanding-github-actions#actions

より抜粋
~~~~~~~~~~~~~
アクション は、GitHub Actions 用のカスタム アプリケーションであり、
複雑で頻繁に繰り返されるタスクを実行します。 
~~~~~~~~~~~~~

* あらかじめ、定義済みの処理セットのこと

3)Runner(ランナー)

https://docs.github.com/ja/actions/learn-github-actions/understanding-github-actions#runners

より抜粋
~~~~~~~~~~~~~~~
ランナーは、ワークフローがトリガーされると実行されるサーバーです。 
~~~~~~~~~~~~~~~

 => 詳細は、以下の公式ドキュメントを参照

Github Actions ~ self-hosted runners ~
https://dk521123.hatenablog.com/entry/2023/12/18/204119

【3】料金

* 公式サイトの料金設定に関する詳細は、以下。

https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions

* 色々なサイトを調べたが、安すぎると評判、、、

1)パブリックリポジトリの場合

* 完全無料

2)プライベートリポジトリの場合

* プラン毎に月当たりの無料枠が設定されていてその範囲内なら無料
* 利用するOSが「Linux(Ubuntu)」「Windows」「Mac」でも料金が異なる
* 不安な場合は、以下の公式サイトで見積もりできるので計算してみてもいいかも。
 (さすが、サービスが細かいところまですごく気が利いている、、、)

https://github.com/pricing/calculator

参考文献

https://qiita.com/bigwheel/items/2ab7deb237122db2fb8d
https://qiita.com/sin9270/items/85e2dab4c0144c79987d

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/12/21/155224
Github Actions ~ ワークフロー制御 ~
https://dk521123.hatenablog.com/entry/2024/01/28/004128
Github Actions ~ if ~
https://dk521123.hatenablog.com/entry/2024/03/11/000000
Github Actions ~ workflow_dispatch / 手動実行 ~
https://dk521123.hatenablog.com/entry/2024/03/12/012953
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
Github Actions ~ pull_request / pull_request_target ~
https://dk521123.hatenablog.com/entry/2024/04/10/152101
Github Actions ~ エラー処理 / continue-on-error ~
https://dk521123.hatenablog.com/entry/2024/01/01/232057
Github Actions ~ GITHUB_ENV ~
https://dk521123.hatenablog.com/entry/2023/12/29/000840
Github Actions ~ GITHUB_OUTPUT ~
https://dk521123.hatenablog.com/entry/2024/01/30/002943
Github Actions ~ GITHUB_TOKEN / permissions ~
https://dk521123.hatenablog.com/entry/2024/04/22/221027
Github Actions ~ プロパティ ~
https://dk521123.hatenablog.com/entry/2023/12/23/231250
Github Actions ~ Annotations / Matcher ~
https://dk521123.hatenablog.com/entry/2024/03/25/182153
Github Actions ~ Artifact ~
https://dk521123.hatenablog.com/entry/2024/02/13/021717
Github Actions ~ timeout-minutes ~
https://dk521123.hatenablog.com/entry/2024/02/09/000129
Github Actions ~ Github Actions環境変数
https://dk521123.hatenablog.com/entry/2024/02/26/194437
Github Actions ~ 外部シェルスクリプト実行 ~
https://dk521123.hatenablog.com/entry/2024/01/19/003044
Github Actions ~ SQL Linter ~
https://dk521123.hatenablog.com/entry/2024/03/04/180308
Github Actions ~ Scala Linter ~
https://dk521123.hatenablog.com/entry/2024/04/02/002828
Github Actions ~ Pythonを使うには ~
https://dk521123.hatenablog.com/entry/2024/02/04/011205
Github Actions ~ Python関連 ~
https://dk521123.hatenablog.com/entry/2022/06/21/143624
Github Actions ~ Slack連携 ~
https://dk521123.hatenablog.com/entry/2024/04/03/003053
Github Actions ~ サンプル集 ~
https://dk521123.hatenablog.com/entry/2023/12/31/231438
Github Actions ~ 設定値を切り替えることを考える ~
https://dk521123.hatenablog.com/entry/2024/02/18/232926
Github Actions ~ Self-hosted runners / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/12/18/204119
Github Actions ~ Self-hosted runners / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2024/02/07/002736
Github Actions ~ セキュリティ/Third-Party Github Action ~
https://dk521123.hatenablog.com/entry/2024/04/05/000136
Github Actions ~ セキュリティ/インジェクション攻撃 ~
https://dk521123.hatenablog.com/entry/2024/04/16/222419
Github ~ Webhook 編 ~
https://dk521123.hatenablog.com/entry/2020/01/25/224402
GitHub CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/02/17/233836
reviewdog ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/04/13/232832
reviewdog ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2024/04/18/161200
CodeBuild ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/01/21/221122
Github Actionsで「Waiting for a runner to pick up this job...」から進まない
https://dk521123.hatenablog.com/entry/2024/01/10/195350
Amazon SNSAWS CLI
https://dk521123.hatenablog.com/entry/2024/02/21/141346