Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
189 changes: 59 additions & 130 deletions .github/workflows/develop-snapshots.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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') }}
Expand All @@ -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
Expand All @@ -78,111 +81,72 @@ 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') }}
restore-keys: |
${{ 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 "<dependency>"
echo " <groupId>io.logdash</groupId>"
echo " <artifactId>logdash</artifactId>"
echo " <version>$VERSION</version>"
echo "</dependency>"
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
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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 }}"
30 changes: 24 additions & 6 deletions examples/example-springboot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
</dependencies>

<repositories>
<!-- Maven Central Snapshots -->
<!-- GitHub Packages Snapshots -->
<repository>
<releases>
<enabled>false</enabled>
Expand All @@ -67,9 +67,9 @@
<enabled>true</enabled>
<updatePolicy>interval:60</updatePolicy>
</snapshots>
<id>maven-central-snapshots</id>
<name>Maven Central Snapshots</name>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<id>github-snapshots</id>
<name>GitHub Packages Snapshots</name>
<url>https://maven.pkg.github.com/logdash-io/java-sdk</url>
</repository>
</repositories>

Expand Down Expand Up @@ -118,8 +118,26 @@
<snapshots>
<updatePolicy>never</updatePolicy>
</snapshots>
<id>maven-central-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<id>github-snapshots</id>
<url>https://maven.pkg.github.com/logdash-io/java-sdk</url>
</repository>
</repositories>
</profile>

<profile>
<id>snapshot-repo</id>
<repositories>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<id>github-snapshots</id>
<name>GitHub Packages Snapshots</name>
<url>https://maven.pkg.github.com/logdash-io/java-sdk</url>
</repository>
</repositories>
</profile>
Expand Down
Loading