From d45d527103543f64fedc064c36adbb8530e51ec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C5=82awomir=20Andreasik?= Date: Thu, 19 Jun 2025 15:02:48 +0200 Subject: [PATCH] ci(snapshot): update workflow for snapshots --- .github/workflows/develop-snapshots.yml | 189 ++++++++---------------- examples/example-springboot/pom.xml | 30 +++- pom.xml | 35 +++-- 3 files changed, 108 insertions(+), 146 deletions(-) diff --git a/.github/workflows/develop-snapshots.yml b/.github/workflows/develop-snapshots.yml index cda36e2..28bb07d 100644 --- a/.github/workflows/develop-snapshots.yml +++ b/.github/workflows/develop-snapshots.yml @@ -33,7 +33,7 @@ jobs: distribution: ${{ env.JAVA_DISTRIBUTION }} - name: Cache Maven dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-develop-${{ hashFiles('**/pom.xml') }} @@ -58,18 +58,21 @@ jobs: -DskipTests=true \ -Dspotless.check.skip=true - maven-central-snapshot: + github-packages-snapshot: runs-on: ubuntu-latest needs: validate-develop - timeout-minutes: 25 + timeout-minutes: 15 if: github.ref == 'refs/heads/dev' + permissions: + contents: read + packages: write + steps: - name: Checkout develop uses: actions/checkout@v4 with: ref: dev - fetch-depth: 0 - name: Setup JDK ${{ env.JAVA_VERSION }} uses: actions/setup-java@v4 @@ -78,7 +81,7 @@ jobs: distribution: ${{ env.JAVA_DISTRIBUTION }} - name: Cache Maven dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-develop-${{ hashFiles('**/pom.xml') }} @@ -86,103 +89,64 @@ jobs: ${{ runner.os }}-maven-develop- ${{ runner.os }}-maven- - - name: Import GPG key - uses: crazy-max/ghaction-import-gpg@v6 - with: - gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} - passphrase: ${{ secrets.GPG_PASSPHRASE }} - - - name: Verify GPG import + - name: Run comprehensive tests run: | - gpg --list-secret-keys --keyid-format LONG - echo "✅ GPG key imported successfully" + mvn clean verify -B --no-transfer-progress \ + -Dmaven.test.failure.ignore=false \ + -Dfailsafe.rerunFailingTestsCount=2 - - name: Configure Maven Central Snapshots + - name: Configure Maven Settings for GitHub Packages uses: whelk-io/maven-settings-xml-action@v22 with: servers: | [ { - "id": "central", - "username": "${env.CENTRAL_TOKEN_USERNAME}", - "password": "${env.CENTRAL_TOKEN_PASSWORD}" - }, - { - "id": "ossrh", - "username": "${env.CENTRAL_TOKEN_USERNAME}", - "password": "${env.CENTRAL_TOKEN_PASSWORD}" + "id": "github", + "username": "${env.GITHUB_ACTOR}", + "password": "${env.GITHUB_TOKEN}" } ] - - name: Display snapshot version - run: | - echo "📦 Deploying snapshot version: ${{ needs.validate-develop.outputs.snapshot-version }}" - - - name: Run comprehensive tests - run: | - mvn clean verify -B --no-transfer-progress \ - -Dmaven.test.failure.ignore=false \ - -Dfailsafe.rerunFailingTestsCount=2 - - - name: Deploy to Maven Central Snapshots + - name: Deploy to GitHub Packages (Snapshots Only) run: | - mvn clean deploy -B --no-transfer-progress \ - -Pmaven-central-release \ - -DskipTests=true \ - -Dcentral.autoPublish=true \ - -Dgpg.keyname="$GPG_KEY_ID" + mvn deploy -B --no-transfer-progress \ + -Pgithub-packages-snapshot \ + -DskipTests=true env: - CENTRAL_TOKEN_USERNAME: ${{ secrets.CENTRAL_TOKEN_USERNAME }} - CENTRAL_TOKEN_PASSWORD: ${{ secrets.CENTRAL_TOKEN_PASSWORD }} - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} - - - name: Verify Maven Central snapshot deployment - run: | - VERSION="${{ needs.validate-develop.outputs.snapshot-version }}" - echo "⏳ Waiting for snapshot propagation..." - sleep 10 - - # Check if snapshot metadata is available - METADATA_URL="https://s01.oss.sonatype.org/content/repositories/snapshots/io/logdash/logdash/$VERSION/maven-metadata.xml" - if curl -s -f "$METADATA_URL" > /dev/null; then - echo "✅ Snapshot metadata confirmed at OSSRH" - else - echo "⚠️ Snapshot metadata not yet available (may take time to propagate)" - fi + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Display deployment info + - name: Verify GitHub Packages deployment run: | VERSION="${{ needs.validate-develop.outputs.snapshot-version }}" - echo "✅ Successfully deployed $VERSION to Maven Central Snapshots" - echo "📦 Available at: https://s01.oss.sonatype.org/content/repositories/snapshots/io/logdash/logdash/$VERSION/" + echo "✅ Snapshot deployed to GitHub Packages: $VERSION" + echo "📦 Available at: https://github.com/logdash-io/java-sdk/packages" echo "" - echo "🔍 Maven dependency:" + echo "🔍 Maven dependency (requires GitHub authentication):" echo "" echo " io.logdash" echo " logdash" echo " $VERSION" echo "" - echo "" - echo "🔍 Gradle dependency:" - echo "implementation 'io.logdash:logdash:$VERSION'" - - name: Notify deployment status - if: failure() + - name: Display deployment info run: | VERSION="${{ needs.validate-develop.outputs.snapshot-version }}" - echo "❌ Snapshot deployment failed for version $VERSION" - echo "Check logs above for deployment errors" + echo "📋 Snapshot Deployment Summary:" + echo "✅ Successfully deployed $VERSION to GitHub Packages (snapshots only)" + echo "🔢 Version: $VERSION" + echo "📦 Repository: https://github.com/logdash-io/java-sdk/packages" + echo "" + echo "⚠️ Note: GitHub Packages requires authentication even for public repos" - github-packages-snapshot: + test-examples: runs-on: ubuntu-latest - needs: validate-develop - timeout-minutes: 15 + needs: [ validate-develop, github-packages-snapshot ] + timeout-minutes: 20 if: github.ref == 'refs/heads/dev' permissions: contents: read - packages: write + packages: read steps: - name: Checkout develop @@ -196,15 +160,6 @@ jobs: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.JAVA_DISTRIBUTION }} - - name: Cache Maven dependencies - uses: actions/cache@v3 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-develop-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven-develop- - ${{ runner.os }}-maven- - - name: Configure Maven Settings for GitHub Packages uses: whelk-io/maven-settings-xml-action@v22 with: @@ -217,55 +172,32 @@ jobs: } ] - - name: Deploy to GitHub Packages (Backup) + - name: Test Simple Java Example with Snapshot run: | - mvn deploy -B --no-transfer-progress \ - -Pgithub-release \ - -DperformRelease=true \ - -DskipTests=true + cd examples/example-simple-java + mvn clean compile -B --no-transfer-progress \ + -Psnapshot-repo env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Verify GitHub Packages deployment + - name: Test Spring Boot Example with Snapshot run: | - VERSION="${{ needs.validate-develop.outputs.snapshot-version }}" - echo "✅ Backup snapshot deployed to GitHub Packages: $VERSION" - echo "📦 Available at: https://github.com/logdash-io/java-sdk/packages" - - verify-deployments: - runs-on: ubuntu-latest - needs: [ maven-central-snapshot, github-packages-snapshot ] - timeout-minutes: 10 - if: github.ref == 'refs/heads/dev' + cd examples/example-springboot + mvn clean compile -B --no-transfer-progress \ + -Psnapshot-repo + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - name: Final verification + - name: Test Check Deployed Package run: | - VERSION="${{ needs.validate-develop.outputs.snapshot-version }}" - echo "🔍 Final verification for snapshot: $VERSION" - - # Wait a bit more for propagation - echo "⏳ Waiting for complete propagation..." - sleep 10 - - # Check Maven Central snapshots via OSSRH - METADATA_URL="https://s01.oss.sonatype.org/content/repositories/snapshots/io/logdash/logdash/$VERSION/maven-metadata.xml" - if curl -s -f "$METADATA_URL" > /dev/null; then - echo "✅ Maven Central snapshot confirmed and accessible" - else - echo "⚠️ Maven Central snapshot metadata not accessible yet" - fi - - echo "" - echo "📋 Deployment Summary:" - echo "🏗️ Maven Central Snapshots: ${{ needs.maven-central-snapshot.result }}" - echo "📦 GitHub Packages: ${{ needs.github-packages-snapshot.result }}" - echo "🔢 Version: $VERSION" - echo "🌐 Repository: https://s01.oss.sonatype.org/content/repositories/snapshots/" + cd check-deployed-package + mvn clean compile -B --no-transfer-progress + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} notification: runs-on: ubuntu-latest - needs: [ validate-develop, maven-central-snapshot, github-packages-snapshot, verify-deployments ] + needs: [ validate-develop, github-packages-snapshot, test-examples ] if: always() && github.ref == 'refs/heads/dev' steps: @@ -280,23 +212,20 @@ jobs: echo "" echo "Job Results:" echo "✓ Validation: ${{ needs.validate-develop.result }}" - echo "✓ Maven Central: ${{ needs.maven-central-snapshot.result }}" - echo "✓ GitHub Packages: ${{ needs.github-packages-snapshot.result }}" - echo "✓ Verification: ${{ needs.verify-deployments.result }}" + echo "✓ GitHub Packages (Snapshots): ${{ needs.github-packages-snapshot.result }}" + echo "✓ Examples Testing: ${{ needs.test-examples.result }}" echo "" - # Check overall success if [[ "${{ needs.validate-develop.result }}" == "success" && - "${{ needs.maven-central-snapshot.result }}" == "success" && - "${{ needs.github-packages-snapshot.result }}" == "success" ]]; then - echo "🎉 All snapshot deployments completed successfully!" - echo "📦 $VERSION is now available for testing" + "${{ needs.github-packages-snapshot.result }}" == "success" && + "${{ needs.test-examples.result }}" == "success" ]]; then + echo "🎉 Snapshot deployment completed successfully!" + echo "📦 $VERSION is now available for testing via GitHub Packages" else - echo "⚠️ Some deployments may have failed. Check individual job results above." + echo "⚠️ Snapshot deployment failed. Check individual job results above." fi echo "" echo "🔗 Quick Access:" - echo "- Maven Central: https://s01.oss.sonatype.org/content/repositories/snapshots/io/logdash/logdash/$VERSION/" echo "- GitHub Packages: https://github.com/logdash-io/java-sdk/packages" echo "- Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ No newline at end of file diff --git a/examples/example-springboot/pom.xml b/examples/example-springboot/pom.xml index 220e3bc..7bbc0fe 100644 --- a/examples/example-springboot/pom.xml +++ b/examples/example-springboot/pom.xml @@ -58,7 +58,7 @@ - + false @@ -67,9 +67,9 @@ true interval:60 - maven-central-snapshots - Maven Central Snapshots - https://central.sonatype.com/repository/maven-snapshots/ + github-snapshots + GitHub Packages Snapshots + https://maven.pkg.github.com/logdash-io/java-sdk @@ -118,8 +118,26 @@ never - maven-central-snapshots - https://central.sonatype.com/repository/maven-snapshots/ + github-snapshots + https://maven.pkg.github.com/logdash-io/java-sdk + + + + + + snapshot-repo + + + + false + + + true + always + + github-snapshots + GitHub Packages Snapshots + https://maven.pkg.github.com/logdash-io/java-sdk diff --git a/pom.xml b/pom.xml index a3b4343..b695cf0 100644 --- a/pom.xml +++ b/pom.xml @@ -502,6 +502,31 @@ + + + github-packages-snapshot + + + github + GitHub Packages Snapshots + https://maven.pkg.github.com/logdash-io/java-sdk + + + + + + org.apache.maven.plugins + maven-deploy-plugin + ${maven-deploy-plugin.version} + + true + false + + + + + + github-release @@ -525,7 +550,6 @@ - org.apache.maven.plugins maven-deploy-plugin @@ -548,15 +572,9 @@ Central Repository https://central.sonatype.com/api/v1/publisher - - ossrh - Central Repository OSSRH Snapshots - https://s01.oss.sonatype.org/content/repositories/snapshots/ - - org.sonatype.central central-publishing-maven-plugin @@ -569,8 +587,6 @@ required - - org.apache.maven.plugins maven-gpg-plugin @@ -595,7 +611,6 @@ - org.apache.maven.plugins maven-deploy-plugin