Bump the dev-dependencies group with 2 updates (#78) #2
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tag Release to Maven Central | |
| on: | |
| push: | |
| tags: | |
| - 'v[0-9]+.[0-9]+.[0-9]+' | |
| - 'v[0-9]+.[0-9]+.[0-9]+-*' | |
| jobs: | |
| release: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| packages: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Need full history for git describe | |
| - name: Validate tag format | |
| run: | | |
| TAG=${GITHUB_REF#refs/tags/} | |
| echo "Tag: $TAG" | |
| if ! [[ $TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then | |
| echo "ERROR: Tag must match semantic versioning (vX.Y.Z or vX.Y.Z-suffix)" | |
| exit 1 | |
| fi | |
| echo "VERSION=${TAG#v}" >> $GITHUB_ENV | |
| echo "TAG=$TAG" >> $GITHUB_ENV | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'gradle' | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v3 | |
| - name: Verify version matches tag | |
| run: | | |
| GRADLE_VERSION=$(./gradlew properties -q | grep "^version:" | awk '{print $2}') | |
| echo "Gradle version: $GRADLE_VERSION" | |
| echo "Expected version: $VERSION" | |
| if [ "$GRADLE_VERSION" != "$VERSION" ]; then | |
| echo "ERROR: Gradle version ($GRADLE_VERSION) does not match tag version ($VERSION)" | |
| exit 1 | |
| fi | |
| - name: Build and test | |
| run: ./gradlew clean build test | |
| - name: Import GPG key | |
| env: | |
| GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} | |
| GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
| run: | | |
| echo "$GPG_PRIVATE_KEY" | base64 -d | gpg --batch --import | |
| # Test signing capability | |
| echo "test" | gpg --clearsign --batch --yes --pinentry-mode loopback --passphrase "$GPG_PASSPHRASE" > /dev/null | |
| echo "GPG key imported and tested successfully" | |
| - name: Configure GPG for signing | |
| run: | | |
| # Configure gpg for non-interactive signing | |
| echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf | |
| echo "allow-loopback-pinentry" >> ~/.gnupg/gpg-agent.conf | |
| gpg-connect-agent reloadagent /bye | |
| - name: Publish to Maven Central | |
| env: | |
| CENTRAL_PORTAL_USERNAME: ${{ secrets.CENTRAL_PORTAL_USERNAME }} | |
| CENTRAL_PORTAL_PASSWORD: ${{ secrets.CENTRAL_PORTAL_PASSWORD }} | |
| GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
| GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }} | |
| run: | | |
| # Export GPG_TTY for passphrase | |
| export GPG_TTY=$(tty) | |
| # Create gradle.properties with GPG credentials | |
| cat > ~/.gradle/gradle.properties << EOF | |
| signing.gnupg.keyName=$GPG_KEY_ID | |
| signing.gnupg.passphrase=$GPG_PASSPHRASE | |
| EOF | |
| chmod 600 ~/.gradle/gradle.properties | |
| # Publish to Maven Central via Central Portal | |
| ./gradlew publishAggregationToCentralPortal \ | |
| --no-daemon \ | |
| --stacktrace | |
| - name: Build distribution archives | |
| run: | | |
| ./gradlew :codehead-test:jar :codehead-test:javadocJar :codehead-test:sourcesJar | |
| ./gradlew :database-test:jar :database-test:javadocJar :database-test:sourcesJar | |
| ./gradlew :feature-flag:jar :feature-flag:javadocJar :feature-flag:sourcesJar | |
| ./gradlew :feature-flag-ddb:jar :feature-flag-ddb:javadocJar :feature-flag-ddb:sourcesJar | |
| ./gradlew :feature-flag-etcd:jar :feature-flag-etcd:javadocJar :feature-flag-etcd:sourcesJar | |
| ./gradlew :feature-flag-metrics:jar :feature-flag-metrics:javadocJar :feature-flag-metrics:sourcesJar | |
| ./gradlew :feature-flag-sql:jar :feature-flag-sql:javadocJar :feature-flag-sql:sourcesJar | |
| ./gradlew :local-queue:jar :local-queue:javadocJar :local-queue:sourcesJar | |
| ./gradlew :metrics:jar :metrics:javadocJar :metrics:sourcesJar | |
| ./gradlew :metrics-declarative:jar :metrics-declarative:javadocJar :metrics-declarative:sourcesJar | |
| ./gradlew :metrics-micrometer:jar :metrics-micrometer:javadocJar :metrics-micrometer:sourcesJar | |
| ./gradlew :metrics-test:jar :metrics-test:javadocJar :metrics-test:sourcesJar | |
| ./gradlew :oop-mock:jar :oop-mock:javadocJar :oop-mock:sourcesJar | |
| ./gradlew :oop-mock-client:jar :oop-mock-client:javadocJar :oop-mock-client:sourcesJar | |
| ./gradlew :oop-mock-common:jar :oop-mock-common:javadocJar :oop-mock-common:sourcesJar | |
| ./gradlew :oop-mock-dynamodb:jar :oop-mock-dynamodb:javadocJar :oop-mock-dynamodb:sourcesJar | |
| ./gradlew :oop-mock-tests:jar :oop-mock-tests:javadocJar :oop-mock-tests:sourcesJar | |
| ./gradlew :smr:jar :smr:javadocJar :smr:sourcesJar | |
| ./gradlew :smr-metrics:jar :smr-metrics:javadocJar :smr-metrics:sourcesJar | |
| ./gradlew :smr-yml:jar :smr-yml:javadocJar :smr-yml:sourcesJar | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| name: Release ${{ env.VERSION }} | |
| body: | | |
| ## Codehead Systems Libraries ${{ env.VERSION }} | |
| **Auto-released** on merge to main. | |
| ### Maven Central | |
| ```xml | |
| <dependency> | |
| <groupId>com.codeheadsystems</groupId> | |
| <artifactId>smr</artifactId> | |
| <version>${{ env.VERSION }}</version> | |
| </dependency> | |
| ``` | |
| ```gradle | |
| implementation("com.codeheadsystems:smr:${{ env.VERSION }}") | |
| ``` | |
| ### Modules Published | |
| - `com.codeheadsystems:codehead-test:${{ env.VERSION }}` | |
| - `com.codeheadsystems:database-test:${{ env.VERSION }}` | |
| - `com.codeheadsystems:feature-flag:${{ env.VERSION }}` | |
| - `com.codeheadsystems:feature-flag-ddb:${{ env.VERSION }}` | |
| - `com.codeheadsystems:feature-flag-etcd:${{ env.VERSION }}` | |
| - `com.codeheadsystems:feature-flag-metrics:${{ env.VERSION }}` | |
| - `com.codeheadsystems:feature-flag-sql:${{ env.VERSION }}` | |
| - `com.codeheadsystems:local-queue:${{ env.VERSION }}` | |
| - `com.codeheadsystems:metrics:${{ env.VERSION }}` | |
| - `com.codeheadsystems:metrics-declarative:${{ env.VERSION }}` | |
| - `com.codeheadsystems:metrics-micrometer:${{ env.VERSION }}` | |
| - `com.codeheadsystems:metrics-test:${{ env.VERSION }}` | |
| - `com.codeheadsystems:oop-mock:${{ env.VERSION }}` | |
| - `com.codeheadsystems:oop-mock-client:${{ env.VERSION }}` | |
| - `com.codeheadsystems:oop-mock-common:${{ env.VERSION }}` | |
| - `com.codeheadsystems:oop-mock-dynamodb:${{ env.VERSION }}` | |
| - `com.codeheadsystems:oop-mock-tests:${{ env.VERSION }}` | |
| - `com.codeheadsystems:smr:${{ env.VERSION }}` | |
| - `com.codeheadsystems:smr-metrics:${{ env.VERSION }}` | |
| - `com.codeheadsystems:smr-yml:${{ env.VERSION }}` | |
| ### What's Changed | |
| See commits since last release for details. | |
| **Note:** Artifacts may take up to 2 hours to appear in Maven Central after release. | |
| files: | | |
| codehead-test/build/libs/*.jar | |
| database-test/build/libs/*.jar | |
| feature-flag/build/libs/*.jar | |
| feature-flag-ddb/build/libs/*.jar | |
| feature-flag-etcd/build/libs/*.jar | |
| feature-flag-metrics/build/libs/*.jar | |
| feature-flag-sql/build/libs/*.jar | |
| local-queue/build/libs/*.jar | |
| metrics/build/libs/*.jar | |
| metrics-declarative/build/libs/*.jar | |
| metrics-micrometer/build/libs/*.jar | |
| metrics-test/build/libs/*.jar | |
| oop-mock/build/libs/*.jar | |
| oop-mock-client/build/libs/*.jar | |
| oop-mock-common/build/libs/*.jar | |
| oop-mock-dynamodb/build/libs/*.jar | |
| oop-mock-tests/build/libs/*.jar | |
| smr/build/libs/*.jar | |
| smr-metrics/build/libs/*.jar | |
| smr-yml/build/libs/*.jar | |
| draft: false | |
| prerelease: ${{ contains(env.VERSION, '-') }} | |
| generate_release_notes: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Notify on failure | |
| if: failure() | |
| run: | | |
| echo "::error::Release failed! Check logs for details." |