diff --git a/.github/workflows/release-to-maven-central.yml b/.github/workflows/release-to-maven-central.yml new file mode 100644 index 000000000..c0f5a9724 --- /dev/null +++ b/.github/workflows/release-to-maven-central.yml @@ -0,0 +1,52 @@ +name: Publish release to Maven Central + +on: + push: + tags: + - 'v?[0-9]+.[0-9]+.[0-9]+*' # Trigger on tags like v1.0.0, 1.2.3, v1.2.3.Alpha1 etc. + +jobs: + publish: + # Only run this job for the main repository, not for forks + if: github.repository == 'a2aproject/a2a-java' + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + + # Use secrets to import GPG key + - name: Import GPG key + uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.GPG_SIGNING_KEY }} + passphrase: ${{ secrets.GPG_SIGNING_PASSPHRASE }} + + # Create settings.xml for Maven since it needs the 'central-a2asdk-temp' server. + # Populate wqith username and password from secrets + - name: Create settings.xml + run: | + mkdir -p ~/.m2 + echo "central-a2asdk-temp${{ secrets.CENTRAL_TOKEN_USERNAME }}${{ secrets.CENTRAL_TOKEN_PASSWORD }}" > ~/.m2/settings.xml + + # Deploy to Maven Central + # -s uses the settings file we created. + - name: Publish to Maven Central + run: > + mvn -B deploy + -s ~/.m2/settings.xml + -P release + -DskipTests + -Drelease.auto.publish=true + env: + # GPG passphrase is set as an environment variable for the gpg plugin to use + GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_PASSPHRASE }} diff --git a/pom.xml b/pom.xml index aa7122fa5..48564f77a 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,9 @@ true + + + false @@ -206,6 +209,7 @@ central-a2asdk-temp + ${release.auto.publish}