<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Github Actions on ゲンゾウ用ポストイット</title><link>https://genzouw.com/entry/category/github-actions/</link><description>Recent content in Github Actions on ゲンゾウ用ポストイット</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Thu, 17 Aug 2023 08:33:47 +0900</lastBuildDate><atom:link href="https://genzouw.com/entry/category/github-actions/index.xml" rel="self" type="application/rss+xml"/><item><title>OIDCを使ってGithub ActionsからAWSにアクセスする仕組みについて理解を整理してみた</title><link>https://genzouw.com/entry/2023/08/16/174745/3549/</link><pubDate>Wed, 16 Aug 2023 17:47:45 +0900</pubDate><guid>https://genzouw.com/entry/2023/08/16/174745/3549/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;Github Actions から AWS クラウドリソースを操作するために&lt;code&gt;ACCESS_KEY&lt;/code&gt;、&lt;code&gt;SECRET_ACCESS_KEY&lt;/code&gt;を使う方法はもう古い、OIDCを使うのが一般的といわれましたが理解していなかったため整理しました。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;p&gt;今回取り上げる &lt;strong&gt;CI/CD ( ビルド ) パイプライン&lt;/strong&gt; は &lt;strong&gt;Github Actions&lt;/strong&gt; に限定しています。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;クラウドプロバイダー&lt;/strong&gt; に関しても、 &lt;strong&gt;AWS&lt;/strong&gt; に限定しています。&lt;/p&gt;&#10;&lt;p&gt;ただしアーキテクチャはCI/CDパイプラインがCircleCIやCloudBuild、クラウドプロバイダーがGCPやAzureに置き換えられたとしても適用可能なものと考えられます。&lt;/p&gt;&#10;&lt;h2 id="パスワードやアクセストークンを使ってgithub-actionsからクラウドへ認証する方法の問題点"&gt;パスワードやアクセストークンを使ってGithub Actionsからクラウドへ認証する方法の問題点&lt;/h2&gt;&#10;&lt;p&gt;Github ActionsのようなCI/CDパイプラインから、クラウド環境 ( AWS、Azure、GCP&amp;hellip; ) にアクセスするケースは多いはずです。&lt;/p&gt;&#10;&lt;p&gt;ビルドされたソフトウェアやコンテナイメージはいずれデプロイされますし、デプロイ環境としてクラウド環境 ( ex: AWS ) が利用されることが多いからです。&lt;/p&gt;&#10;&lt;p&gt;Github Actionsがクラウド上のリソースにアクセスするために、事前にパスワードやアクセストークンといった認証情報を取得しておく必要があります。&lt;/p&gt;&#10;&lt;p&gt;これらの認証情報はGithubの &lt;strong&gt;secrets&lt;/strong&gt; に保存することが多いでしょう。&#10;Github Actionsワークフローは実行のたびに &lt;strong&gt;secrets&lt;/strong&gt; から認証情報を取り出し、これを使ってクラウド環境へのアクセスを可能にします。&lt;/p&gt;&#10;&lt;p&gt;しかし、このような &lt;strong&gt;secrets&lt;/strong&gt; を使う方法には問題があります。&#10;以下のような手間が発生します。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;クラウド上のIAMサービスで認証情報を生成する&lt;/li&gt;&#10;&lt;li&gt;生成した認証情報をGithubのsecretsに登録する&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;strong&gt;つまり、認証情報が二重管理されることになります&lt;/strong&gt; 。&lt;/p&gt;&#10;&lt;h2 id="oidc--openid-connect--を使うメリット"&gt;OIDC ( OpenID Connect ) を使うメリット&lt;/h2&gt;&#10;&lt;p&gt;そこで登場するのがOIDC ( OpenID Connect ) です。&lt;/p&gt;&#10;&lt;p&gt;OIDCを使うと、Github Actionsワークフローがクラウドプロバイダーに対して要求するアクセストークンは、有効期限の短いものとなります。&lt;/p&gt;&#10;&lt;p&gt;もちろんOIDC認証による認証をサポートされているクラウドプロバイダーでしか利用できない方式ではありますが、現在はほとんどのクラウドプロバイダー ( AWS、Azune、GCP、HashiCorp Vault&amp;hellip; ) がOIDCをサポートしています。&lt;/p&gt;</description></item><item><title>Github Actions入門その5-式と関数</title><link>https://genzouw.com/entry/2023/05/07/081025/3519/</link><pubDate>Sun, 07 May 2023 08:10:25 +0900</pubDate><guid>https://genzouw.com/entry/2023/05/07/081025/3519/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;以下のエントリに引き続き、Github Actions を学習して学んだことをまとめて見ました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/22/082900/3490/"&gt;Github Actions 入門その 1-概要と用語の整理 | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/26/062946/3498/"&gt;Github Actions 入門その 2-簡単なワークフローを作成してみる | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/27/104439/3501/"&gt;Github Actions 入門その 3-アクションを探す・使う・自作する | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/30/082333/3508/"&gt;Github Actions 入門その 4-環境変数/スクリプト/Artifacts を使う | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;今回は Github Actions の学習シリーズの第 5 弾として、ワークフローの YAML 設定ファイル内で使用可能な式について解説します。&#10;その後、式の種類や使い方について説明していきます。&lt;/p&gt;&#10;&lt;h2 id="式について"&gt;式について&lt;/h2&gt;&#10;&lt;p&gt;環境変数の設定や実行中のワークフローの状態を取得するために「式」を利用できます。&lt;/p&gt;&#10;&lt;p&gt;式を使うと、以下のようなことができます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;リテラルの結合&lt;/li&gt;&#10;&lt;li&gt;実行中の環境情報の取得 ( 実行者、仮想マシン、等 )&lt;/li&gt;&#10;&lt;li&gt;関数呼び出し ( 値の加工等 )&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;算術計算のために演算子を使うこともできます。&lt;/p&gt;&#10;&lt;p&gt;式は &lt;code&gt;if&lt;/code&gt; キーワードと一緒に利用されることが多いです。&#10;プログラミング言語のように、 &lt;code&gt;if&lt;/code&gt; で指定した式の値が &lt;code&gt;true&lt;/code&gt; となったときに、該当のステップが実行されます。&lt;/p&gt;&#10;&lt;p&gt;「文字列」ではなく「式」であると Github Actions に認識させるためには、以下の構文を使います。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;${{ &amp;lt;式&amp;gt; }}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;&lt;code&gt;if&lt;/code&gt; キーワードの値として式を使用した場合は、 &lt;code&gt;${{ ... }}&lt;/code&gt; の構文を指定しないこともあります。&#10;というのも、Github Actions は &lt;code&gt;if: &lt;/code&gt; 以降に指定した記述を「式」として評価・処理するためです。&#10;&lt;code&gt;if: &lt;/code&gt; 以降の記述に関しては、冗長かもしれませんが &lt;code&gt;${{ ... }}&lt;/code&gt; の形式で記述しておくのが間違いないでしょうし、チームメンバにとってもわかりやすいでしょう。&lt;/p&gt;</description></item><item><title>ローカルPC内でGithub Actionsを実行する - 'nekos/act'</title><link>https://genzouw.com/entry/2023/05/02/083434/3510/</link><pubDate>Tue, 02 May 2023 08:34:34 +0900</pubDate><guid>https://genzouw.com/entry/2023/05/02/083434/3510/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;Github Actions の設定ファイルを記述した後、正しく動作するかを確認するために毎回リモートリポジトリにプッシュするのが面倒だなと思ったので良い方法が無いかと調べてみました。&#10;すると、ローカルで Github Actions の実行が可能なツールが見つかったので、検証してみました。&lt;/p&gt;&#10;&lt;h2 id="検証環境"&gt;検証環境&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ uname -moi&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arm64 unknown Darwin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ bash -version &lt;span class="p"&gt;|&lt;/span&gt; head -n &lt;span class="m"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GNU bash, version 5.2.15&lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;-release &lt;span class="o"&gt;(&lt;/span&gt;aarch64-apple-darwin22.1.0&lt;span class="o"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="見つけたツール--nektosact"&gt;見つけたツール : &lt;code&gt;nektos/act&lt;/code&gt;&lt;/h2&gt;&#10;&lt;p&gt;利用するツールは以下になります。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/nektos/act"&gt;GitHub - nektos/act: Run your GitHub Actions locally ?&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;概要を見る限りは自分の目的にフィットしています。&lt;/p&gt;&#10;&lt;h2 id="nektosact-ってどんなツール"&gt;&lt;code&gt;nektos/act&lt;/code&gt; ってどんなツール？&lt;/h2&gt;&#10;&lt;p&gt;Github Actions をローカルで実行するためのツールとのことです。&lt;/p&gt;&#10;&lt;p&gt;このツールを導入するメリットは以下となります。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;.github/workflows&lt;/code&gt; ディレクトリ配下に設定ファイルを作成、変更した後、 commit/push しなくてもテストできるため開発効率が上がる&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Makefile&lt;/code&gt; でタスクを管理することもできますが、 &lt;code&gt;.github/worflows&lt;/code&gt; とタスクが重複し DRY ではなくなります。&#10;ローカルで実行できれば &lt;code&gt;Makefile&lt;/code&gt; が不要となります。&#10;&lt;ul&gt;&#10;&lt;li&gt;(この点については、 Github Actions から &lt;code&gt;make&lt;/code&gt; を呼ぶことで回避できると思いますが公式ページのメリットとして書かれていました )&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="nektosact-って何をしてくれるに"&gt;&lt;code&gt;nektos/act&lt;/code&gt; って何をしてくれるに？&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;act&lt;/code&gt; コマンドが提供されます。&lt;/p&gt;</description></item><item><title>Github Actions入門その4-環境変数/スクリプト/Artifactsを使う</title><link>https://genzouw.com/entry/2023/04/30/082333/3508/</link><pubDate>Sun, 30 Apr 2023 08:23:33 +0900</pubDate><guid>https://genzouw.com/entry/2023/04/30/082333/3508/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;以下のエントリに引き続き、Github Actions を学習して学んだことをまとめて見ました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/22/082900/3490/"&gt;Github Actions 入門その 1-概要と用語の整理 | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/26/062946/3498/"&gt;Github Actions 入門その 2-簡単なワークフローを作成してみる | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/27/104439/3501/"&gt;Github Actions 入門その 3-アクションを探す・使う・自作する | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;このエントリでは、カスタマイズのテクニックについて触れていきます。&#10;変数の使用方法、スクリプトの実行方法、ジョブとジョブの間をつなぐための方法により、カスタマイズが可能です。&lt;/p&gt;&#10;&lt;h2 id="ワークフローの中で変数を使う"&gt;ワークフローの中で変数を使う&lt;/h2&gt;&#10;&lt;p&gt;Github Actions では、ワークフローが実行されるたびに &lt;a href="https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables"&gt;割り当てられるデフォルトの環境変数&lt;/a&gt; があります。&#10;デフォルトの環境変数だけで不十分であれば、独自に環境変数を追加することも可能です。&#10;ワークフローの YAML 設定ファイルに定義することでこれを実現できます。&lt;/p&gt;&#10;&lt;p&gt;サンプルコードを見ていきましょう。&#10;以下のサンプルコードでは、 &lt;code&gt;POSTGRES_HOST&lt;/code&gt; と &lt;code&gt;POSTGRES_PORT&lt;/code&gt; という 2 つの環境変数を作成しています。&#10;環境変数は &lt;code&gt;node client.js&lt;/code&gt; の中で参照可能です( Github Actions のなかでは、 Node.js はデフォルトで利用可能みたいです )。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;use-environment-variables&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;run-name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;use-environment-variables&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;push&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;jobs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;use-environment-variables&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;runs-on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ubuntu-22.04&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/checkout@v3&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;run&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;node .github/scripts/use_environment_variables.js&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;POSTGRES_HOST&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;postgres_host&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;POSTGRES_PORT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5432&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;呼び出している JavaScript のコードは以下のようになっています。&lt;/p&gt;</description></item><item><title>Github Actions入門その3-アクションを探す・使う・自作する</title><link>https://genzouw.com/entry/2023/04/27/104439/3501/</link><pubDate>Thu, 27 Apr 2023 10:44:39 +0900</pubDate><guid>https://genzouw.com/entry/2023/04/27/104439/3501/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;前々回、前回と Github Actions に登場する用語の整理した後、実際の YAML 設定ファイルの各項目と用語の対応を見てきました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/22/082900/3490/"&gt;Github Actions 入門その 1-概要と用語の整理 | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/26/062946/3498/"&gt;Github Actions 入門その 2-簡単なワークフローを作成してみる | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;アクション ( Action ) は１つ以上のステップで構成されたブロックです。&lt;/p&gt;&#10;&lt;p&gt;ワークフローは、１つ以上のジョブを持ち、ジョブは１つ以上のステップを持ちます。&#10;( 詳細は以下を参照 )&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/22/082900/3490/"&gt;Github Actions 入門その 1 ( 概要と用語の整理 ) | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;ステップは独自のシェルコマンドを記述しても良いのですが、アクションを指定できます。&#10;アクションは Github で公開されているものを指定したり、自作したものを利用することもできます。&lt;/p&gt;&#10;&lt;p&gt;今回はアクションの探し方、使い方、自作方法について紹介します。&lt;/p&gt;&#10;&lt;h2 id="概要"&gt;概要&lt;/h2&gt;&#10;&lt;p&gt;ワークフローの中で利用するアクションは以下のいずれかの方法で提供されます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;ワークフローが実行される Github リポジトリ内(当然、 &lt;code&gt;git commit &amp;amp;&amp;amp; git push&lt;/code&gt; されています)&lt;/li&gt;&#10;&lt;li&gt;Github の公開リポジトリ&lt;/li&gt;&#10;&lt;li&gt;Docker Hub 上の公開 Docker イメージ&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="公開されているアクションの探し方"&gt;公開されているアクションの探し方&lt;/h2&gt;&#10;&lt;p&gt;Github コミュニティで作成されたアクションを探す場合は、 &lt;a href="https://github.com/marketplace?type=actions"&gt;Github Marketplace&lt;/a&gt; というサイトを利用するのが良いでしょう。&#10;キーワード検索もできますし、カテゴリ分類されているので役割の観点から探すこともできます。&lt;/p&gt;&#10;&lt;h2 id="github-marketplace-で見つけたアクションを追加"&gt;Github Marketplace で見つけたアクションを追加&lt;/h2&gt;&#10;&lt;p&gt;実際に &lt;a href="https://github.com/marketplace?type=actions"&gt;Github Marketplace&lt;/a&gt; から検索したアクションを使ってみましょう。&lt;/p&gt;</description></item><item><title>Github Actions入門その2-簡単なワークフローを作成してみる</title><link>https://genzouw.com/entry/2023/04/26/062946/3498/</link><pubDate>Wed, 26 Apr 2023 06:29:46 +0900</pubDate><guid>https://genzouw.com/entry/2023/04/26/062946/3498/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;前回は Github Actions の概要と用語の整理をしました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://genzouw.com/entry/2023/04/22/082900/3490/"&gt;Github Actions 入門その 1-概要と用語の整理 | ゲンゾウ用ポストイット&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Github 上で実行できるワークフローを構築するためのサービスです。&#10;Github 上でのソースコードの変更をトリガーにして、自動的にビルドやテストなどのワークフローを実行できます。&#10;Unbutu、Windows、macOS などの環境で実行でき、必要なリソースを設定することで、ビルドなどのタスクを実行できます。&lt;/p&gt;&#10;&lt;p&gt;今回は、サンプルコードを触って Github Actions を実際に操作してみます。&lt;/p&gt;&#10;&lt;h2 id="簡単なワークフローを作成してみる"&gt;簡単なワークフローを作成してみる&lt;/h2&gt;&#10;&lt;p&gt;Github Actions では、ワークフローの設定を YAML 形式で記述します。&lt;/p&gt;&#10;&lt;p&gt;それぞれのワークフローは YAML 形式のファイル 1 つで表現されます。&#10;その YAML をワークフローを実行させたい Github リポジトリの &lt;code&gt;.github/workflows&lt;/code&gt; というディレクトリに配置します。&lt;/p&gt;&#10;&lt;p&gt;ワークフローは、トリガーとなるイベント ( 例えば git push ) が発生したタイミングで実行されます。&lt;/p&gt;&#10;&lt;p&gt;ここからは実際にワークフロー設定ファイルを見ていきます。&lt;/p&gt;&#10;&lt;p&gt;以下のようなワークフローを作成してみます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;プッシュのタイミングで実行される&lt;/li&gt;&#10;&lt;li&gt;Node.js のツールである &lt;code&gt;bats&lt;/code&gt; をインストールする&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;bats -v&lt;/code&gt; コマンドを実行する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;まずはローカルに Git ワークスペースを作成します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mkdir learning-github-actions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; learning-github-actions&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git init&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;対応する Git リモートリポジトリを作成します。&#10;ここでは Github CLI ( &lt;code&gt;gh&lt;/code&gt; コマンド) を使って作成しますが、もちろんブラウザ経由で作成しても構いません。&lt;/p&gt;</description></item><item><title>Github Actions入門その1-概要と用語の整理</title><link>https://genzouw.com/entry/2023/04/22/082900/3490/</link><pubDate>Sat, 22 Apr 2023 08:29:00 +0900</pubDate><guid>https://genzouw.com/entry/2023/04/22/082900/3490/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;&#10;&lt;p&gt;今の組織で CICD のプラットフォームとして &lt;strong&gt;Github Actions&lt;/strong&gt; メインに切り替えています。&lt;/p&gt;&#10;&lt;p&gt;今後更にこの流れが進みそうなので Github Actions について一から学びなおしてみようと思いました。&lt;/p&gt;&#10;&lt;h2 id="github-actions-とは"&gt;Github Actions とは&lt;/h2&gt;&#10;&lt;p&gt;Github が提供している CI ( continuous integration ) と CD ( continuous delivery ) を実現するためのプラットフォームです。&lt;/p&gt;&#10;&lt;h3 id="cicd-パイプラインとは"&gt;CI/CD パイプラインとは&lt;/h3&gt;&#10;&lt;p&gt;CI とはビルド、テスト、静的解析などの開発パイプラインを示します。&#10;過去には各作業者の PC 内で実行していましたが、環境差異による実行結果の違いや実行忘れなどの問題があることから、現在のほぼすべての開発組織で導入されている仕組みです。&lt;/p&gt;&#10;&lt;p&gt;CD とは CI に加えてアプリケーションのデプロイの流れまでを含めた用語となっています。&lt;/p&gt;&#10;&lt;h3 id="github-actions-が実行されるタイミング--イベント-"&gt;Github Actions が実行されるタイミング ( イベント )&lt;/h3&gt;&#10;&lt;p&gt;実行のトリガは「Git ブランチに対して push されたタイミング」「プルリクが作成されたタイミング」「プルリクが &lt;code&gt;main&lt;/code&gt; ブランチにマージされたタイミング」など任意のタイミングが指定できます。&lt;/p&gt;&#10;&lt;p&gt;具体的な例として、「誰かが Github リポジトリに新しい Issue を作成したタイミングで、ラベルを付与する」ことができます。&lt;/p&gt;&#10;&lt;h3 id="実行環境"&gt;実行環境&lt;/h3&gt;&#10;&lt;p&gt;Linxu、Windows、macOS の仮想マシンが用意されています。&lt;/p&gt;&#10;&lt;p&gt;Github 上のマネージド環境だけでなく、オンプレ環境や他のクラウドを実行環境とすることもできます。&lt;/p&gt;&#10;&lt;p&gt;また、仮想マシンではなくコンテナ環境を利用することもできます。&lt;/p&gt;&#10;&lt;h2 id="概要"&gt;概要&lt;/h2&gt;&#10;&lt;p&gt;Github Actions の構成要素について、概要を掴んでおきます。&lt;/p&gt;&#10;&lt;p&gt;「ワークフロー」と呼ばれるものを設定します。&#10;ワークフローは Github リポジトリの中で何らかの「イベント」が発生 ( トリガー ) したときに実行されます。&#10;例えば「プルリクエストの作成」や「Issue の作成」といったイベントがあります。&lt;/p&gt;</description></item></channel></rss>