ジョブの構成
ジョブは、下の画像のようにアプリケーションをビルドしてnexusにデプロイする構成としています。ジョブ定義
- resource_typesで、maven-resourceを定義します。
- resourcesは、resource_typesで定義したmaven-resourceの設定(urlや接続情報やartifactなど)を行います。
- jobのtask定義ではリポジトリにデプロイする対象をoutputsで定義します。
- put定義では、デプロイ対象の成果物(jarとpom)を定義します
# maven-resourceの定義
resource_types:
- name: maven-resource
type: docker-image
source:
repository: nulldriver/maven-resource
tag: latest
resources:
- name: app
type: git
source:
uri: http://gitbucket:8080/git/root/sample-app.git
# maven-resourceのリソース定義
# urlや接続情報などを設定します
- name: nexus
type: maven-resource
source:
url: http://nexus:8081/repository/maven-releases/
snapshot_url: http://nexus:8081/repository/maven-snapshots/
artifact: sample:sample-app:jar
username: admin
password: admin123
jobs:
- name: build
plan:
- get: app
trigger: true
- task: build
config:
platform: linux
image_resource:
type: docker-image
source:
repository: maven
tag: '3.5.4-jdk-8'
inputs:
- name: app
# putでmavenリポジトリに成果物をデプロイできるようにするためのoutputsの定義
outputs:
- name: target
run:
path: bash
args:
- -c
- |
cd app
mvn clean package -D maven.repo.local=/tmp/.m2/repository
cp -r target ..
# jarとpomを指定してリポジトリにデプロイします
- put: nexus
params:
file: target/sample-app*.jar
pom_file: app/pom.xml
ジョブの実行と結果の確認
ジョブを実行すると、下のようなログが出力されてリポジトリに成果物がアップされていることがわかります。
[INFO] --- maven-deploy-plugin:2.7:deploy-file (default-cli) @ standalone-pom ---
Downloading: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/maven-metadata.xml
Uploading: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/sample-app-1.0.0-20180715.115944-1.jar
Uploaded: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/sample-app-1.0.0-20180715.115944-1.jar (1.8 kB at 8.4 kB/s)
Uploading: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/sample-app-1.0.0-20180715.115944-1.pom
Uploaded: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/sample-app-1.0.0-20180715.115944-1.pom (403 B at 5.2 kB/s)
Downloading: http://nexus:8081/repository/maven-snapshots/sample/sample-app/maven-metadata.xml
Uploading: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/maven-metadata.xml
Uploaded: http://nexus:8081/repository/maven-snapshots/sample/sample-app/1.0.0-SNAPSHOT/maven-metadata.xml (766 B at 9.9 kB/s)
Uploading: http://nexus:8081/repository/maven-snapshots/sample/sample-app/maven-metadata.xml
Uploaded: http://nexus:8081/repository/maven-snapshots/sample/sample-app/maven-metadata.xml (276 B at 4.1 kB/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
nexusでも成果物がアップされていることが確認できます。