私は GIT リポジトリの 2 つのコピーを持っており、それらを「オリジン」と「バックアップ」と呼びましょう。私が達成したいことは次のとおりです。私のチームは常に変更を「origin」にプッシュして同期し続けていますが、火災が発生して破壊された場合に備えて、重複コピーとして機能する別の地理的な場所に「origin」のコピーがあることを確認したいと考えています。私のオフィスのすべて。これを実現するために、クラウドでホストされている git リポジトリの同一のコピーを保持しています。
現在、Jenkins と Windows バッチ スクリプトの組み合わせを使用して、これらのリポジトリの同期を維持する方法を見つけようとしています。バッチ スクリプトは実際の同期操作を担当し、Jenkins は同期操作が定期的に実行されるようにします。複製されたコピーには「バックアップ」という名前が付けられます (既にお察しのとおり)。
問題は、コマンド プロンプトから直接バッチ スクリプトを実行すると、希望どおりに実行されることです。しかし、Jenkins ジョブを介してバッチ スクリプトを実行しようとすると、 「バックアップ」リポジトリのユーザー名とパスワードを待ち続けます。「バックアップ」リポジトリの資格情報は既に Windows 資格情報マネージャーに保存されており、バッチ スクリプトを直接実行すると資格情報を使用できますが、Jenkins 経由で実行しようとすると、そうではありません。
私はグーグルを試してみました.SOを検索して、jenkinsフォーラムで何かを見つけることができるかどうかを確認するために多くの検索を行いましたが、これまでのところ、役立つものは何も見つかりませんでした.
これが役に立つかどうかはわかりませんが、参考までに私のバッチ スクリプトを以下に示します。
@echo OFF
pushd K:
pushd "K:\my-git-workspace\mygit-repo"
echo Pulling "master" from origin
git pull origin master
echo Pulling "master" from backup
git pull backup master
echo Pushing "master" to backup
git push backup master
echo Pushing "master" to origin
git push origin master
echo Pulling all tags from origin
git pull --tags origin
echo Pulling all tags from backup
git pull --tags origin
echo Pushing all tags to backup
git push --tags backup
echo Pushing all tags to origin
git push --tags origin
popd
Windows コマンド プロンプトから表示される GIT 構成を次に示します (user.name と user.email をダミーの値に置き換えました)。
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.email=myemail@domain.com
user.name=My Name
credential.helper=wincred
これは、Jenkins から (git config -l) を実行したときに得られる GIT 構成です。
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.email=myemail@domain.com
user.name=My Name
credential.helper=wincred
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
core.hidedotfiles=dotGitOnly
remote.origin.url=//networkrepo/git/repo
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.backup.url=http://cloud-hosted-git-repo/repo.git
remote.backup.fetch=+refs/heads/*:refs/remotes/backup/*
gui.wmstate=zoomed
gui.geometry=584x210+321+316 304 192
credential.helper=store
user.email=myemail@domain.com
user.name=My Name
言うまでもなく、どんな助けも大歓迎です。
乾杯。