diff --git a/.github/project.yml b/.github/project.yml new file mode 100644 index 0000000..e00fc24 --- /dev/null +++ b/.github/project.yml @@ -0,0 +1,3 @@ +release: + current-version: 0.0.6 + next-version: 0.0.7-SNAPSHOT diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..dcc361d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,77 @@ +name: Java Buildpack Client Release + +on: + pull_request: + types: [closed] + paths: + - '.github/project.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + release: + runs-on: ubuntu-latest + name: release + if: ${{github.event.pull_request.merged == true}} + + steps: + - uses: radcortez/project-metadata-action@main + name: Retrieve project metadata + id: metadata + with: + github-token: ${{secrets.GITHUB_TOKEN}} + metadata-file-path: '.github/project.yml' + + - uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + cache: 'maven' + server-id: ossrh + server-username: OSS_SONATYPE_USERNAME + server-password: OSS_SONATYPE_PASSWORD + gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + + - name: Configure Git author + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + - name: Set release version in the samples and readme + run: | + find ./samples/ -iwholename "*/pack.java" | while read f; do + sed -i "s/dev.snowdrop:buildpack-client:.*/dev.snowdrop:buildpack-client:${{steps.metadata.outputs.current-version}}\}/g" $f + git add $f + done + sed -i "s/dev.snowdrop:buildpack-client:.*/dev.snowdrop:buildpack-client:${{steps.metadata.outputs.current-version}}\}/g" README.md + sed -i "s/.*<\/version>/${{steps.metadata.outputs.current-version}}<\/version>/g" README.md + git add README.md + git commit -m "chore: set release version: ${{steps.metadata.outputs.current-version}} in samples and README.md" + - name: Maven release ${{steps.metadata.outputs.current-version}} + run: | + mvn -B release:prepare -Prelease -DreleaseVersion=${{steps.metadata.outputs.current-version}} -DdevelopmentVersion=${{steps.metadata.outputs.next-version}} + mvn -B release:perform -Darguments=-DperformRelease -DperformRelease -Prelease + env: + OSS_SONATYPE_USERNAME: ${{ secrets.OSS_SONATYPE_USERNAME }} + OSS_SONATYPE_PASSWORD: ${{ secrets.OSS_SONATYPE_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + - name: Set dev version in the samples and readme + run: | + find ./samples/ -iwholename "*/pack.java" | while read f; do + sed -i "s/dev.snowdrop:buildpack-client:.*/dev.snowdrop:buildpack-client:${{steps.metadata.outputs.next-version}}\}/g" $f + git add $f + done + git commit -m "chore: set dev version: ${{steps.metadata.outputs.next-version}} in samples and README.md" + - name: Push changes to ${{github.base_ref}} branch + run: | + git push + git push origin ${{steps.metadata.outputs.current-version}}