はじめに
記載情報は CI/CD に関連します。
実務上関わった環境・機能を身近な情報としてお届けしたく、投稿をはじめました。
各学習上、お金のかからない方法を選択していきます。
以下の手順を実施することで、ライブラリ開発者が Jar の Library を作り、Azure Artifacts を利用して成果物を配布する工程を模倣します。
対象者と関連環境・機能
この記事は下記のような人を対象にしています。
- CI/CD 初学者
- プログラミング初学者
- 駆け出しエンジニア
記載している環境・機能は以下です。
- Java
- Spring Tool Suite 4
- gradlew
- Azure DevOps
- Azure Artifacts
準備
No | 参照 URL |
---|---|
1 | CI/CD とは? |
2 | Azure Devops (Artifacts) を無償、無料で使う |
3 | Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用 |
4 | Spring Boot Web アプリケーションを作る |
ライブラリ開発者のつもりで Library 作成
「Hello LibraryJar!」と出力する Library 想定のソースです。
Spring Web サンプルアプリからの呼び出しを行うことを考えています。
(内容紹介は「Hello LibraryJar!」と出力するだけなので、省略させていただきます。)
ソース
本作業実施後の状態となります。
library-jar
起動可能な Jar
Library 想定ではあるのですが稼働確認しながら進める都合上、起動可能にしています。
gradlew による jar 作成か、jar コマンドによる jar 作成を行います。
(やっている内容は同等となるためどちらでも OK。出力場所が異なるのでご注意。)
gradlew による jar 作成
> cd \library-jar
library-jar> gradlew build
BUILD SUCCESSFUL in 3s
2 actionable tasks: 1 executed, 1 up-to-date
library-jar> java -jar ./build/libs/library-jar.jar
=========================================
Hello LibraryJar!
=========================================
jar コマンドによる jar 作成
> cd \library-jar\bin
library-jar\bin> jar -cvfm ../library-jar.jar ../manifest.mf ./com/library/\*.class
st.mf ./com/library/\*.class
マニフェストが追加されました
com/library/LibraryJar.classを追加中です(入=1193)(出=645)(45%収縮されました)
library-jar\bin> java -jar ../library-jar.jar
=========================================
Hello LibraryJar!
=========================================
Azure Artifacts へパブリッシュ
gradlew で、publishing タスクを実行することで Azure Artifacts へパブリッシュを行います。
順番としては大きく以下3点。
- 「maven-publish プラグインを利用することで、gradle publish コマンドを利用できるようする
- 本記事では gradlew で publish コマンドを実行
- 結果 publishing タスクが処理される
ローカル環境からのパブリッシュ時には「vstsMavenAccessToken」というトークンにて認証を行いますが、こちらは各自で設定頂く必要があります。
publish タスク
build.gradle
plugins {
id 'java'
id 'maven-publish'
}
・・・略
publishing {
publications {
myPublication(MavenPublication) {
groupId 'LibraryJar-groupId'
artifactId 'library-jar'
version '0.0.2' // Your package version
artifact 'library-jar.jar' //Example: *./target/myJavaClasses.jar*
}
}
// Repositories *to* which Gradle can publish artifacts
repositories {
maven {
url 'https://pkgs.dev.azure.com/SecOrgOad3/cicd-training-env/_packaging/cicd-training-env-feed-001/maven/v1' ※準備した環境にそろえて記載します。
credentials {
username "cicd-training-env-feed-001"
password System.getenv("SYSTEM_ACCESSTOKEN") != null ? System.getenv("SYSTEM_ACCESSTOKEN") : vstsMavenAccessToken ※各自で設定頂く必要があります。gradle.propertiesご参照。
}
}
}
}
gradle.properties の vstsMavenAccessToken を設定
以下の通り空にしてありますので、適宜トークンの取得と設定が必要です。
gradle.properties
vstsMavenAccessToken=
Azure Artifacts へのパブリッシュということで、許可すべき対象は「Packaging の Read & write」となります。
(うまい事行かない場合は、一時的なフルアクセス許可で動きを見てからの切り分けも有効です。)
gradlew で publish タスクを実行
library-jar>gradlew publish
BUILD SUCCESSFUL in 9s
2 actionable tasks: 2 executed
関連作業
- CI/CD とは?
- Azure Devops (Artifacts) を無償、無料で使う
- Spring Tool Suite 4 インストール、Spring Initializr 、gradlew の利用
- Spring Boot Web アプリケーションを作る
- Jar の Library を作り、Azure Artifacts を利用して成果物を配布する
- ライブラリ開発者より指定されたバージョンを利用してアプリを作る
- アプリを Docker 、Docker Compose でコンテナを動かしてみる
- Azure Devops (PileLines) を無償、無料で使う
- Azure Devops (PileLines) でテスト、ビルド、イメージプッシュをする
- minikube(kubernetes) でコンテナを動かしてみる
- nginx のコンテナを Docker や minikube(kubernetes) で動かし、静的コンテンツ公開工程を模倣