Windowsで動いているJenkins サーバをLinux(今回はAWSのAmazon Linux)に移行することがあり、そのやり方を記します。
動機
もともとオンプレで使っていたWindows上のJenkinsをクラウドに移行させようとなり、どうせならpipelineでDockerを動かしているしLinuxの方が親和性よいのではということで移行を決定しました。
Steps
- 必要なソフトウェアのインストール
- 稼働中のJenkinsサーバからデータの移行
- Jenkinsfileの編集
- 稼働開始
1. 必要なソフトウェアのインストール
以下のソフトウェアをインストールします。今回はバックエンドを.NETベースで作っていることと、フロントエンドのビルドもJenkins上で行っているので.NETやNode.jsなんかも入れます。(各バージョンは適宜変えてください。セキュリティの問題とか色々あるので)
ソフトウェア | インストールコマンド |
Java |
|
Jenkins |
※でWebUI(http://<ip address or DNS of the host>:8080)からJenkinsを初期化 |
Git |
|
Docker/docker-compose |
|
.NET |
|
Node.js |
その後、 コマンド”which node”でnodeがどこにインストールされたか確認。 nodeファイルをjenkinsのホームディレクトリ(/var/lib/jenkins)にコピー。 nodeファイルの所有とグループをjenkinsに変更。 jenkinsホームディレクトリ下のnodeファイルへのpathを指定する環境変数を追加。 |
稼働中のJenkinsサーバからデータの移行
基本的には稼働中のJenkinsのホームディレクトリ下のファイルを新しいJenkinsのホームディレクトリに移すだけです。デフォルトのホームディレクトリは:
- Windows: C:\Program Files (x86)\Jenkins
- Linux: /var/lib/jenkins
移行するデータ | 移す場所・やり方 |
プラグイン |
C:\Program Files (x86)\Jenkins\plugins → /var/lib/jenkins/plugins |
ジョブ |
C:\Program Files (x86)\Jenkins\jobs → /var/lib/jenkins/jobs 移した先のowner/groupがjenkinsなのを確認。 |
クレデンシャル |
移行先のJenkinsを止める(service jenkins stop) 移行先のをidentity.key.encを削除(rm identity.key.enc) secret*とcredentioal.xmlをコピー
移行先のJenkinsを起動 (service jenkins start) その他環境変数の設定等は移行元のUIからコピペする。 |
Jenkinsfileの編集
WindowsからLinuxへの移行なので最低以下の変更は必要になると思います。
- “bat”使っているところを”sh”に変更
- パスのデリミタを”¥¥”から”/”に変更
- “powershell”使っているところを”sh”に変更(powershellがJenkinsで有効な場合は不要)
- ファイルパスの大文字小文字
以上で移行作業は完了です。移行先のJenkinsを起動して動作することを祈りましょう。