2016-10-19 21 views
4

gitlab CIランナーを使用してコードをテストし、いくつかのファイルを生成しています。私は、生成されたファイルをCIランナー経由でgitlabリポジトリにプッシュしたいだけです。それを行う方法はありますか?ファイルをCIランナー経由でgitlab-ciにプッシュ

答えて

3

探している機能をアーティファクトといいます。成果物は、成功したときにビルドに添付されるファイルです。

はあなたの.gitlab-ci.ymlでこれを入れアーティファクトを有効にするには:

artifacts: 
    paths: 
    - dir/ 
    - singlefile 

このdirディレクトリとバックGitLabにファイルsinglefileをアップロードします。

+1

しかし、私は本当にソースファイルとしてリポジトリにファイルをプッシュしたいと思います。 – Venkat

+1

@VenkatGanしかし、なぜですか?ランナーと共に何かをリポジトリにプッシュすると、ランナーをもう一度起動するだけです。これにより、無限ループが発生します。 – Fairy

+5

はい、無限ループを開始します。しかし、私がランナーを介してコミットするとき、私は '[skip ci]'キーワードを使用します。このように私は無限ループを排除することができます。 – Venkat

4

gitlabでSSHキー

生成 - > [プロファイルの設定] - > [SSHキー - >SSHという名前gitlabで変数 SSHキーストアを生成した後、それを

を生成します

- > [プロジェクトの設定 - >変数 - >で

可変.gitlab-ci.yml以下の行を追加します。

before_script: 
    - mkdir -p ~/.ssh 
    - echo "$SSH" | tr -d '\r' > ~/.ssh/id_rsa 
    - chmod 600 ~/.ssh/id_rsa 
    - ssh-keyscan -H 'Git_Domain' >> ~/.ssh/known_hosts 

その後、このjsコードを使用してファイルをリポジトリにプッシュしました。

var child_process = require("child_process"); 
child_process.execSync("git checkout -B 'Your_Branch'"); 
child_process.execSync("git remote set-url origin Your_Repository_Git_Url"); 
child_process.execSync("git config --global user.email 'Your_Email_ID'"); 
child_process.execSync("git config --global user.name 'Your_User_Name'"); 
for (var i=0;i<filesToBeAdded.length;i++) { 
      child_process.execSync("git add "+filesToBeAdded[i]); 
} 
var ciLog = child_process.execSync("git commit -m '[skip ci]Automated commit for CI'"); 
var pushLog = child_process.execSync("git push origin Your_Branch"); 

[CIをスキップ]はコミットメッセージの中で最も重要です。それ以外の場合は、CIプロセスの無限ループを開始します。

関連する問題