LoginSignup
0
1

More than 5 years have passed since last update.

JenkinsでGitをポーリングしてクラウドストレージにアップロードする

Posted at

Gitを定期的に監視して、変更があったブランチを全てニフティクラウドの、クラウドストレージに上げてみたいと思います。

ニフティクラウドの設定

  • 適当な名前のバケットを作成しておきます
バケット名
test-app

s3cmdの設定

Jenkinsからニフクラストレージを操作するために、s3cmdというツールを使います。
s3cmdはAwsSS3のツールですが、ニフティクラウドでも互換性があって使えるみたいですね。

  • インストール
apt-get install s3cmd
  • 設定
s3cmd --configure
アクセスキーと、シークレットーキーを入力
vi ~/.s3cfg
以下3行を変更
host_base = ncss.nifty.com
host_bucket = %(bucket)s.ncss.nifty.com
signature_v2 = True

Jenkinsの設定

  • プラグインの管理より、GIT pluginを入れておきます

ジョブの作成

  • ソースコード管理でGitを選択
  • Repository URL、Credentialsを入力
  • 全てのリポジトリを対象にしたいため、 Branch Specifierは「*」を指定しておきます。
  • ビルド・トリガのSCMをポーリングにチェックを入れ、スケジュールに以下のように入力します
H/5 * * * *

これで、5分毎にgitを監視してくれます。

  • ビルド欄より「シェルの実行」を選択し、以下のように入力します
#!/bin/bash
for remote_branch in `git branch -a | grep remotes`; do
  remote_name="$(echo -n "$remote_branch" | cut -d/ -f2)"
  branch_name="$(echo -n "$remote_branch" | cut -d/ -f3-)"
  git checkout -b $branch_name $remote_name/$branch_name
  git archive --format=tar HEAD | gzip > module.tar.gz
  path_name=${branch_name/\//_}
  s3cmd put module.tar.gz s3://test-app/$path_name/module.tar.gz
  rm -f module.tar.gz
done

全てのブランチをアーカイブして、クラウドストレージにアップロードします。
実行されると、クラウドストレージの作成したバケットの中にブランチ名と同じ名前のフォルダが作成されます。
フォルダの中にアーカイブされたモジュールが格納されています。

※クラウドストレージのフォルダ名には「/」が使えないみたいなので、「_」に変更してます。
 例 fix/branch ⇒ fix_branch

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