0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Jenkins初心者がCodePipelineのチュートリアルをUbuntuでやろうとしたら苦しかった話

Posted at

はじめに

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のプラグインを追加する

チュートリアルを行うにはプラグインを追加する必要があるので、それを追加します。

  1. jenkinsの管理 > pluginの管理 > available pluginを選択
  2. 検索ボックスにAWS CodePipelineと入力して表示されるものをインストール
  3. ダウンロードして再起動後にインストールを選択
  4. インストール完了後、実行中のジョブがなければ Jenkins を再起動するを選択

おまけ:ジョブの作成

セットアップではありませんが、ジョブの作成もさっぱりわからなかったので方法をメモします。

  1. ダッシュボードで「新規ジョブの作成」ボタンをクリック

image.png
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のエラーが出てしまい、うまくインストールできませんでした、、、

解決方法

こちらを参考にしてインストールすることができました!

  1. touch install-code-deploy-ubuntu22-ec2.shを入力して、新規ファイルを作成
  2. cat > install-code-deploy-ubuntu22-ec2.shで作成したファイルを開く
  3. 以下の内容をペースト
#!/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
  1. ctrl + dでcatを閉じる
  2. chmod u+x install-code-deploy-ubuntu22-ec2.shで作成したファイルの権限を変更
  3. ./install-code-deploy-ubuntu22-ec2.shで実行
  4. sudo service codedeploy-agent statusでCodeDeployエージェントが動いていることを確認

サンプルコードのスクリプトが実行できなかった

AWSから提供されているサンプルコードですが、Ubuntuイメージでやろうとしたためにそのままでは実行できませんでした、、

解決方法

サンプルコードのスクリプトを少し書き換えてみました^^

install_dependencies
#!/bin/bash
sudo apt install -y apache2
start_server
#!/bin/bash
sudo apachectl start
stop:server
#!/bin/bash
isExistApp=`pgrep apache2`
if [[ -n  $isExistApp ]]; then
    sudo apachectl stop        
fi

おわりに

複雑なパイプラインが組めてなんだか嬉しかったです:relaxed:

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?