🌊
Cline で Circle CI のパイプライン設定ファイルを修正してみる
今日は最近はやりのCline + VSCode環境でCircle CIのパイプライン設定ファイルを修正できるか試してみました。
環境は過去この手順で用いたものを利用します。
さっそくやってみる
0. VSCodeにClineのインストール
この記事ではClineの設定自体は割愛しますが、先駆者が色んなブログを書いてくれています。感謝!
なんかはわかりやすかったです。1. CircleCIのパイプライン設定ファイル変更をお願いする
現在の設定ファイルは以下となっています。
version: 2.1
executors:
node-executor:
docker:
- image: circleci/node:14
working_directory: ~/repo
jobs:
deploy_lambda:
executor: node-executor
steps:
- checkout
- run:
name: Create Lambda ZIP
command: |
# Lambda用のコードをZIP圧縮
zip -r lambda.zip . # カレントディレクトリ(Lambda関数のコード)をZIP圧縮
- run:
name: Deploy Lambda function
command: |
# AWS CLIをインストール
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# AWS認証情報を環境変数から設定(Contextから引き出される)
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
export AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}
# AWS CLIのページャーを無効化
export AWS_PAGER=""
# Lambdaのデプロイを実行
aws lambda update-function-code \
--function-name firstcci \
--zip-file fileb://lambda.zip
workflows:
version: 2
deploy:
jobs:
- deploy_lambda:
context:
- aws-credentials
filters:
branches:
only:
- /prod*/
prod
ブランチのみパイプラインが設定されており即Deployされるようになっています。
ここで以下のプロンプトを投げてみます。
https://github.com/harunobukameda/firstcci
はCircleCIのパプラインと連携しています。以下の変更を加えてください。
1.新たにstgブランチの設定を追加
2.prodブランチのみ手動承認ステップを追加
1分経たずに以下が生成されます。
version: 2.1
executors:
node-executor:
docker:
- image: circleci/node:14
working_directory: ~/repo
jobs:
deploy_lambda:
executor: node-executor
steps:
- checkout
- run:
name: Create Lambda ZIP
command: |
# Lambda用のコードをZIP圧縮
zip -r lambda.zip . # カレントディレクトリ(Lambda関数のコード)をZIP圧縮
- run:
name: Deploy Lambda function
command: |
# AWS CLIをインストール
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# AWS認証情報を環境変数から設定(Contextから引き出される)
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
# AWS_DEFAULT_REGIONが設定されていない場合のデフォルト値を設定
if [ -z "${AWS_DEFAULT_REGION}" ]; then
export AWS_DEFAULT_REGION="ap-northeast-1" # デフォルトで東京リージョンを使用
else
export AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}
fi
echo "Using AWS region: ${AWS_DEFAULT_REGION}"
# AWS CLIのページャーを無効化
export AWS_PAGER=""
# Lambdaのデプロイを実行
aws lambda update-function-code \
--function-name firstcci \
--zip-file fileb://lambda.zip \
--region ${AWS_DEFAULT_REGION}
workflows:
version: 2
deploy:
jobs:
# For staging branches - deploy automatically
- deploy_lambda:
filters:
branches:
only:
- stg
- /stg*/
context:
- aws-credentials
# For production branches - require manual approval
- hold:
type: approval
filters:
branches:
only:
- /prod*/
# Deploy to production only after approval
- deploy_lambda:
requires:
- hold
filters:
branches:
only:
- /prod*/
context:
- aws-credentials
余りに便利すぎて眩暈がします。これをprod
,stg
それぞれのブランチにコミットしておきます。
以下の様にちゃんと動作しています。
ただこの状態だと同じLambda関数を上書きするためあまりよろしくありません。追加で以下のプロンプトを投げます。
stgでdeployするときのLambda関数の名前をわかる安いものに変更してください
prodはそのままにしてください。
再度以下の設定ファイルが生成されます。
version: 2.1
executors:
node-executor:
docker:
- image: circleci/node:14
working_directory: ~/repo
jobs:
deploy_lambda_prod:
executor: node-executor
steps:
- checkout
- run:
name: Create Lambda ZIP
command: |
# Lambda用のコードをZIP圧縮
zip -r lambda.zip . # カレントディレクトリ(Lambda関数のコード)をZIP圧縮
- run:
name: Deploy Lambda function to Production
command: |
# AWS CLIをインストール
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# AWS認証情報を環境変数から設定(Contextから引き出される)
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
# AWS_DEFAULT_REGIONが設定されていない場合のデフォルト値を設定
if [ -z "${AWS_DEFAULT_REGION}" ]; then
export AWS_DEFAULT_REGION="ap-northeast-1" # デフォルトで東京リージョンを使用
else
export AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}
fi
echo "Using AWS region: ${AWS_DEFAULT_REGION}"
# AWS CLIのページャーを無効化
export AWS_PAGER=""
# Lambdaのデプロイを実行 (Production)
aws lambda update-function-code \
--function-name firstcci \
--zip-file fileb://lambda.zip \
--region ${AWS_DEFAULT_REGION}
deploy_lambda_stg:
executor: node-executor
steps:
- checkout
- run:
name: Create Lambda ZIP
command: |
# Lambda用のコードをZIP圧縮
zip -r lambda.zip . # カレントディレクトリ(Lambda関数のコード)をZIP圧縮
- run:
name: Deploy Lambda function to Staging
command: |
# AWS CLIをインストール
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# AWS認証情報を環境変数から設定(Contextから引き出される)
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
# AWS_DEFAULT_REGIONが設定されていない場合のデフォルト値を設定
if [ -z "${AWS_DEFAULT_REGION}" ]; then
export AWS_DEFAULT_REGION="ap-northeast-1" # デフォルトで東京リージョンを使用
else
export AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}
fi
echo "Using AWS region: ${AWS_DEFAULT_REGION}"
# AWS CLIのページャーを無効化
export AWS_PAGER=""
# Lambdaのデプロイを実行 (Staging)
aws lambda update-function-code \
--function-name firstcci-stg \
--zip-file fileb://lambda.zip \
--region ${AWS_DEFAULT_REGION}
workflows:
version: 2
deploy:
jobs:
# For staging branches - deploy automatically
- deploy_lambda_stg:
filters:
branches:
only:
- stg
- /stg*/
context:
- aws-credentials
# For production branches - require manual approval
- hold:
type: approval
filters:
branches:
only:
- /prod*/
# Deploy to production only after approval
- deploy_lambda_prod:
requires:
- hold
filters:
branches:
only:
- /prod*/
context:
- aws-credentials
よくよく考えるとClineもすごいですが、外部Extensionがファイルを作成して、差分を表示させ、上書きできるようになっているVSCodeの汎用性の高さもすごいです。
Discussion