66
77jobs :
88 build_pr_30 :
9-
109 runs-on : ubuntu-latest
1110 strategy :
1211 matrix :
1312 java : [ 11, 17 ]
1413
15- env :
16- GENERATORS_VERSION_PROPERTY : " "
17- MAVEN_USERNAME : ${{ secrets.MAVEN_CENTRAL_USERNAME }}
18- MAVEN_PASSWORD : ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
14+ # expose docker_tag from the “build_with_maven” step
15+ outputs :
16+ docker_tag : ${{ steps.build_with_maven.outputs.tag }}
17+
1918 steps :
20- - uses : actions/checkout@v4
21- name : git checkout 3.0.0
22- with :
23- ref : 3.0.0
24- - name : Set up Java
25- uses : actions/setup-java@v4
26- with :
27- java-version : ${{ matrix.java }}
28- distribution : temurin
29- cache : maven
30- overwrite-settings : false
31- - name : Add Central-Portal snapshot repo to settings.xml
32- 33- with :
34- repositories : ' [{"id":"central-portal-snapshots","name":"Sonatype Central Portal snapshots","url":"https://central.sonatype.com/repository/maven-snapshots/","releases":{"enabled":false},"snapshots":{"enabled":true}}]'
35- servers : ' [{"id":"central","username":"${{ secrets.MAVEN_CENTRAL_USERNAME }}","password":"${{ secrets.MAVEN_CENTRAL_PASSWORD }}"}]'
36- - name : preliminary checks
37- run : |
38- docker login --username=${{ secrets.DOCKERHUB_SB_USERNAME }} --password=${{ secrets.DOCKERHUB_SB_PASSWORD }}
39- set -e
40- # fail if templates/generators contain carriage return '\r'
41- /bin/bash ./bin/utils/detect_carriage_return.sh
42- # fail if generators contain merge conflicts
43- /bin/bash ./bin/utils/detect_merge_conflict.sh
44- # fail if generators contain tab '\t'
45- /bin/bash ./bin/utils/detect_tab_in_java_class.sh
46- - name : Build with Maven
19+ # … previous checkout, setup-java, preliminary checks, generators bootstrap …
20+
21+ - name : Build with Maven (and Docker)
22+ id : build_with_maven
4723 if : ${{ matrix.java != 8 }}
4824 run : |
49- 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`
50- echo "POM VERSION" ${MY_POM_VERSION}
51- export GENERATORS_VERSION=`sed -n 's/<swagger\-codegen\-generators\-version>\([^\s]*\)<\/swagger\-codegen\-generators\-version>/\1/p' pom.xml`
52- export GENERATORS_VERSION=`echo ${GENERATORS_VERSION} | tr -d '[:space:]'`
53- echo "GENERATORS_VERSION" ${GENERATORS_VERSION}
54- export GENERATORS_VERSION_PROPERTY=""
55- if [[ ! $MY_POM_VERSION =~ ^.*SNAPSHOT$ ]];
56- then
57- if [[ ! $GENERATORS_VERSION =~ ^.*SNAPSHOT$ ]];
58- then
59- # check release version exists
60- 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`
61- export GENERATORS_FOUND=`echo ${GENERATORS_FOUND_JSON} | jq '.response.numFound'`
62- echo "GENERATORS_FOUND" ${GENERATORS_FOUND}
63- if [[ $GENERATORS_FOUND == '0' ]];
64- then
65- echo "generators version not found"
66- rm -f maven-metadata.xml
67- SNAP_API="https://central.sonatype.com/repository/maven-snapshots"
68- ARTIFACT_PATH="io/swagger/codegen/v3/swagger-codegen-generators"
69- ROOT_META="${SNAP_API}/${ARTIFACT_PATH}/maven-metadata.xml"
70- export LAST_SNAP=$(curl -s "$ROOT_META" | grep -oP '(?<=<version>)1\.[^<]+' | sort -V | tail -n1)
71- echo "LAST_SNAP $LAST_SNAP"
72- export GENERATORS_VERSION_PROPERTY=-Dswagger-codegen-generators-version=$LAST_SNAP
73- fi
74- fi
75- fi
76- echo "GENERATORS_VERSION_PROPERTY ${GENERATORS_VERSION_PROPERTY}"
25+ # — your existing Maven logic —
26+ export MY_POM_VERSION=$(mvn -Dswagger-codegen-generators-version=1.0.37 \
27+ -q -Dexec.executable="echo" -Dexec.args='${projects.version}' \
28+ --non-recursive org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
29+ echo "POM VERSION ${MY_POM_VERSION}"
30+
31+ export GENERATORS_VERSION=$(sed -n 's/.*<swagger\-codegen\-generators\-version>\([^<]*\)<\/swagger\-codegen\-generators\-version>.*/\1/p' pom.xml | tr -d '[:space:]')
32+ echo "GENERATORS_VERSION ${GENERATORS_VERSION}"
33+
34+ # … your snapshot‐fallback logic …
35+ echo "GENERATORS_VERSION_PROPERTY=${GENERATORS_VERSION_PROPERTY}"
7736 echo "GENERATORS_VERSION_PROPERTY=${GENERATORS_VERSION_PROPERTY}" >> $GITHUB_ENV
78- mvn clean verify -U -DJETTY_TEST_HTTP_PORT=8070 -DJETTY_TEST_STOP_PORT=8069 ${GENERATORS_VERSION_PROPERTY}
37+
38+ mvn clean verify -U -DJETTY_TEST_HTTP_PORT=8070 \
39+ -DJETTY_TEST_STOP_PORT=8069 ${GENERATORS_VERSION_PROPERTY}
40+
41+ # — now build the Docker image using the same PR & Java matrix to tag —
42+ TAG="${{ github.repository }}:pr-${{ github.event.pull_request.number }}-java${{ matrix.java }}"
43+ docker build -t "$TAG" .
44+
45+ # export tag both as step-output and env
46+ echo "::set-output name=tag::$TAG"
47+ echo "IMAGE_TAG=$TAG" >> $GITHUB_ENV
48+
49+ # make sure Docker is available (login done in preliminary checks)
50+ shell : bash
51+
52+ scan-with-wiz :
53+ needs : build_pr_30
54+ runs-on : ubuntu-latest
55+ if : needs.build_pr_30.result == 'success'
56+ env :
57+ TAG : ${{ needs.build_pr_30.outputs.docker_tag }}
58+ POLICY : " SmartBear default vulnerabilities policy"
59+ steps :
60+ - name : Authenticate to Wiz
61+ run : ./wizcli auth --id "$WIZ_CLIENT_ID" --secret "$WIZ_CLIENT_SECRET"
62+ env :
63+ WIZ_CLIENT_ID : ${{ secrets.WIZ_CLIENT_ID }}
64+ WIZ_CLIENT_SECRET : ${{ secrets.WIZ_CLIENT_SECRET }}
65+
66+ - name : Run wiz-cli docker image scan
67+ run : |
68+ ./wizcli docker scan --image "$TAG" --policy "$POLICY"
69+ ./wizcli docker tag --image "$TAG"
0 commit comments