66
77jobs :
88 build_pr_30 :
9-
109 runs-on : ubuntu-latest
1110 strategy :
1211 matrix :
1312 java : [ 11, 17 ]
1413
14+ # export docker_tag from this job
15+ outputs :
16+ docker_tag : ${{ steps.build_image.outputs.tag }}
17+
1518 env :
1619 GENERATORS_VERSION_PROPERTY : " "
1720 MAVEN_USERNAME : ${{ secrets.MAVEN_CENTRAL_USERNAME }}
1821 MAVEN_PASSWORD : ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
22+
1923 steps :
2024 - uses : actions/checkout@v4
2125 name : git checkout 3.0.0
@@ -33,62 +37,77 @@ jobs:
3337 - name : Add Central-Portal snapshot repo to settings.xml
34383539 with :
36- repositories : ' [{"id":"central-portal-snapshots","name":"Sonatype Central Portal snapshots","url":"https://central.sonatype.com/repository/maven-snapshots/","releases":{"enabled":false},"snapshots":{"enabled":true}}]'
37- servers : ' [{"id":"central","username":"${{ secrets.MAVEN_CENTRAL_USERNAME }}","password":"${{ secrets.MAVEN_CENTRAL_PASSWORD }}"}]'
40+ repositories : |
41+ [
42+ {
43+ "id": "central-portal-snapshots",
44+ "name": "Sonatype Central Portal snapshots",
45+ "url": "https://central.sonatype.com/repository/maven-snapshots/",
46+ "releases": { "enabled": false },
47+ "snapshots": { "enabled": true }
48+ }
49+ ]
50+ servers : |
51+ [
52+ {
53+ "id": "central",
54+ "username": "${{ secrets.MAVEN_CENTRAL_USERNAME }}",
55+ "password": "${{ secrets.MAVEN_CENTRAL_PASSWORD }}"
56+ }
57+ ]
3858
3959 - name : preliminary checks
4060 run : |
4161 docker login --username=${{ secrets.DOCKERHUB_SB_USERNAME }} --password=${{ secrets.DOCKERHUB_SB_PASSWORD }}
4262 set -e
43- # fail if templates/generators contain carriage return '\r'
4463 /bin/bash ./bin/utils/detect_carriage_return.sh
45- # fail if generators contain merge conflicts
4664 /bin/bash ./bin/utils/detect_merge_conflict.sh
47- # fail if generators contain tab '\t'
4865 /bin/bash ./bin/utils/detect_tab_in_java_class.sh
4966
5067 - name : Build with Maven
5168 if : ${{ matrix.java != 8 }}
5269 run : |
53- export MY_POM_VERSION=`mvn -Dswagger-codegen-generators-version=1.0.37 -q -Dexec.executable="echo" -Dexec.args='${projects.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec`
54- echo "POM VERSION" ${MY_POM_VERSION}
55- export GENERATORS_VERSION=`sed -n 's/<swagger\-codegen\-generators\-version>\([^\s]*\)<\/swagger\-codegen\-generators\-version>/\1/p' pom.xml`
56- export GENERATORS_VERSION=`echo ${GENERATORS_VERSION} | tr -d '[:space:]'`
57- echo "GENERATORS_VERSION" ${GENERATORS_VERSION}
70+ export MY_POM_VERSION=$(mvn -Dswagger-codegen-generators-version=1.0.37 \
71+ -q -Dexec.executable="echo" -Dexec.args='${projects.version}' \
72+ --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
73+ echo "POM VERSION ${MY_POM_VERSION}"
74+
75+ export GENERATORS_VERSION=$(sed -n 's/<swagger\-codegen\-generators\-version>\([^<]*\)<\/swagger\-codegen\-generators\-version>/\1/p' pom.xml | tr -d '[:space:]')
76+ echo "GENERATORS_VERSION ${GENERATORS_VERSION}"
77+
5878 export GENERATORS_VERSION_PROPERTY=""
59- if [[ ! $MY_POM_VERSION =~ ^.*SNAPSHOT$ ]];
60- then
61- if [[ ! $GENERATORS_VERSION =~ ^.*SNAPSHOT$ ]];
62- then
63- # check release version exists
64- export GENERATORS_FOUND_JSON=`curl -s --max-time 60 --retry 15 --connect-timeout 20 https://search.maven.org/solrsearch/select?q=g:io.swagger.codegen.v3%20AND%20a:swagger-codegen-generators%20AND%20v:${GENERATORS_VERSION}%20AND%20p:jar`
65- export GENERATORS_FOUND=`echo ${GENERATORS_FOUND_JSON} | jq '.response.numFound'`
66- echo "GENERATORS_FOUND" ${GENERATORS_FOUND}
67- if [[ $GENERATORS_FOUND == '0' ]];
68- then
69- echo "generators version not found"
70- rm -f maven-metadata.xml
79+ if [[ ! $MY_POM_VERSION =~ SNAPSHOT ]]; then
80+ if [[ ! $GENERATORS_VERSION =~ SNAPSHOT ]]; then
81+ # check release version exists on Maven Central
82+ local result
83+ result=$(curl -s --max-time 60 --retry 15 \
84+ "https://search.maven.org/solrsearch/select?q=g:io.swagger.codegen.v3%20AND%20a:swagger-codegen-generators%20AND%20v:${GENERATORS_VERSION}%20AND%20p:jar")
85+ if [[ $(echo "$result" | jq '.response.numFound') -eq 0 ]]; then
86+ # fall back to latest snapshot
7187 SNAP_API="https://central.sonatype.com/repository/maven-snapshots"
7288 ARTIFACT_PATH="io/swagger/codegen/v3/swagger-codegen-generators"
73- ROOT_META="${SNAP_API}/${ARTIFACT_PATH}/maven-metadata.xml"
74- export LAST_SNAP=$(curl -s "$ROOT_META" | grep -oP '(?<=<version>)1\.[^<]+' | sort -V | tail -n1)
75- echo "LAST_SNAP $LAST_SNAP"
76- export GENERATORS_VERSION_PROPERTY=-Dswagger-codegen-generators-version=$LAST_SNAP
89+ LAST_SNAP=$(curl -s "$SNAP_API/$ARTIFACT_PATH/maven-metadata.xml" \
90+ | grep -oP '(?<=<version>)[^<]+' | sort -V | tail -1)
91+ export GENERATORS_VERSION_PROPERTY="-Dswagger-codegen-generators-version=$LAST_SNAP"
7792 fi
7893 fi
7994 fi
80- echo "GENERATORS_VERSION_PROPERTY ${GENERATORS_VERSION_PROPERTY}"
95+
96+ echo "GENERATORS_VERSION_PROPERTY=${GENERATORS_VERSION_PROPERTY}"
8197 echo "GENERATORS_VERSION_PROPERTY=${GENERATORS_VERSION_PROPERTY}" >> $GITHUB_ENV
82- mvn clean verify -U -DJETTY_TEST_HTTP_PORT=8070 -DJETTY_TEST_STOP_PORT=8069 ${GENERATORS_VERSION_PROPERTY}
98+
99+ mvn clean verify -U -DJETTY_TEST_HTTP_PORT=8070 \
100+ -DJETTY_TEST_STOP_PORT=8069 ${GENERATORS_VERSION_PROPERTY}
83101
84- - name : Build Docker Image
102+ - name : Build Docker image
103+ id : build_image
85104 run : |
86- docker build -t swagger-codegen:latest .
87- docker tag swagger-codegen:latest swagger-codegen: ${{ github.sha }}
88-
89- - name : Set docker tag output
90- id : docker_tag
91- run : echo "tag=swagger-codegen:${{ github.sha }} " >> $GITHUB_OUTPUT
105+ # construct a unique tag: repo:pr-<number>-java<version>
106+ TAG="${{ github.repository }}:pr- ${{ github.event.pull_request.number }}-java${{ matrix.java }}"
107+ docker build -t "$TAG" .
108+ # export as both step output and env for downstream
109+ echo "::set-output name=tag::$TAG"
110+ echo "IMAGE_TAG=$TAG " >> $GITHUB_ENV
92111
93112 scan-with-wiz :
94113 name : Trigger Wiz Scanning
0 commit comments