diff --git a/.github/workflows/create-scheduled-release.yml b/.github/workflows/create-scheduled-release.yml new file mode 100644 index 000000000..18927f662 --- /dev/null +++ b/.github/workflows/create-scheduled-release.yml @@ -0,0 +1,79 @@ +name: "Create scheduled release" + +on: + schedule: + - cron: "0 0 1 * *" + - cron: "0 0 15 * *" + workflow_dispatch: + +permissions: + contents: write + +jobs: + get-changed-metadata: + name: "πŸ“‹ Get a list of changed metadata" + runs-on: "ubuntu-20.04" + timeout-minutes: 5 + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + none-found: ${{ steps.set-matrix.outputs.none-found }} + steps: + - name: "☁️ Checkout repository" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: "πŸ”§ Setup java" + uses: actions/setup-java@v4 + with: + distribution: 'graalvm' + java-version: '21' + - name: "πŸ•ΈοΈ Get changed metadata matrix" + id: set-matrix + run: | + LATEST_TAG=$(git tag --list | sort -V | tail -1) + ./gradlew generateMatrixDiffCoordinates -PbaseCommit=$(git show-ref -s $LATEST_TAG) -PnewCommit=$(git rev-parse HEAD) + + release: + needs: get-changed-metadata + if: needs.get-changed-metadata.result == 'success' && needs.get-changed-metadata.outputs.none-found != 'true' + name: "πŸš€ Create a release" + runs-on: "ubuntu-20.04" + env: + GH_TOKEN: ${{ github.token }} + steps: + - name: "☁️ Checkout repository" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: "πŸ”§ Setup java" + uses: actions/setup-java@v4 + with: + distribution: 'graalvm' + java-version: '21' + - name: "Get tags" + run: | + PREVIOUS_RELEASE_TAG=$(git tag --list | sort -V | tail -1) + echo "PREVIOUS_RELEASE_TAG=$PREVIOUS_RELEASE_TAG" >> ${GITHUB_ENV} + + CURRENT_RELEASE_TAG=$(sed -E 's/^([0-9]+\.)([0-9]+\.)([0-9]+)/echo \1\2$((\3+1))/e' <<< $PREVIOUS_RELEASE_TAG) + echo "CURRENT_RELEASE_TAG=$CURRENT_RELEASE_TAG" >> ${GITHUB_ENV} + - name: "⬆️ Update version" + run: | + sed -i "s/project.version(\"1.0.0-SNAPSHOT\")/project.version(\"${{ env.CURRENT_RELEASE_TAG }}\")/g" build.gradle + - name: "πŸ” Run spotless check" + run: | + ./gradlew spotlessCheck + - name: "🏭 Generate release artifacts" + run: | + ./gradlew package + - name: "πŸ“„ Commit changes" + run: | + git config --local user.email "actions@github.com" + git config --local user.name "Github Actions" + git add . + git commit -m "Release version ${{ env.CURRENT_RELEASE_TAG }}" + git tag ${{ env.CURRENT_RELEASE_TAG }} + git push origin ${{ env.CURRENT_RELEASE_TAG }} + - name: "πŸ“ Publish a release" + run: | + gh release create ${{ env.CURRENT_RELEASE_TAG }} build/graalvm-reachability-metadata-*.zip --generate-notes --notes-start-tag ${{ env.PREVIOUS_RELEASE_TAG }} \ No newline at end of file diff --git a/build.gradle b/build.gradle index b69dc9196..d4f71a5df 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,8 @@ allprojects { } } -project.version("0.3.10-SNAPSHOT") +// NOTE: this version serves only as a placeholder and will be overridden by the CI when creating a new release +project.version("1.0.0-SNAPSHOT") // gradle check spotless { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 070cb702f..e1adfb493 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists