デベロッパーからプロダクションまでうまくいくジェンキンの設定があります。ここ
まずdependencies.ymlの構成では、この開発者とジェンキンスによってカスタムモジュールリポジトリ
repositories:
- modules:
type: chain
using:
- localModules:
type: local
descriptor: "${application.path}/../[module]/conf/dependencies.yml"
artifact: "${application.path}/../[module]"
- repoModules:
type: http
artifact: "http://mynexus/nexus/content/repositories/releases/com/myorg/[module]/[revision]/[module]-[revision].zip"
contains:
- com.myorg -> *
用でモジュールが存在していない場合はどうかを確認するために、同じリポジトリにまず検索し、になりましたアーティファクトをダウンロードするためのネクサスリポジトリ。ジェンキンスさんに私のモジュールを構築するには
私はあなたが各ジェンキンスビルドにネクサスにあなたのモジュールをプッシュすることができます。このスクリプトでは、この
#!/bin/bash
APPLICATION="myModule"
PLAY_PATH="/usr/local/play"
set –xe
$PLAY_PATH/play deps --sync
$PLAY_PATH/play build-module --require 1.2.3
VERSION=`grep self conf/dependencies.yml | sed "s/.*$APPLICATION //"`
echo "Sending $APPLICATION-$VERSION.zip to nexus repository"
curl --request POST --user user:passwd http://mynexus/nexus/content/repositories/releases/com/myorg/$APPLICATION/$VERSION/$APPLICATION-$VERSION.zip -F "[email protected]/$APPLICATION-$VERSION.zip" --verbose
のようなカスタムshスクリプトを使用します。これは私がしていることではありません。私はジェンキンスリリースモジュールを使用して、リリースをビルドするときにのみプッシュします。リリースでは、私は
#!/bin/bash
APPLICATION="myModule"
PLAY_PATH="/usr/local/play"
set –xe
if [ -z "$RELEASE_VERSION" ]
then
echo "Parameter RELEASE_VERSION is mandatory"
exit 1
fi
if [ -z "$DEVELOPMENT_VERSION" ]
then
echo "Parameter DEVELOPMENT_VERSION is mandatory"
exit 1
fi
echo "Release version : $RELEASE_VERSION"
echo "Development version : $DEVELOPMENT_VERSION"
VERSION=`grep self conf/dependencies.yml | sed "s/.*$APPLICATION //"`
if [ "$RELEASE_VERSION" != "$VERSION" ]
then
echo "Release version $RELEASE_VERSION and play version $VERSION in dependencies.yml does not match : release failed"
exit 1
fi
REVISION=`svnversion .`
echo "Tag svn repository in revision $REVISION with version $VERSION"
svn copy -m "Version $VERSION" -r $REVISION http://mysvn/myRepo/$APPLICATION/trunk/ http://mysvn/myRepo/$APPLICATION/tags/$VERSION
echo "svn tag applied"
echo "Sending $APPLICATION-$VERSION.zip to nexus repository"
curl --request POST --user user:passwd http://mynexus/nexus/content/repositories/releases/com/myorg/$APPLICATION/$VERSION/$APPLICATION-$VERSION.zip -F "[email protected]/$APPLICATION-$VERSION.zip" --verbose
echo "$APPLICATION-$VERSION.zip sent to nexus repository"
echo "Update module to version $DEVELOPMENT_VERSION"
sed -i "s/self\(.*\)$VERSION/self\1$DEVELOPMENT_VERSION/g" conf/dependencies.yml
svn commit -m "Version $DEVELOPMENT_VERSION" conf/dependencies.yml
svn update
echo "Version $DEVELOPMENT_VERSION créée"
このスクリプトは、私たちのSVNリポジトリにタグをつけ、特別なスクリプトを持って、NEXUSとdependencies.ymlファイルを更新するためのモジュールを押してください。
このジェンキンでは、リリースされていないモジュールのローカルバージョンに依存するアプリケーションをビルドすることができ、その後、nexusリポジトリからモジュールartifcatをダウンロードすることでアプリケーションをビルドできます。これは開発者にとっても同じです
私は、この技術が私のセットアップの違いを作るために起こっていると思います。私はまだそれを試す時間がなかったので、私はまだそれを受け入れていないのです。フォローアップの質問:localModules repo configは、ビルド作業領域が隣接するディレクトリにない典型的なJenkinsセットアップと同じように見えません。私はあなたのJenkinsがビルドしたところからdev(バージョンとは対照的に)バージョンの依存関係を取得するところから少し混乱しています。 – Ladlestein
jenkinsでは私は1つのワークスペースしか持たず、すべてのモジュールディレクトリはdevにあるように隣接しています。そうでない場合は、モジュールを構築するたびに、ネクサスにアーチファクトを公開する必要があります。スナップショットのバージョニングはセットアップと使用が面倒です –