素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

投稿日: 2019年9月22日
最終更新日:

【GithubActions】新機能を使って特定ブランチへのマージをトリガーにS3へファイルを転送するWorkflowを組んでみた【AWS-cli】

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット

created by Rinker
THE NORTH FACE(ザノースフェイス)
¥33,430 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

防水暴風で耐久性抜群なので旅行で大活躍です!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/04/03 21:42:16時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2024/04/03 21:42:10時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥7,500 (2024/04/03 21:42:14時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

created by Rinker
MOFT
¥2,880 (2024/04/03 21:42:18時点 Amazon調べ-詳細)

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

スポンサーリンク

336×280




GithubActionsを使ってみよう

CI/CDをGithubで完結

皆さんはGithubActions、使っていますか?

GithubAcrtionsとは、2018年10月にβ版として公開されたGithubの新機能の事を指します。


GitHub Actionsについて
GitHub Actionsでは、カスタムソフトウェア開発のライフサイクルにわたるワークフローをGitHubリポジトリに直接作成することができます。GitHub Actionsについて – GitHub ヘルプ

Githubで発生するPushやプルリク、その他諸々の操作をトリガーアクションと呼ばれる処理を定義する事が出来ます。

これにより、今まではJenkinsAWS CodeBuildなどを使っていたCI処理Github単体で完結出来てしまうという、開発者にとっては気になる機能となっています。

今回は実際にGithubActionsを使って、リポジトリ内のファイルをAWSのS3バケットに転送するワークフローを作ってみようと思います。

2019年9月24日追記:料金について

GithubActionsの料金形態は以下のようになっています。

Simple, pay-as-you-go pricing
Features • GitHub Actions

要するに、publicリポジトリは誰でもどれだけ使っても無料、privateリポジトリの場合は、アカウント情報によって無料枠の制限(分)と超過分の課金額が異なるよ、とのことです。

なので、GithubActionsでビルド等はせず成果物だけ管理してデプロイする形にした方がお財布に優しそうですね。

もちろん、場合によりますのでそこはプロジェクト方針に合わせてください。

手順

前提

yarnを使ってbuildを行い、dist配下に出力された成果物をAWSのS3バケットに転送する処理をGithubActionsで実現してみようと思います。

以下の情報は事前に準備してある事とします。

Point

  • S3バケット
  • 上記バケットにPutする権限を持ったIAM

GithubActionsの利用申請

まずはGithubActionsを使わせてもらうように申請をする必要があります。

コチラ のリンクから申請をしましょう。

無事申請が完了すると、リポジトリのタブにActionsが追加されると思います。

Hello Worldを出力してみよう

まずはおきまりのHello Worldを出力してみましょう。

Actionsには、様々なテンプレートが用意されているので、一般的な処理なら自分で0から作らなくてもWorkflowが組めます。
とても助かりますよね♪

今回は勉強のために0から作るので、右上のSet up a workflow yourselfボタンをクリックしましょう。

すると、エディター画面になると思います。

基本的にはYaml形式での記述になります。

以前まではHCL形式での記述を行っていましたが、2019年9月30日で非推奨となり、Yaml形式に統一されるので注意してください!!!

今回はmasterブランチへのpushをトリガーに標準出力を行うWorkflowを組んでみましょう。

こんな感じです。

GithubActionsの記法はかなり細かく用意されています。

公式のドキュメント があるので、そちらをみて頂いた方が理解が進むと思われますので、今回は解説は割愛させていただきます。

記述が終わったら右上のStart commitを行いましょう。

すると、リポジトリに.github/workflow/sample.yamlが追加されていると思います。

確認

それではmasterブランチへpushを行ってみましょう。

すると、正常にActionsが反応してくれると思います。

pushをトリガーに正常に処理が実行されましたね♪

実行中にもリアルタイムで処理を確認する事も出来ます。

失敗した場合

処理の途中で失敗した場合は、こんな感じで処理結果とエラーが出力されます。

AWS-cliはデフォルトで用意されている

今回使用するAWS-cliは、GihubActionsを実行する環境にて最初からコマンドが使える状態になっているとのことなので、確認してみましょう。

確認

問題なく使えましたね。

準備する必要がないので助かります♪

Secretの登録

今回はAWS-cliに用意しているIAMの認証情報を指定する必要があります。

GithubActionsの中で外部サービス等の認証情報を使いたい場合、Workflowの中には定義せずに、GitHubのSecrets機能を使うことになります。

Settings > Secretsに遷移し、情報を登録しましょう。

Workflowの中に直接定義すると、Git管理内に認証情報が含まれてしまって危険です。

Secretsを使うことで暗号化した状態で認証情報を管理してもらえるので、セキュリティ的に安全です。

Workflowの定義

では実際にWorkflowを定義していきましょう。

Secretsで定義した変数はsecrets.XXXで取得する事が可能です。

今回はさらに実行環境の環境変数に指定する事でAWS-cliの認証情報として設定しています。

cdに注意

注意すべき点は、stepごとに作業ディレクトリはリセットされてしまうらしく、ディレクトリを移動したい場合はcd && {続けて行いたいコマンド}のように記述する必要がありそうでした。

実行

では、実際に実行してみましょう!

無事に転送出来ました!!

CIツールを用意する事なく簡単に転送出来るのはとても楽チンですね♪

終わりに

以上のように、Githubの強力な新機能をお試しで使ってみました。

Jenkinsで出来る事は基本実現出来そうな気がしているので、皆さんもぜひ試してみてください♪

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , , , , , , , , , ,

blogenist

Author: blogenist

関連記事

YouTubeも見てね♪

お名前.comサイドバー