はじめに
Jenkinsに一ミリも触ったことがないのにUbuntuイメージで「チュートリアル: 4 ステージのパイプラインを作成する」をやろうとしたら苦労したので記事にしました。
困ったこと
Jenkinsのセットアップ方法がわからない
如何せんJenkins未経験なので、Jenkinsのセットアップ方法がわかりませんでした。なので、こちらの記事を参考にセットアップを行いました。
なおAMIはubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-20230115
を使用しました。(これがよくなかった、、、)
1. Javaをインストールする
Jenkinsの動作にJavaが必要みたいなので、以下のコマンドでJavaをインストールします。
$ sudo apt update
$ sudo apt install openjdk-11-jre
$ java -version
2. Jenkinsをインストールする
以下のコマンドでLTS版をインストールします。
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins
3. Jenkinsのダッシュボードにアクセスする
Jenkinsのインストールが終わったら、ダッシュボードにアクセスしてジョブの作成を行います。
まずはブラウザでJenkinsサーバのIPアドレス:8080
にアクセスします。
すると最初のセットアップ画面みたいなものが表示され、「推奨されるプラグインをインストールする」か「プラグインをカスタマイズする」かを選択させられます。私は左側の「推奨されるプラグインをインストールする」方を選びました。
ここまで完了するとダッシュボードが表示され、ジョブが作成できるようになります。
4. CodePipelineのプラグインを追加する
チュートリアルを行うにはプラグインを追加する必要があるので、それを追加します。
-
jenkinsの管理 > pluginの管理 > available plugin
を選択 - 検索ボックスに
AWS CodePipeline
と入力して表示されるものをインストール -
ダウンロードして再起動後にインストール
を選択 - インストール完了後、
実行中のジョブがなければ Jenkins を再起動する
を選択
おまけ:ジョブの作成
セットアップではありませんが、ジョブの作成もさっぱりわからなかったので方法をメモします。
- ダッシュボードで「新規ジョブの作成」ボタンをクリック
2. フリースタイルプロジェクト
を選択して次へ
3. プロジェクトの設定ページで必要な場合に複数のビルドを並列実行する
をチェック
4. ソースコードの管理でCodePipeline
を選択
5. buildかtestかみたいなのがあるのでbuild
を選択
6. トリガーのビルドはPoll SCM
だけチェック
7. スケジュールは* * * * *
にする
8. ビルドステップを追加する(シェルの実行
を選択し、コマンドでrake
を入力してAddする)
これでCodePipelineから呼び出すジョブの完成です!
ビルド実行時にエラーが出る
パイプラインも作成し実行したのですが、ビルド時にエラーが発生してしまいました、、
rake: not found
こちらのエラーを修正した後も、、
LoadError: cannot load such file -- haml
解決方法
以下のコマンドを実行して、rakeとhamlをインストールすることで解消しました!
セットアップ時に実行したほうがいいですね。
sudo apt-get install rake
sudo apt-get install -y ruby-haml
CodeDeploy エージェントがインストールされていない
デプロイが失敗したので調査したところ、CodeDeployエージェントがインストールされていないことが原因の用でした。
調べて普通にインストールしたところ、CodeDeploy agent is not supporting ruby v3.0.1
のエラーが出てしまい、うまくインストールできませんでした、、、
解決方法
こちらを参考にしてインストールすることができました!
-
touch install-code-deploy-ubuntu22-ec2.sh
を入力して、新規ファイルを作成 -
cat > install-code-deploy-ubuntu22-ec2.sh
で作成したファイルを開く - 以下の内容をペースト
#!/bin/bash
# This installs the CodeDeploy agent and its prerequisites on Ubuntu 22.04.
sudo apt-get update
sudo apt-get install ruby-full ruby-webrick wget -y
cd /tmp
wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/releases/codedeploy-agent_1.3.2-1902_all.deb
mkdir codedeploy-agent_1.3.2-1902_ubuntu22
dpkg-deb -R codedeploy-agent_1.3.2-1902_all.deb codedeploy-agent_1.3.2-1902_ubuntu22
sed 's/Depends:.*/Depends:ruby3.0/' -i ./codedeploy-agent_1.3.2-1902_ubuntu22/DEBIAN/control
dpkg-deb -b codedeploy-agent_1.3.2-1902_ubuntu22/
sudo dpkg -i codedeploy-agent_1.3.2-1902_ubuntu22.deb
systemctl list-units --type=service | grep codedeploy
-
ctrl + d
でcatを閉じる -
chmod u+x install-code-deploy-ubuntu22-ec2.sh
で作成したファイルの権限を変更 -
./install-code-deploy-ubuntu22-ec2.sh
で実行 -
sudo service codedeploy-agent status
でCodeDeployエージェントが動いていることを確認
サンプルコードのスクリプトが実行できなかった
AWSから提供されているサンプルコードですが、Ubuntuイメージでやろうとしたためにそのままでは実行できませんでした、、
解決方法
サンプルコードのスクリプトを少し書き換えてみました^^
#!/bin/bash
sudo apt install -y apache2
#!/bin/bash
sudo apachectl start
#!/bin/bash
isExistApp=`pgrep apache2`
if [[ -n $isExistApp ]]; then
sudo apachectl stop
fi
おわりに
複雑なパイプラインが組めてなんだか嬉しかったです