概要
Jenkisnを利用して作業ファイルを定期的にサーバーに保存します。
作業PCが不意に壊れても、作業ファイルはサーバーに退避されているので一命をとりとめることができます。
ファイルの定期保存程度ならWindowsタスクに登録するのも糸つの手段ですが、サーバーで自動処理を管理することにより再度環境を整える場合などは簡潔になります
経緯
短期間の間に立て続けて作業PCが壊れて、悲しみを背負うことになりました。
その際に復旧までのレイテンシを短くするためにサーバー構築の本腰を入れようかなと思いいたりまして、最近はちょっと趣味にもなりつつあるのですが、作業ファイルの自動保存はまぁメンタルに結構よかったので皆さんに紹介したいなと考えた所存です。
作業環境
- クライアントPC Windws 11
- Java
- python
- git - サーバー Ubuntu 24.04
- Docker
- DockerCompose
注意事項
事故防止のために冗長となりますが、先に記述しておきます。
ファイルのコピー先を間違えると危険ですので慎重に行ってください。
以下の作業の部分となります
- GitBucketのリポジトリのファイルを変更
- 適宜環境に合わせてコピー元とコピー先のフォルダを設定してください
{
"Assets":{
"from":"D:\\Work\\Container\\Assets",
"to": "\\\\portableserver\\AirBase\\hanger\\Container\\Assets"
},
"Products":{
"from":"D:\\Work\\Container\\Products",
"to": "\\\\portableserver\\AirBase\\hanger\\Container\\Products"
},
"WorkSpace":{
"from":"D:\\Work\\Container\\WorkSpace",
"to": "\\\\portableserver\\AirBase\\hanger\\Container\\WorkSpace"
}
}
Source
・おすすめのサーバーサービス
server
・Jenkinsエージェント
agent
・ファイルミラーリングスクリプト
script
環境構築
サーバー
Docker及びDockerCompose
- おすすめのサーバーサービスからSetupを起動してインストールしてしてください
Jenkins
- おすすめのサーバーサービスからJenkisnsをインストールしてください
GitBucket
- おすすめのサーバーサービスからGitBucketをインストールしてください
クライアント
Java
- 公式サイトから最新のJDKをダウンロードしてインストール
Paython
- 公式サイトから最新のPythonをダウンロードしてインストール
環境設定
JenkinsのJobのリポジトリをGitBucketに作成
ローカルリポジトリを初期化
touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin http://portableserver:8083/git/root/AutomationPipeline.git
git push -u origin main
サンプル用のリモートリポジトリのURLの参照を追加
git remote add upstream https://github.com/koiusa/AutomationPipeline.git
リモートリポジトリ参照を確認
$ git remote -v
origin http://portableserver:8083/git/root/AutomationPipeline.git (fetch)
origin http://portableserver:8083/git/root/AutomationPipeline.git (push)
upstream https://github.com/koiusa/AutomationPipeline.git (fetch)
upstream https://github.com/koiusa/AutomationPipeline.git (push)
リモートリポジトリ参照情報を取得
$ git fetch upstream
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 17 (delta 1), reused 12 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (17/17), 7.35 KiB | 278.00 KiB/s, done.
From https://github.com/koiusa/AutomationPipeline
* [new branch] main -> upstream/main
* [new branch] worker -> upstream/worker
リモートリポジトリの更新をTrack
git branch -u upstream/worker
作成したGitBucketのリポジトリにプッシュ
git checkout main
git checkout --no-track -b worker refs/heads/main
git merge upstream/worker --allow-unrelated-histories
git push origin refs/heads/worker --set-upstream --verbose
GitBucketのリポジトリのファイルを変更
適宜環境に合わせてコピー元とコピー先のフォルダを設定してください
{
"Assets":{
"from":"D:\\Work\\Container\\Assets",
"to": "\\\\portableserver\\AirBase\\hanger\\Container\\Assets"
},
"Products":{
"from":"D:\\Work\\Container\\Products",
"to": "\\\\portableserver\\AirBase\\hanger\\Container\\Products"
},
"WorkSpace":{
"from":"D:\\Work\\Container\\WorkSpace",
"to": "\\\\portableserver\\AirBase\\hanger\\Container\\WorkSpace"
}
}
変更内容をGitBucketのリポジトリに反映
git add .
git commit -m "何かコメント"
git push origin refs/heads/worker --set-upstream --verbose
JenkinsのAgentの起動
- Jenkinsのワーカーノードを作成します
- ダッシュボード>ビルド実行状態>New Node
- ノード名は任意ですが、今回使用するサンプルのファイルミラーリングスクリプトは名称「Worker」を前提としているため「Worker」としてください。分かる方は適宜変更していください
-
表示されたスクリプトを実行してもエージェントは起動できますが、サービスとして起動した方が何かと都合がよいためサービスとして起動します
-
上記リンクを一式クライアントPCにダウンロードし、setting.iniに表示されている各情報を転記し、install.batを実行してください
-
梱包されているexeはwinswを使用しています
JenkinsのJobの作成
-
新しいジョブを作成します
-
Multobranch Piplineを作成してください
-
gitなどのソース管理サービスからジョブを作成する機能です
- 事前に、GitBucketに作成したファイルミラーリングスクリプトのリポジトリを選択してください
※Githubのリポジトリでも稼働しますが、GithubのApiの制限でJobの実行に待ち時間が発生します
※DNSサーバを参照していない場合、mDNSするためUbuntuからLAN内の名前解決をする場合、サーバー名の後に[.local]が必要です。
例:http://portableserver.local:8083/root/AutomationPipeline
「Scan Multibranch Pipeline Now」を実行すると自動処理が開始されます。
以上
補足
Jenkisでの自動処理は上記の内容となります。
スクリプトの内容で自動処理の加々美が変わります。
基本的にはリポジトリ内のJenkinsファイルが処理内容となります。
各ノードのスクリプトコンソールでコマンドが有効か確認できます。