1
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?

作業ファイルをJenkinsで定期的にミラリーングして、作業ファイルのバックアップを取る

Last updated at Posted at 2024-11-03

概要

Jenkisnを利用して作業ファイルを定期的にサーバーに保存します。
作業PCが不意に壊れても、作業ファイルはサーバーに退避されているので一命をとりとめることができます。
ファイルの定期保存程度ならWindowsタスクに登録するのも糸つの手段ですが、サーバーで自動処理を管理することにより再度環境を整える場合などは簡潔になります

経緯

短期間の間に立て続けて作業PCが壊れて、悲しみを背負うことになりました。
その際に復旧までのレイテンシを短くするためにサーバー構築の本腰を入れようかなと思いいたりまして、最近はちょっと趣味にもなりつつあるのですが、作業ファイルの自動保存はまぁメンタルに結構よかったので皆さんに紹介したいなと考えた所存です。

作業環境

注意事項

事故防止のために冗長となりますが、先に記述しておきます。
ファイルのコピー先を間違えると危険ですので慎重に行ってください。

以下の作業の部分となります

  • GitBucketのリポジトリのファイルを変更
  • 適宜環境に合わせてコピー元とコピー先のフォルダを設定してください
AutomationPipeline\worker\cacheConfig.json
{
    "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

Jenkins

GitBucket

クライアント

Java

  • 公式サイトから最新のJDKをダウンロードしてインストール

Paython

  • 公式サイトから最新のPythonをダウンロードしてインストール

環境設定

JenkinsのJobのリポジトリをGitBucketに作成

image.png

  • ローカルで起動しているサービスなので外部に公開しないのであれば、Publicで問題ないです
    image.png

image.png

  • リポジトリ作成後、任意の場所に空のディレクトリを作成し「Open Git Bush here」でgit bashを起動してください
    image.png

ローカルリポジトリを初期化

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のリポジトリのファイルを変更
適宜環境に合わせてコピー元とコピー先のフォルダを設定してください

AutomationPipeline\worker\cacheConfig.json
{
    "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」としてください。分かる方は適宜変更していください
    image.png

image.png

  • ノード一覧に追加されます
    image.png

  • 一覧からworkerノードを開くとエージェント起動用のスクリプトが表示されます
    image.png

  • 表示されたスクリプトを実行してもエージェントは起動できますが、サービスとして起動した方が何かと都合がよいためサービスとして起動します

  • AjentService

  • 上記リンクを一式クライアントPCにダウンロードし、setting.iniに表示されている各情報を転記し、install.batを実行してください

  • 梱包されているexeはwinswを使用しています

  • 無事起動できれば、以下のようになります
    image.png

JenkinsのJobの作成

  • 新しいジョブを作成します

  • ダッシュボード>新規ジョブ作成
    image.png

  • Multobranch Piplineを作成してください

  • gitなどのソース管理サービスからジョブを作成する機能です

  • 名称は任意です、今回は「AutomationPipeline」とします
    image.png

image.png

image.png

  • 事前に、GitBucketに作成したファイルミラーリングスクリプトのリポジトリを選択してください
    ※Githubのリポジトリでも稼働しますが、GithubのApiの制限でJobの実行に待ち時間が発生します

image.png
※DNSサーバを参照していない場合、mDNSするためUbuntuからLAN内の名前解決をする場合、サーバー名の後に[.local]が必要です。
例:http://portableserver.local:8083/root/AutomationPipeline

image.png

「Scan Multibranch Pipeline Now」を実行すると自動処理が開始されます。
image.png

結果を確認します
image.png

image.png

以上

補足

Jenkisでの自動処理は上記の内容となります。
スクリプトの内容で自動処理の加々美が変わります。
基本的にはリポジトリ内のJenkinsファイルが処理内容となります。

各ノードのスクリプトコンソールでコマンドが有効か確認できます。

image.png

image.png

1
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
1
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?