2017-11-28 9 views
1

私はgitignoreファイルを持つgitプロジェクトをチェックアウトするジェンキンスパイプラインを持っています。 これは私のワークスペースの内容です:gitでファイルを無視します.gitignoreで定義しません。

file1.txt 
src/ 
.gitignore 

今ジェンキンスパイプラインは、ワークスペース内のスクリプトをロードします:

file1.txt 
src/ 
.gitignore 
script.sh 

この動作は、多くのプロジェクトのために発生します。各プロジェクトの.gitignorescript.shを配置することはできません。 (私はそれが可能だ知っているが、一時的な解決策としてこれを参照してください):

たちはgitのを教えてくれますどの当社のパイプライン内で実行することができ、いくつかのgitコマンドがあります: script.shを無視する(+にある他のものを無視します.gitignore)。

私たちのスクリプトはgit commitsを実行するので、.gitignoreを編集することなく、そのスクリプトをリポジトリに保存しないようにします。

答えて

0

コミットする前に次のスクリプトを実行できます。

echo script.sh >> .git/info/exclude 

.git /情報/ちょうど.gitignoreよう行為を排除し、それが唯一のローカルリポジトリに影響します - このファイルへの変更をコミットすることはできません。

+0

の下部にありますか? – DenCowboy

+0

Jenkinsのビルドの一部としてスクリプトを実行する必要があります –

+0

独自の.git/infoパスを作成すると動作します。私のジェンキンスワークスペースでこれを自分で作成しなければならない理由は何ですか?私はそれをローカルにクローンするだけです。 – DenCowboy

0

スパースチェックアウトを行う可能性があります。これは、この作業環境に含めるコンテンツをローカルで定義するために使用されます。つまり、リモートには決して影響しません。

あなたはファイルが存在した後、シェルスクリプト(など)から次のコマンドを実行する必要があると思います:

git config core.sparsecheckout true 
echo "!script.sh" > .git/info/sparse-checkout 
echo "/*" >> .git/info/sparse-checkout` 

「/ *」が含まれる間に、第2のラインは、Gitの活動からscript.shを除外残りのファイル。

単一の ">"は、ファイルの内容を上書きすることを意味します。追加する場合はdoubleを使用します。まばらなチェックアウトのための

ドキュメントは、私がチェックアウトした後、地元のチェックアウトした後ではなく、ジェンキンスでファイルを参照してくださいthis page

関連する問題