ども!今回はGitHub Actions内からファイルをアップロードするartifactに入門したのでまとめました。直近のお仕事では、GitHub Actionsをぶん回して入門して失敗してを繰り返しているので、学びが多いです。書籍から自分なりのサンプルを作るのが大変です。セキュリティスキャンの空き時間ありすぎて執筆捗る~
ご挨拶
一人呑みでふらっと出かけている龍ちゃんです。最近寒くなってきて、なかなか家から出たくなくなっていますね。ベランダでお酒を飲むのも雰囲気が出て非常に良いですね。
今週は業務でGitHub Actionsをぶん回している日々です。おかげで待ち時間の発生が多すぎて、ブログ執筆が捗ります。おかげでGitHub Actionsに対する理解度がプチ上昇中です。書籍を二つほど読破したので知識は増えたと思われます。
今回は、タイトルにもある通り「GitHub Actionsのartifact」についてまとめていこうと思います。存在は知っていたのですが、プロジェクトで話をしているときに「artifactにあげといて~」という指示が出た際に固まってしまいました。恥ずかしい気持ちがインサートしてきたので、遊んで入門していこうと思います。
それではぬるっと本題です。
GitHub Actionsのartifact
まずはartifactとは何か?という話から、実際に使って「何ができるのか」という部分について入っていきたいと思います。
artifactとは何者だ?
こういう時のための公式リファレンスになります。単純に説明すると「GitHub Actions中に指定したファイルをファイルとしてアップロード」することができます。とりあえず実行結果を吐き出せるということだけ覚えておけば良いです。
GitHub Actions中にアップロードとダウンロードを行うことができるので、job間の値の共有に使用することができます。「何を言っている」って感じですよね?ですがこの文脈で使用されることも多かったようです。この赤文字の背景には、Jobごとに実行環境が切り分けられるという問題点があります。
なので、Jobを切り分けたい人がいた場合は何らかの手段を用いてJob間のデータのやり取りが必要になるわけです。これをartifactを用いて処理をすると以下のイメージになります。環境外に吐き出して、ダウンロードすることでJob間の情共有を行うことができます。
とりあえず、これだけ知っていればぶん回すことができます。
artifactをぶん回してみる
artifactのサンプルを以下に置いておきます。
name: Artifacts Sample
on: workflow_dispatch
jobs:
upload-artifact:
runs-on: ubuntu-latest
steps:
- name: Create Artifact
run: echo "初めてのartifact" > artifact-sample.txt
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: my-artifact
path: artifact-sample.txt
download-artifact:
runs-on: ubuntu-latest
needs: upload-artifact
steps:
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: my-artifact
- name: Read Artifact
run: |
ls
cat artifact-sample.txt
ワークフローの内容としては、以下になります。
- upload-artifact
artifact-sample.txt
に”初めてのartifact”を書き込んで保存するartifact-sample.txt
を”my-artifact”という名前でアップロード
- download-artifact
- “my-artifact”をダウンロード
- 中身を閲覧
実行結果としては、以下の画面になります。『Artifacts』という部分にアップロードしたファイルが表示されます。
今回は、単一のファイルのみをアップロードしたのですがディレクトリごとアップロードすることも可能です。
artifactの使用どころ
さてさて、どんな時にartifactを使用するのかという部分について考えていきます。これはいろんなシナリオが考えられます。
- 複雑なファイルをJob間で使いまわしたい時
- GitHub Actions内で実行したセキュリティスキャンの実行結果をアップロード
すぐ思いつくのは上記の二点になります。GitHub Actions中にファイルをアップロードしたいシナリオってほかに何かありますかね?デプロイの実行結果をローカルにも保存しておくなどもありますね。
おわりやす
直近の仕事で学んだことをまとめてみました。直近のお仕事では、GitHub Actionsをぶん回しています。主にセキュリティスキャンが対象になります。OWASP ZAPってローカルで起動するものだと思っていたのですが、Docker版でCLIでのスキャンもあるらしいですよね。ここがええ感じになったらまたブログにまとめていきます。
Git関連の記事もええ感じにまとまってきましたね。以下に記事をまとめておきます。
- GitHub ActionsでFTP経由のデプロイ自動化
- 意味あるコミットメッセージを書くために修正する方法を覚えよう:Git初心者むけ
- Git:違うブランチで作業してしまった![stash]
- Gitのコミットメッセージをしっかり書こうという話【備忘録的共有】
GitHub Actionsを学んで、デプロイができるようになってから若干フロントの幅が広がったような気がします。フロントエンドエンジニアはデプロイをセットで学んでいった方が良いと思います。
勉強に使った書籍はこちらです。