※本レポジトリは2023年3月末をもってメンテナンスを終了予定です。最新のOpenShift確認バージョンは4.11です。
項目 | 対応ソフトウェア・バージョン |
---|---|
Implementation | Spring Boot, PostgreSQL |
Java version | 8, 11 (CIでテスト済み) |
PostgreSQL version | 13 |
動作確認したOpenShiftバージョン | 4.11 |
ファイル | 説明 |
---|---|
Jenkinsfile |
Jenkinsのパイプラインの実行定義 |
etc/Dockerfile_jenkins_agent |
カスタムのJenkins agentを作成するためのDockerfile |
etc/testdata.sql |
アプリケーションがテストに利用するテストデータ |
openshift/application-build.yaml |
アプリケーションコンテナイメージの作成に必要なBuildConfigなどのマニフェストファイル |
openshift/application-deploy.yaml |
アプリケーションをデプロイするためのマニフェストファイル |
openshift/custom-jenkins-agent.yaml |
カスタムのJenkins agentを作成するために利用するBuildConfigなどのマニフェストファイル |
pox.xml |
アプリケーションの依存ライブラリ等を記述したファイル |
src/* |
アプリケーションのコード |
// Java version
$ java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
$ mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
// Start PostgreSQL with Docker
$ docker run --name my-pg -e POSTGRES_USER=freelancer -e POSTGRES_PASSWORD=password -e POSTGRES_DB=freelancerdb_test -d -p 5432:5432 postgres:13
// Connect PostgreSQL and load data
// You can load test data by using etc/testdata.sql
$ psql -f etc/testdata.sql -h localhost -U freelancer -d freelancerdb_test
Password for user postgres:
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
// Test
$ mvn clean test
...
Results :
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38.428 s
[INFO] Finished at: 2021-05-31T00:04:59+09:00
[INFO] ------------------------------------------------------------------------
Method | Endpoint |
---|---|
GET | /freelancers |
GET | /freelancers/{freelancerId} |
$ export FREELANCER_URL=http://$(oc get route freelancer-service -n $FREELANCER4J_PRJ -o template --template='{{.spec.host}}')
$ curl -X GET "$FREELANCER_URL/freelancers"
[
{
"freelancerId": "1",
"firstName": "Ken",
"lastName": "Yasuda",
"email": "ken.yasuda@example.com",
"skills": [
"ruby",
"php",
"mysql"
]
},
{
"freelancerId": "2",
"firstName": "Tadashi",
"lastName": "Komiya",
"email": "tadashi.komiya@example.com",
"skills": [
"c#",
"windows",
"sqlserver"
]
},
{
"freelancerId": "3",
"firstName": "Taro",
"lastName": "Goto",
"email": "taro.goto@example.com",
"skills": [
"ruby",
"postgresql",
"java"
]
}
]
$ curl -X GET "$FREELANCER_URL/freelancers/1"
{
"freelancerId": "1",
"firstName": "Ken",
"lastName": "Yasuda",
"email": "ken.yasuda@example.com",
"skills": [
"ruby",
"php",
"mysql"
]
}
See this document.