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

IT

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

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

スポンサーリンク

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ツールを用意する事なく簡単に転送出来るのはとても楽チンですね♪

本日のオススメ商品

Nuxt.jsビギナーズガイド

Nuxt.jsの参考書ならこれ!

チャオ (CIAO) 猫用おやつ ちゅ~る まぐろ

猫との距離を詰めるならコレ!

サントリー烏龍茶

常備しておいて問題なし!

終わりに

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

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

336×280




336×280




CATEGORIES & TAGS

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

blogenist

Author: blogenist