From 688044c4fdd4504021f8229b1a05c156cb1f68d5 Mon Sep 17 00:00:00 2001 From: Bertrand DELION Date: Sun, 26 Apr 2020 10:33:16 +0200 Subject: [PATCH 1/3] :green_heart: Fix version -rc.buildNumber for branches release/* and hotfix/* Part of #67 --- .github/workflows/maven-java-feature.yml | 36 +++++++++++++++++++++++- .github/workflows/maven-java.yml | 24 ++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/.github/workflows/maven-java-feature.yml b/.github/workflows/maven-java-feature.yml index cd975f5..9e82b0c 100644 --- a/.github/workflows/maven-java-feature.yml +++ b/.github/workflows/maven-java-feature.yml @@ -48,6 +48,40 @@ jobs: env: SERVER_USERNAME: $GITHUB_ACTOR SERVER_PASSWORD: ${{ secrets.MVN_PCKGS_REPO_TOKEN}} + - name: Get Branche name + id: get-branche-name + run: | + echo "::set-output name=BRANCHE_NAME::${GITHUB_REF#refs/heads/}" + - name: Set Release Candidate Mode (branche == (release/*|hotfix/*)) + id: set-release-candidate-mode + if: startsWith( steps.get-branche-name.outputs.BRANCHE_NAME, 'release/' ) || ( startsWith( steps.get-branche-name.outputs.BRANCHE_NAME, 'hotfix/' ) ) + run: | + echo "::set-output name=CREATE_RC::true" + - name: Get short SHA + id: short-sha + run: | + echo "Maven Project version: ${{ steps.maven-project-info.outputs.VERSION }}" + echo "::set-output name=COMMIT_ID_SHORT::${GITHUB_SHA::8}" + - name: Create version number SNAPSHOT + id: create-version-snapshot + if: ( steps.set-release-candidate-mode.outputs.CREATE_RC != 'true' ) + uses: frabert/replace-string-action@v1.1 + with: + pattern: "^(.*)-SNAPSHOT$" + string: ${{ steps.maven-project-info.outputs.VERSION }} + replace-with: "$1-${{ steps.short-sha.outputs.COMMIT_ID_SHORT }}-SNAPSHOT" + - name: Create version number RELEASE CANDIDATE + id: create-version-rc + if: ( steps.set-release-candidate-mode.outputs.CREATE_RC == 'true' ) + uses: frabert/replace-string-action@v1.1 + with: + pattern: "^(.*)-SNAPSHOT$" + string: ${{ steps.maven-project-info.outputs.VERSION }} + replace-with: "$1-rc.${GITHUB_RUN_NUMBER}" + - name: Set version number + if: endsWith( steps.maven-project-info.outputs.VERSION, '-SNAPSHOT' ) && ( steps.maven-project-info.outputs.PACKAGING != 'pom' ) + run: | + echo "New version: ${{ steps.create-version-number.outputs.replaced }}" - name: Build with Maven run: mvn -U clean compile -Pproject-controls-check --file pom.xml --settings .github/workflows/settings.xml env: @@ -69,7 +103,7 @@ jobs: #TODO run: mvn -U '-Dsonar.links.scm=http://gitxxx' '-Dsonar.links.ci=http://jenkinsxxx' org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar '-Dsonar.projectKey=[groupId]-[artifactId]' '-Dsonar.branch.name=develop' '-Dsonar.projectName=[artifactId]r' '-Dsonar.buildbreaker.skip=true' '-Dsonar.projectVersion=#d0b75832' - name: Quality Gate [SonarCloud.io] #TODO run: mvn -U '-Dsonar.links.scm=http://gitxxx' '-Dsonar.links.ci=http://jenkinsxxx' org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar '-Dsonar.projectKey=[groupId]-[artifactId]' '-Dsonar.branch.name=develop' '-Dsonar.projectName=[artifactId]' '-Dsonar.gitlab.ref_name=b7c32ea3401d64f97eecc4dd46de331b00391cd7' '-Dsonar.gitlab.commit_sha=b7c32ea3401d64f97eecc4dd46de331b00391cd7' '-Dsonar.gitlab.project_id=3555' - run: mvn -U -Dsonar.branch.name=${GITHUB_REF#refs/heads/} -Dsonar.gitlab.commit_sha=${GITHUB_SHA} sonar:sonar --file pom.xml --settings .github/workflows/settings.xml + run: mvn -U -Dsonar.branch.name=steps.get-branche-name.outputs.BRANCHE_NAME -Dsonar.gitlab.commit_sha=${GITHUB_SHA} sonar:sonar --file pom.xml --settings .github/workflows/settings.xml env: SERVER_USERNAME: $GITHUB_ACTOR SERVER_PASSWORD: ${{ secrets.MVN_PCKGS_REPO_TOKEN}} diff --git a/.github/workflows/maven-java.yml b/.github/workflows/maven-java.yml index a6d72ed..aad5192 100644 --- a/.github/workflows/maven-java.yml +++ b/.github/workflows/maven-java.yml @@ -77,18 +77,36 @@ jobs: env: SERVER_USERNAME: $GITHUB_ACTOR SERVER_PASSWORD: ${{ secrets.MVN_PCKGS_REPO_TOKEN}} + - name: Get Branche name + id: get-branche-name + run: | + echo "::set-output name=BRANCHE_NAME::${GITHUB_REF#refs/heads/}" + - name: Set Release Candidate Mode (branche == (release/*|hotfix/*)) + id: set-release-candidate-mode + if: startsWith( steps.get-branche-name.outputs.BRANCHE_NAME, 'release/' ) || ( startsWith( steps.get-branche-name.outputs.BRANCHE_NAME, 'hotfix/' ) ) + run: | + echo "::set-output name=CREATE_RC::true" - name: Get short SHA id: short-sha run: | echo "Maven Project version: ${{ steps.maven-project-info.outputs.VERSION }}" echo "::set-output name=COMMIT_ID_SHORT::${GITHUB_SHA::8}" - - name: Create version number - id: create-version-number + - name: Create version number SNAPSHOT + id: create-version-snapshot + if: ( steps.set-release-candidate-mode.outputs.CREATE_RC != 'true' ) uses: frabert/replace-string-action@v1.1 with: pattern: "^(.*)-SNAPSHOT$" string: ${{ steps.maven-project-info.outputs.VERSION }} replace-with: "$1-${{ steps.short-sha.outputs.COMMIT_ID_SHORT }}-SNAPSHOT" + - name: Create version number RELEASE CANDIDATE + id: create-version-rc + if: ( steps.set-release-candidate-mode.outputs.CREATE_RC == 'true' ) + uses: frabert/replace-string-action@v1.1 + with: + pattern: "^(.*)-SNAPSHOT$" + string: ${{ steps.maven-project-info.outputs.VERSION }} + replace-with: "$1-rc.${GITHUB_RUN_NUMBER}" - name: Set version number if: endsWith( steps.maven-project-info.outputs.VERSION, '-SNAPSHOT' ) && ( steps.maven-project-info.outputs.PACKAGING != 'pom' ) run: | @@ -115,7 +133,7 @@ jobs: #TODO run: mvn -U '-Dsonar.links.scm=http://gitxxx' '-Dsonar.links.ci=http://jenkinsxxx' org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar '-Dsonar.projectKey=[groupId]-[artifactId]' '-Dsonar.branch.name=develop' '-Dsonar.projectName=[artifactId]r' '-Dsonar.buildbreaker.skip=true' '-Dsonar.projectVersion=#d0b75832' - name: Quality Gate [SonarCloud.io] #TODO run: mvn -U '-Dsonar.links.scm=http://gitxxx' '-Dsonar.links.ci=http://jenkinsxxx' org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar '-Dsonar.projectKey=[groupId]-[artifactId]' '-Dsonar.branch.name=develop' '-Dsonar.projectName=[artifactId]' '-Dsonar.gitlab.ref_name=b7c32ea3401d64f97eecc4dd46de331b00391cd7' '-Dsonar.gitlab.commit_sha=b7c32ea3401d64f97eecc4dd46de331b00391cd7' '-Dsonar.gitlab.project_id=3555' - run: mvn -U -Dsonar.branch.name=${GITHUB_REF#refs/heads/} -Dsonar.gitlab.commit_sha=${GITHUB_SHA} sonar:sonar --file pom.xml --settings .github/workflows/settings.xml + run: mvn -U -Dsonar.branch.name=steps.get-branche-name.outputs.BRANCHE_NAME -Dsonar.gitlab.commit_sha=${GITHUB_SHA} sonar:sonar --file pom.xml --settings .github/workflows/settings.xml env: SERVER_USERNAME: $GITHUB_ACTOR SERVER_PASSWORD: ${{ secrets.MVN_PCKGS_REPO_TOKEN}} From 70d8200e86de32e8d5c754e771c68464fca3f615 Mon Sep 17 00:00:00 2001 From: Bertrand DELION Date: Sun, 26 Apr 2020 10:45:23 +0200 Subject: [PATCH 2/3] :bug: Get project version and packaging on all branches --- .github/workflows/maven-java-feature.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/maven-java-feature.yml b/.github/workflows/maven-java-feature.yml index 9e82b0c..22c2e2f 100644 --- a/.github/workflows/maven-java-feature.yml +++ b/.github/workflows/maven-java-feature.yml @@ -41,8 +41,8 @@ jobs: run: | echo "$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" echo "$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" - echo "$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" - echo "$(mvn help:evaluate -Dexpression=project.packaging -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" + echo "::set-output name=VERSION::$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" + echo "::set-output name=PACKAGING::$(mvn help:evaluate -Dexpression=project.packaging -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" echo "::set-output name=SONAR_HOST_URL::$(mvn help:evaluate -Dexpression=sonar.host.url -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" echo "::set-output name=SONAR_PROJECT_KEY::$(mvn help:evaluate -Dexpression=sonar.projectKey -q -DforceStdout --file pom.xml --settings .github/workflows/settings.xml)" env: From e15c51cb79f4daa7e14f918ef6c7bed5d344c41d Mon Sep 17 00:00:00 2001 From: Bertrand DELION Date: Sun, 26 Apr 2020 10:50:55 +0200 Subject: [PATCH 3/3] :construction: Comment set mvn version --- .github/workflows/maven-java.yml | 2 +- .../5e21d90ee4d781fd01ff4ddd73870267.0 | 38 ++++++++++++++++++ .../5e21d90ee4d781fd01ff4ddd73870267.1 | Bin 0 -> 12315 bytes .okhttpcache/journal | 10 +++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 .okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.0 create mode 100644 .okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.1 create mode 100644 .okhttpcache/journal diff --git a/.github/workflows/maven-java.yml b/.github/workflows/maven-java.yml index aad5192..d46a386 100644 --- a/.github/workflows/maven-java.yml +++ b/.github/workflows/maven-java.yml @@ -111,7 +111,7 @@ jobs: if: endsWith( steps.maven-project-info.outputs.VERSION, '-SNAPSHOT' ) && ( steps.maven-project-info.outputs.PACKAGING != 'pom' ) run: | echo "New version: ${{ steps.create-version-number.outputs.replaced }}" - mvn versions:set -DnewVersion=${{ steps.create-version-number.outputs.replaced }} --file pom.xml +#TODO mvn versions:set -DnewVersion=${{ steps.create-version-number.outputs.replaced }} --file pom.xml - name: Build with Maven run: mvn -U clean compile -Pproject-controls-check --file pom.xml --settings .github/workflows/settings.xml env: diff --git a/.okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.0 b/.okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.0 new file mode 100644 index 0000000..f73f628 --- /dev/null +++ b/.okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.0 @@ -0,0 +1,38 @@ +https://api.github.com/repos/bdelion/java-parent/issues?state=all&per_page=100&page=1 +GET +1 +Accept-Encoding: gzip +HTTP/1.1 200 OK +25 +Accept-Ranges: bytes +Transfer-Encoding: chunked +date: Tue, 21 Apr 2020 08:51:27 GMT +content-type: application/json; charset=utf-8 +server: GitHub.com +status: 200 OK +cache-control: public, max-age=60, s-maxage=60 +vary: Accept, Accept-Encoding, Accept, X-Requested-With +etag: W/"90dabb9ff71b58e6325ae82db14d54dc" +x-github-media-type: github.v3; format=json +access-control-expose-headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset +access-control-allow-origin: * +strict-transport-security: max-age=31536000; includeSubdomains; preload +x-frame-options: deny +x-content-type-options: nosniff +x-xss-protection: 1; mode=block +referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin +content-security-policy: default-src 'none' +content-encoding: gzip +X-Ratelimit-Limit: 60 +X-Ratelimit-Remaining: 58 +X-Ratelimit-Reset: 1587462426 +X-GitHub-Request-Id: E4CF:BFE1:8D47640:A636E38:5E9EB40E +OkHttp-Sent-Millis: 1587459085355 +OkHttp-Received-Millis: 1587459086351 + +TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 +2 +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 +0 +TLSv1.2 diff --git a/.okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.1 b/.okhttpcache/5e21d90ee4d781fd01ff4ddd73870267.1 new file mode 100644 index 0000000000000000000000000000000000000000..78b506b3404bca1a622eb36d7a65cfaf5a165a81 GIT binary patch literal 12315 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