CodePipelineV2のCommandsアクションで何ができるのか

2025/02/09に公開

CodePipelineV2で登場したCommandsアクションで、CodePipeLineにビルドコマンドを記述する事ができるようになりました。
これまでは別途Codebuildを構成して、CodePipelineから呼び出すとしていた構成を、このアップデートによってCodePipelineのみで構成する選択肢も出てきました。(内部的にはCodeBuildの仕組みを使っているようですが)

https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-Commands.html

本日は、CodePipelineのCommandsアクション実行環境で、どういったコマンドが実行可能なのかを確認してみます。

パイプラインの作成

一応、作成したパイプラインについても記録しておきます。

パイプラインの設定

マネジメントコンソールから、custom pipelineで作成します。

ソースステージの追加

今回確認したいのはビルドの実行環境です。
ソースは何でも良いのですが、GitHubリポジトリを設定しておきます。

ビルドステージの追加

ここで、実行環境で確認したいコマンドを設定します。

下記のコマンドを設定しました。

cat /etc/os-release |cat
uname -a |cat
python --version |cat
python3 --version |cat
java -version |cat
javac -version |cat
node -v |cat
npm -v |cat
ruby -v |cat
gem -v |cat
go version |cat
mvn -v |cat
gradle -v |cat
make -v |cat
cmake --version |cat
aws --version |cat
sam --version |cat
docker --version |cat
git --version |cat
terraform --version |cat
ansible --version |cat
kubectl version |cat

レビュー

残りのステージは設定をスキップして、最終的にこんな感じの設定になりました。

作成すると同時に動き出しました。

実行ログ確認

無事に成功したようなので、ビルドステージの詳細から実行ログを確認します

実行ログ。テキストで転記します。

cat /etc/os-release

[Container] 2025/02/09 06:49:21.137490 Running command cat /etc/os-release |cat
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023.6.20250128"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
VENDOR_NAME="AWS"
VENDOR_URL="https://aws.amazon.com/"
SUPPORT_END="2029-06-30"

uname -a

[Container] 2025/02/09 06:49:21.144106 Running command uname -a |cat
Linux 7024d05aaa4d 4.14.355-275.572.amzn2.x86_64 #1 SMP Sat Jan 11 09:58:24 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

python --version

[Container] 2025/02/09 06:49:21.150523 Running command python --version |cat
Python 3.11.11

python3 --version

[Container] 2025/02/09 06:49:23.033235 Running command python3 --version |cat
Python 3.11.11

java -version

[Container] 2025/02/09 06:49:23.100870 Running command java -version |cat
openjdk version "17.0.13" 2024-10-15 LTS
OpenJDK Runtime Environment Corretto-17.0.13.11.1 (build 17.0.13+11-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.13.11.1 (build 17.0.13+11-LTS, mixed mode, sharing)

javac -version

[Container] 2025/02/09 06:49:26.364295 Running command javac -version |cat
javac 17.0.13

node -v

[Container] 2025/02/09 06:49:27.539409 Running command node -v |cat
v18.20.6

npm -v

[Container] 2025/02/09 06:49:29.502875 Running command npm -v |cat
10.9.2

ruby -v

[Container] 2025/02/09 06:49:33.587227 Running command ruby -v |cat
ruby 3.2.6 (2024-10-30 revision 63aeb018eb) [x86_64-linux]

gem -v

[Container] 2025/02/09 06:49:34.076106 Running command gem -v |cat
3.4.19

go version

[Container] 2025/02/09 06:49:35.841316 Running command go version |cat
go version go1.20.14 linux/amd64

mvn -v

[Container] 2025/02/09 06:49:37.316131 Running command mvn -v |cat
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /opt/maven
Java version: 17.0.13, vendor: Amazon.com Inc., runtime: /usr/lib/jvm/java-17-amazon-corretto.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.14.355-275.572.amzn2.x86_64", arch: "amd64", family: "unix"

gradle -v

[Container] 2025/02/09 06:49:38.903158 Running command gradle -v |cat

------------------------------------------------------------
Gradle 8.11.1
------------------------------------------------------------

Build time:    2024-11-20 16:56:46 UTC
Revision:      481cb05a490e0ef9f8620f7873b83bd8a72e7c39

Kotlin:        2.0.20
Groovy:        3.0.22
Ant:           Apache Ant(TM) version 1.10.14 compiled on August 16 2023
Launcher JVM:  17.0.13 (Amazon.com Inc. 17.0.13+11-LTS)
Daemon JVM:    /usr/lib/jvm/java-17-amazon-corretto.x86_64 (no JDK specified, using current Java home)
OS:            Linux 4.14.355-275.572.amzn2.x86_64 amd64


make -v

[Container] 2025/02/09 06:49:43.705994 Running command make -v |cat
GNU Make 4.3
Built for x86_64-amazon-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

cmake --version(無し)

[Container] 2025/02/09 06:49:44.133385 Running command cmake --version |cat
/codebuild/output/tmp/script.sh: line 4: cmake: command not found

aws --version

[Container] 2025/02/09 06:49:44.141735 Running command aws --version |cat
aws-cli/2.23.8 Python/3.12.6 Linux/4.14.355-275.572.amzn2.x86_64 exec-env/AWS_ECS_EC2 exe/x86_64.amzn.2023

sam --version

[Container] 2025/02/09 06:49:55.578457 Running command sam --version |cat
SAM CLI, version 1.132.0

docker --version

[Container] 2025/02/09 06:49:59.274833 Running command docker --version |cat
Docker version 27.3.1, build ce12230

git --version

[Container] 2025/02/09 06:49:59.292339 Running command git --version |cat
git version 2.47.1

terraform --version(無し)

[Container] 2025/02/09 06:49:59.301252 Running command terraform --version |cat
/codebuild/output/tmp/script.sh: line 4: terraform: command not found

ansible --version(無し)

[Container] 2025/02/09 06:49:59.309533 Running command ansible --version |cat
/codebuild/output/tmp/script.sh: line 4: ansible: command not found

kubectl version

[Container] 2025/02/09 06:49:59.318298 Running command kubectl version |cat
Client Version: v1.32.0-eks-5ca49cb
The connection to the server localhost:8080 was refused - did you specify the right host or port?
Kustomize Version: v5.5.0

最後に

もちろん今後実行環境のアップデートが想定されますので注意が必要です。
個人的にはSAMアプリケーションのCICD用として重宝しています。

Discussion