こんにちは!
今回は、構成管理ツールである Serverless Framework の CI/CD 機能、 Serverless CI/CD について解説していきます!
CI/CD ツールがたくさんある中で、何を使えばいいのかお悩みの方には選択肢のひとつとして情報を提供できる記事になっているかと思いますので、ぜひ参考にしてみてください。また、興味はあったけどまだ触っていないという方にも向けた内容となっていますので、最後までお読み頂ければありがたいです!
Serverless CI/CD は現在(2021年5月15日)、以下のコード管理サービスと言語、およびクラウドプロバイダをサポートしています。
これらを理解した上で、実際にやってみましょう!
事前に Serverless Framework のアカウントを作成して、GUI のコンソールにログインし色々と設定する必要があります。ここではまっさらな状態ということを前提として、設定を順に説明していきます。
左ペインから「org」をクリックしたら、まず「providers」を設定しましょう。AWS に Serverless Framework 用の IAM ユーザーを作成し、認証情報を設定してください。
左ペインから「apps」を選択し、「create app」をクリックします。そのあと、「serverless framework」をクリックします。
次の画面では、app と service 名を入力して、Credentials を設定し、一番下の「go to app settings」をクリックします。
なお、一番上にあるテンプレートは、serverless.yml に記述しなければいけないコードになりますので、コピーしてデプロイ予定の serverless.yml に貼り付けてください。
次にご自身が利用されているコード管理サービスを選択してください。本記事では BitBucket を選択します。
選択後はリポジトリやリージョン、通知などを設定します。これで app 画面の設定は完了となります。
今回は Serverless Framework のテンプレートを使って動作確認します。以下のコマンドでディレクトリを作成しましょう。
sls create --template aws-nodejs --path myService
少し修正を加えて以下のコードをデプロイします。1行目〜3行目は先ほど GUI 画面にて設定した CI/CD を指定しておりますので必ず記述してください。
org: sample
app: cicd-test
service: cicd-test
frameworkVersion: '2'
provider:
name: aws
runtime: nodejs12.x
region: ap-northeast-1
lambdaHashingVersion: 20201221
functions:
hello:
handler: handler.hello
package:
exclude:
- README.md
これをプッシュすると、それをトリガーに serverless.yml の内容がデプロイされます。GUI 画面では以下のように確認ができます。併せて CloudFormation でもデプロイできたかどうか確認しましょう。
Serverless CI/CD は内部的に以下のコマンドを順に実行しています。
そのため、テストの実行内容は package.json の scripts の test 部分に記述します。以下は例になります。
{
"name": "cicd-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "<your script>""
},
"author": "",
"license": "ISC"
}
また serverless-plugin-scripts プラグインを利用することで、npm install と npm test の実行前後にてコマンドを実行することができます。利用できるパラメータと実行時のタイミングは以下になります。
パラメータ | 実行されるタイミング |
preinstall | npm install 前 |
postinstall | npm install 後 |
pretest | npm test 前 |
posttest | npm test 後 |
{
"name": "cicd-test",
"version": "1.0.0",
"scripts": {
"preinstall": "<your script>",
"postinstall": "<your script>",
"pretest": "<your script>",
"posttest": "<your script>"
}
}
加えて sls deploy 前後においてもコマンドが実行可能となります。その際は、package.json ではなく、serverless.yml に記述します。
plugins:
- serverless-plugin-scripts
custom:
scripts:
hooks:
# デプロイ前
# ‘before:deploy:deploy': <your script>
# デプロイ後
# ‘deploy:finalize’: <your script>
これらを用いて、ご自身の環境に合わせて CI/CD 部分を作成してみてください!参考になれば幸いです!
Serverless CI/CD では、プラグインを利用することで、CI 部分の細かな制御を行うことができます。また SaaS ツールになりますので、コンソールで視覚化できるという点もメリットになります。まだ触ったことのない方はぜひ試してみてください。
このブログでは、AWS の記事をどんどん公開しておりますので、ご興味のある方は他の記事もご覧いただければと思います。
AWS に関する開発は、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎