diff --git a/.github/workflows/maven-release.yml b/.github/workflows/maven-release.yml index 0fb10bc..b4f0ebd 100644 --- a/.github/workflows/maven-release.yml +++ b/.github/workflows/maven-release.yml @@ -11,8 +11,9 @@ jobs: contents: read steps: - - name: Checkout code - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Set up JDK 11 uses: actions/setup-java@v5 @@ -26,11 +27,54 @@ jobs: gpg-private-key: ${{ secrets.OSSRH_GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Determine Maven Version Components + id: version # to identify the output + run: | + COMMIT_SHA_LONG="${{ github.sha }}" + COMMIT_SHA_SHORT="${COMMIT_SHA_LONG:0:7}" + + REVISION_VAR="" + SHA1_VAR="" + CHANGELIST_VAR="" + + if [[ "${{ github.ref_type }}" == "tag" ]]; then + TAG_NAME="${{ github.ref_name }}" + TAG_CLEAN=$(echo "$TAG_NAME" | sed 's/^v//') + + REVISION_VAR="$TAG_CLEAN" + SHA1_VAR="" + CHANGELIST_VAR="" + echo "🏗️ Version de Release (Tag) détectée : $TAG_CLEAN" + else + LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") + VERSION_BASE=$(echo "$LAST_TAG" | sed 's/^v//') + IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION_BASE" + NEXT_PATCH=$((PATCH + 1)) + + REVISION_VAR="$MAJOR.$MINOR.$NEXT_PATCH" + SHA1_VAR="-$COMMIT_SHA_SHORT" + CHANGELIST_VAR="-SNAPSHOT" + echo "🧪 Version Snapshot détectée (basée sur $LAST_TAG) : ${REVISION_VAR}${SHA1_VAR}${CHANGELIST_VAR}" + fi + + echo "revision=$REVISION_VAR" >> "$GITHUB_OUTPUT" + echo "sha1=$SHA1_VAR" >> "$GITHUB_OUTPUT" + echo "changelist=$CHANGELIST_VAR" >> "$GITHUB_OUTPUT" + echo "➡️ Variables de sortie définies : revision='$REVISION_VAR', sha1='$SHA1_VAR', changelist='$CHANGELIST_VAR'" + - name: Run tests - run: mvn --batch-mode test + run: | + mvn -B --file pom.xml clean test -P test \ + "-Drevision=${{ steps.version.outputs.revision }}" \ + "-Dsha1=${{ steps.version.outputs.sha1 }}" \ + "-Dchangelist=${{ steps.version.outputs.changelist }}" - name: Deploy to Maven Central - run: mvn --batch-mode clean deploy -P release -Dchangelist= "-Drevision=${{ github.event.release.tag_name }}" -Dgpg.keyname="${{ secrets.OSSRH_GPG_KEY_ID }}" + run: | + mvn --batch-mode clean deploy -P release -Dchangelist= "-Drevision=${{ steps.version.outputs.version }}" -Dgpg.keyname="${{ secrets.OSSRH_GPG_KEY_ID }}" \ + "-Drevision=${{ steps.version.outputs.revision }}" \ + "-Dsha1=${{ steps.version.outputs.sha1 }}" \ + "-Dchangelist=${{ steps.version.outputs.changelist }}" env: GITHUB_TOKEN: ${{ github.token }} CI_DEPLOY_USERNAME: ${{ secrets.CENTRAL_USERNAME }} diff --git a/.github/workflows/pull-tests.yml b/.github/workflows/pull-tests.yml index 9d02d7c..4130ed6 100644 --- a/.github/workflows/pull-tests.yml +++ b/.github/workflows/pull-tests.yml @@ -16,6 +16,8 @@ jobs: steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Set up JDK 11 uses: actions/setup-java@v5 @@ -29,14 +31,54 @@ jobs: gpg-private-key: ${{ secrets.OSSRH_GPG_PRIVATE_KEY }} gpg-passphrase: MAVEN_GPG_PASSPHRASE + - name: Determine Maven Version Components + id: version # to identify the output + run: | + COMMIT_SHA_LONG="${{ github.sha }}" + COMMIT_SHA_SHORT="${COMMIT_SHA_LONG:0:7}" + + REVISION_VAR="" + SHA1_VAR="" + CHANGELIST_VAR="" + + if [[ "${{ github.ref_type }}" == "tag" ]]; then + TAG_NAME="${{ github.ref_name }}" + TAG_CLEAN=$(echo "$TAG_NAME" | sed 's/^v//') + + REVISION_VAR="$TAG_CLEAN" + SHA1_VAR="" + CHANGELIST_VAR="" + echo "🏗️ Version de Release (Tag) détectée : $TAG_CLEAN" + else + LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") + VERSION_BASE=$(echo "$LAST_TAG" | sed 's/^v//') + IFS='.' read -r MAJOR MINOR PATCH <<< "$VERSION_BASE" + NEXT_PATCH=$((PATCH + 1)) + + REVISION_VAR="$MAJOR.$MINOR.$NEXT_PATCH" + SHA1_VAR="-$COMMIT_SHA_SHORT" + CHANGELIST_VAR="-SNAPSHOT" + echo "🧪 Version Snapshot détectée (basée sur $LAST_TAG) : ${REVISION_VAR}${SHA1_VAR}${CHANGELIST_VAR}" + fi + + echo "revision=$REVISION_VAR" >> "$GITHUB_OUTPUT" + echo "sha1=$SHA1_VAR" >> "$GITHUB_OUTPUT" + echo "changelist=$CHANGELIST_VAR" >> "$GITHUB_OUTPUT" + echo "➡️ Variables de sortie définies : revision='$REVISION_VAR', sha1='$SHA1_VAR', changelist='$CHANGELIST_VAR'" + - name: Unit test run: | - PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) - echo "jar_version=${PROJECT_VERSION}" >> $GITHUB_OUTPUT - mvn -B --file pom.xml clean test -P test + mvn -B --file pom.xml test -P test \ + "-Drevision=${{ steps.version.outputs.revision }}" \ + "-Dsha1=${{ steps.version.outputs.sha1 }}" \ + "-Dchangelist=${{ steps.version.outputs.changelist }}" - name: Build with Maven - run: mvn -B --file pom.xml clean deploy -P release "-Dsha1=${{ github.sha }}" "-Dchangelist=-SNAPSHOT" -Dgpg.keyname="${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }}" -Dgpg.keyname="${{ secrets.OSSRH_GPG_KEY_ID }}" + run: | + mvn --batch-mode deploy -P release -Dchangelist= "-Drevision=${{ steps.version.outputs.version }}" -Dgpg.keyname="${{ secrets.OSSRH_GPG_KEY_ID }}" \ + "-Drevision=${{ steps.version.outputs.revision }}" \ + "-Dsha1=${{ steps.version.outputs.sha1 }}" \ + "-Dchangelist=${{ steps.version.outputs.changelist }}" env: GITHUB_TOKEN: ${{ github.token }} CI_DEPLOY_USERNAME: ${{ secrets.CENTRAL_USERNAME }} diff --git a/pom.xml b/pom.xml index eee198c..8b73357 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ ${project.basedir}/src/test geosiris-technologies https://sonarcloud.io - 1.0.18 +