jdaugherty commented on code in PR #15206:
URL: https://github.com/apache/grails-core/pull/15206#discussion_r2490628055
##########
.github/workflows/release.yml:
##########
@@ -294,77 +247,86 @@ jobs:
rm -f grails/grails-forge/gradle/wrapper/gradle-wrapper.properties
rm -f grails/grails-forge/gradlew
rm -f grails/KEYS
- - name: "Download CHECKSUMS.txt and rename to CHECKSUMS"
- working-directory: "grails"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: "π₯ Download CHECKSUMS.txt and rename to CHECKSUMS"
+ working-directory: grails
run: |
- release_url=$(gh release view v${{
needs.publish.outputs.release_version }} --json assets --repo ${{
github.repository }} --jq '.assets[] | select(.name == "CHECKSUMS.txt") | .url')
- curl -f -L -H "Authorization: token $GH_TOKEN" -o CHECKSUMS
"$release_url"
- - name: "Download PUBLISHED_ARTIFACTS.txt and rename to
PUBLISHED_ARTIFACTS"
- working-directory: "grails"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ release_url=$(gh release view "${TAG}" --json assets --repo
"${REPO_SLUG}" --jq '.assets[] | select(.name == "CHECKSUMS.txt") | .url')
+ curl -f -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o
CHECKSUMS "$release_url"
+ - name: "π₯ Download PUBLISHED_ARTIFACTS.txt and rename to
PUBLISHED_ARTIFACTS"
+ working-directory: grails
run: |
- release_url=$(gh release view v${{
needs.publish.outputs.release_version }} --json assets --repo ${{
github.repository }} --jq '.assets[] | select(.name ==
"PUBLISHED_ARTIFACTS.txt") | .url')
- curl -f -L -H "Authorization: token $GH_TOKEN" -o
PUBLISHED_ARTIFACTS "$release_url"
- - name: "Download BUILD_DATE.txt and rename to BUILD_DATE"
- working-directory: "grails"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ release_url=$(gh release view "${TAG}" --json assets --repo
"${REPO_SLUG}" --jq '.assets[] | select(.name == "PUBLISHED_ARTIFACTS.txt") |
.url')
+ curl -f -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o
PUBLISHED_ARTIFACTS "$release_url"
+ - name: "π₯ Download BUILD_DATE.txt and rename to BUILD_DATE"
+ working-directory: grails
run: |
- release_url=$(gh release view v${{
needs.publish.outputs.release_version }} --json assets --repo ${{
github.repository }} --jq '.assets[] | select(.name == "BUILD_DATE.txt") |
.url')
- curl -f -L -H "Authorization: token $GH_TOKEN" -o BUILD_DATE
"$release_url"
- - name: "Ensure source files use common date"
+ release_url=$(gh release view "${TAG}" --json assets --repo
"${REPO_SLUG}" --jq '.assets[] | select(.name == "BUILD_DATE.txt") | .url')
+ curl -f -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o
BUILD_DATE "$release_url"
+ - name: "π
Ensure source files use common date"
run: |
SOURCE_DATE_EPOCH=$(cat grails/BUILD_DATE)
find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: "π¦ Create source distribution ZIP"
- run: |
- zip -r "apache-grails-${{ needs.publish.outputs.release_version
}}-src.zip" grails -x 'grails/.git/*' -x 'grails/.github/*'
+ run: >
+ zip -r
+ apache-grails-${VERSION}-src.zip
+ grails
+ -x 'grails/.git/*'
+ -x 'grails/.github/*'
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
Review Comment:
Please see previous comment about the secret; we need to use an environment
variable
##########
.github/workflows/release.yml:
##########
@@ -294,77 +247,86 @@ jobs:
rm -f grails/grails-forge/gradle/wrapper/gradle-wrapper.properties
rm -f grails/grails-forge/gradlew
rm -f grails/KEYS
- - name: "Download CHECKSUMS.txt and rename to CHECKSUMS"
- working-directory: "grails"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: "π₯ Download CHECKSUMS.txt and rename to CHECKSUMS"
+ working-directory: grails
run: |
- release_url=$(gh release view v${{
needs.publish.outputs.release_version }} --json assets --repo ${{
github.repository }} --jq '.assets[] | select(.name == "CHECKSUMS.txt") | .url')
- curl -f -L -H "Authorization: token $GH_TOKEN" -o CHECKSUMS
"$release_url"
- - name: "Download PUBLISHED_ARTIFACTS.txt and rename to
PUBLISHED_ARTIFACTS"
- working-directory: "grails"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ release_url=$(gh release view "${TAG}" --json assets --repo
"${REPO_SLUG}" --jq '.assets[] | select(.name == "CHECKSUMS.txt") | .url')
+ curl -f -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o
CHECKSUMS "$release_url"
+ - name: "π₯ Download PUBLISHED_ARTIFACTS.txt and rename to
PUBLISHED_ARTIFACTS"
+ working-directory: grails
run: |
- release_url=$(gh release view v${{
needs.publish.outputs.release_version }} --json assets --repo ${{
github.repository }} --jq '.assets[] | select(.name ==
"PUBLISHED_ARTIFACTS.txt") | .url')
- curl -f -L -H "Authorization: token $GH_TOKEN" -o
PUBLISHED_ARTIFACTS "$release_url"
- - name: "Download BUILD_DATE.txt and rename to BUILD_DATE"
- working-directory: "grails"
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ release_url=$(gh release view "${TAG}" --json assets --repo
"${REPO_SLUG}" --jq '.assets[] | select(.name == "PUBLISHED_ARTIFACTS.txt") |
.url')
+ curl -f -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o
PUBLISHED_ARTIFACTS "$release_url"
+ - name: "π₯ Download BUILD_DATE.txt and rename to BUILD_DATE"
+ working-directory: grails
run: |
- release_url=$(gh release view v${{
needs.publish.outputs.release_version }} --json assets --repo ${{
github.repository }} --jq '.assets[] | select(.name == "BUILD_DATE.txt") |
.url')
- curl -f -L -H "Authorization: token $GH_TOKEN" -o BUILD_DATE
"$release_url"
- - name: "Ensure source files use common date"
+ release_url=$(gh release view "${TAG}" --json assets --repo
"${REPO_SLUG}" --jq '.assets[] | select(.name == "BUILD_DATE.txt") | .url')
+ curl -f -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o
BUILD_DATE "$release_url"
+ - name: "π
Ensure source files use common date"
run: |
SOURCE_DATE_EPOCH=$(cat grails/BUILD_DATE)
find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: "π¦ Create source distribution ZIP"
- run: |
- zip -r "apache-grails-${{ needs.publish.outputs.release_version
}}-src.zip" grails -x 'grails/.git/*' -x 'grails/.github/*'
+ run: >
+ zip -r
+ apache-grails-${VERSION}-src.zip
+ grails
+ -x 'grails/.git/*'
+ -x 'grails/.github/*'
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
gpg --list-keys
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- name: "π Sign source distribution ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign apache-grails-${{
needs.publish.outputs.release_version }}-src.zip
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+ apache-grails-${VERSION}-src.zip
- name: "π¦ Create source distribution checksum"
- run: |
- sha512sum apache-grails-${{ needs.publish.outputs.release_version
}}-src.zip > "apache-grails-${{ needs.publish.outputs.release_version
}}-src.zip.sha512"
+ run: sha512sum apache-grails-${VERSION}-src.zip >
apache-grails-${VERSION}-src.zip.sha512
- name: "π Upload ZIP and Signature to GitHub Release"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- apache-grails-*-src.zip
- apache-grails-*-src.zip.sha512
- apache-grails-*-src.zip.asc
- - name: "Remove CHECKSUMS.txt asset from release"
- working-directory: "grails"
+ apache-grails-${{ env.VERSION }}-src.zip
Review Comment:
We abstracted so much already - shouldn't we abstract the basename of our
distributions?
##########
.github/workflows/release.yml:
##########
@@ -533,10 +523,12 @@ jobs:
docs:
environment: docs
name: "VOTE SUCCEEDED - Publish Documentation"
- needs: [ publish, source, upload ] # TODO Once we have confirmed release
won't fail, add it as a dependency here
+ needs: [ publish, source, upload, release ]
runs-on: ubuntu-24.04
steps:
- - name: Maximize build space
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "βοΈ Maximize build space"
uses:
easimon/maximize-build-space@c28619d8999a147d5e09c1199f84ff6af6ad5794
Review Comment:
What is this for?
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
- fetch-tags: true
- - name: 'Ensure Common Build Date' # to ensure a reproducible build
+ - name: "π
Store common build date" # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >>
"$GITHUB_ENV"
- - name: "Ensure source files use common date"
- run: |
- find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
+ - name: "π
Ensure source files use common date"
+ run: find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
gpg --list-keys
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- name: "βοΈ Setup JDK"
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
- distribution: liberica
- java-version: '17.0.14' # this must be a specific version for
reproducible builds
+ distribution: ${{ env.JAVA_DISTRIBUTION }}
+ java-version: ${{ env.JAVA_VERSION }}
- name: "π Setup Gradle"
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- - name: "π Store the target branch"
- id: extract_branch
- run: |
- echo "Determining Target Branch"
- TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq
'.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'`
- echo $TARGET_BRANCH
- echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
- - name: "π Store the current release version"
- id: release_version
- run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
- - name: 'βοΈ Run pre-release'
+ develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
+ - name: "βοΈ Run pre-release"
uses: apache/grails-github-actions/pre-release@asf
env:
- RELEASE_VERSION: ${{ steps.release_version.outputs.value }}
+ RELEASE_VERSION: ${{ env.VERSION }}
RELEASE_SCRIPT_PATH: '.github/scripts/setReleasedGrailsVersion.sh'
- - name: 'Fetch release Commit Hash'
Review Comment:
Didn't we determine this is still required because the pre-release replaces
the tag and we want to reference the updated tag?
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
- fetch-tags: true
- - name: 'Ensure Common Build Date' # to ensure a reproducible build
+ - name: "π
Store common build date" # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >>
"$GITHUB_ENV"
- - name: "Ensure source files use common date"
- run: |
- find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
+ - name: "π
Ensure source files use common date"
+ run: find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
gpg --list-keys
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
Review Comment:
we should still set the secret to a variable and then reference that
variable so that when we debug scripts we can see the full script contents in
github actions - otherwise github will mask the secret
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
- fetch-tags: true
- - name: 'Ensure Common Build Date' # to ensure a reproducible build
+ - name: "π
Store common build date" # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >>
"$GITHUB_ENV"
- - name: "Ensure source files use common date"
- run: |
- find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
+ - name: "π
Ensure source files use common date"
+ run: find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
gpg --list-keys
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- name: "βοΈ Setup JDK"
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
- distribution: liberica
- java-version: '17.0.14' # this must be a specific version for
reproducible builds
+ distribution: ${{ env.JAVA_DISTRIBUTION }}
+ java-version: ${{ env.JAVA_VERSION }}
- name: "π Setup Gradle"
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- - name: "π Store the target branch"
- id: extract_branch
- run: |
- echo "Determining Target Branch"
- TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq
'.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'`
- echo $TARGET_BRANCH
- echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
- - name: "π Store the current release version"
- id: release_version
- run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
- - name: 'βοΈ Run pre-release'
+ develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
+ - name: "βοΈ Run pre-release"
uses: apache/grails-github-actions/pre-release@asf
env:
- RELEASE_VERSION: ${{ steps.release_version.outputs.value }}
+ RELEASE_VERSION: ${{ env.VERSION }}
RELEASE_SCRIPT_PATH: '.github/scripts/setReleasedGrailsVersion.sh'
- - name: 'Fetch release Commit Hash'
- id: commit_hash
- env:
- OWNER: ${{ github.repository_owner }}
- REPO: ${{ steps.extract_repository_name.outputs.repository_name }}
- TAG: 'v${{ steps.release_version.outputs.value }}'
- run: |
- ref_json=$(gh api "repos/$OWNER/$REPO/git/ref/tags/$TAG")
-
- type=$(jq -r '.object.type' <<<"$ref_json")
- sha=$(jq -r '.object.sha' <<<"$ref_json")
-
- if [ "$type" = "tag" ]; then
- sha=$(gh api "repos/$OWNER/$REPO/git/tags/$sha" --jq '.object.sha')
- fi
-
- echo "Found Commit Sha: $sha"
-
- echo "value=$sha" >>"$GITHUB_OUTPUT"
- - name: "π§© Run grails-core Assemble"
- run: ./gradlew assemble -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
- - name: "π§© Run grails-forge Assemble"
+ - name: "π§© Run grails-core assemble"
+ run: ./gradlew assemble -PgithubBranch=${TARGET_BRANCH}
+ - name: "π§© Run grails-forge assemble"
working-directory: grails-forge
- run: ./gradlew assemble -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
+ run: ./gradlew assemble -PgithubBranch=${TARGET_BRANCH}
- name: "π¦ Generate grails-core docs"
- run: ./gradlew grails-doc:build -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
- - name: "π Sign wrapper ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign
grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip
- - name: "π¦ Create wrapper checksum"
+ run: ./gradlew grails-doc:build -PgithubBranch=${TARGET_BRANCH}
+ - name: "π Sign grails-wrapper ZIP"
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+
grails-wrapper/build/distributions/apache-grails-wrapper-${VERSION}-bin.zip
+ - name: "π¦ Create grails-wrapper checksum"
run: |
cd grails-wrapper/build/distributions
ls
- sha512sum apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip > "apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.sha512"
+ sha512sum apache-grails-wrapper-${VERSION}-bin.zip >
apache-grails-wrapper-${VERSION}-bin.zip.sha512
echo "Generated checksum for grails wrapper ZIP:"
- cat apache-grails-wrapper-${{ steps.release_version.outputs.value
}}-bin.zip.sha512
- - name: "π€ Upload grails wrapper ZIP"
+ cat apache-grails-wrapper-${VERSION}-bin.zip.sha512
+ - name: "π€ Upload grails-wrapper ZIP"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.sha512
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.asc
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "π Sign CLI ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign
grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip
- - name: "π¦ Create CLI checksum"
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip.sha512
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip.asc
+ - name: "π Sign grails-cli ZIP"
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+
grails-forge/grails-cli/build/distributions/apache-grails-${VERSION}-bin.zip
+ - name: "π¦ Create grails-cli checksum"
run: |
cd grails-forge/grails-cli/build/distributions
ls
- sha512sum apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip > "apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip.sha512"
+ sha512sum apache-grails-${VERSION}-bin.zip >
apache-grails-${VERSION}-bin.zip.sha512
echo "Generated checksum for grails cli ZIP:"
- cat apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip.sha512
- - name: "π€ Upload CLI ZIP"
+ cat apache-grails-${VERSION}-bin.zip.sha512
+ - name: "π€ Upload grails-cli ZIP"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip.sha512
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip.asc
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "Create Staging Repository"
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip.sha512
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip.asc
+ - name: "β¨ Create Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: "true"
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
- SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
- working-directory: 'grails-gradle'
- run: >
- ./gradlew initializeSonatypeStagingRepository
- - name: "π€ Publish Gradle Plugins"
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
+ run: ./gradlew initializeSonatypeStagingRepository
+ - name: "π€ Publish Gradle Plugins to Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
- working-directory: 'grails-gradle'
+ working-directory: grails-gradle
run: >
./gradlew
-x initializeSonatypeStagingRepository
- findSonatypeStagingRepository
- publishToSonatype
+ findSonatypeStagingRepository
+ publishToSonatype
aggregateChecksums
aggregatePublishedArtifacts
- - name: "π€ Publish grails-core"
+ - name: "π€ Publish grails-core to Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
run: >
./gradlew
-x initializeSonatypeStagingRepository
- findSonatypeStagingRepository
- publishToSonatype
+ findSonatypeStagingRepository
+ publishToSonatype
aggregateChecksums
aggregatePublishedArtifacts
- - name: "π€ Publish grails-forge"
+ - name: "π€ Publish grails-forge to Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
- working-directory: "grails-forge"
+ working-directory: grails-forge
run: >
./gradlew
-x initializeSonatypeStagingRepository
- findSonatypeStagingRepository
- publishToSonatype
+ findSonatypeStagingRepository
+ publishToSonatype
aggregateChecksums
aggregatePublishedArtifacts
- - name: "π€ Close Staging Repository"
+ - name: "β
Close Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
- SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
Review Comment:
Are we sure this isn't required? I thought removing this would trigger a
validation error
##########
.github/workflows/release.yml:
##########
@@ -375,116 +337,119 @@ jobs:
SVN_USERNAME: ${{ secrets.SVC_DIST_GRAILS_USERNAME }}
SVN_PASSWORD: ${{ secrets.SVC_DIST_GRAILS_PASSWORD }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
- run: curl -s https://api.ipify.org
- - name: "Setup SVN and Tools"
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "βοΈ Setup SVN and Tools"
run: sudo apt-get install -y subversion subversion-tools tree
gettext-base
- - name: "Ensure grails dev folder exists"
+ - name: "π Ensure dev/grails folder exists"
run: |
set -e
-
- if svn ls https://dist.apache.org/repos/dist/dev/grails --username
"$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive; then
- echo "Dev Folder 'grails' already exists β skipping creation"
+ if svn ls https://dist.apache.org/repos/dist/dev/grails --username
"${SVN_USERNAME}" --password "${SVN_PASSWORD}" --non-interactive; then
+ echo "Dev Folder [grails] already exists β skipping creation"
else
- echo "Dev Folder 'grails' does not exist, creating"
- svnmucc --username "$SVN_USERNAME" --password "$SVN_PASSWORD"
--non-interactive \
+ echo "Dev Folder [grails] does not exist, creating"
Review Comment:
Lets abstract the project host into a variable?
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
Review Comment:
The fetch by ref, depth, and tag is required to correctly calculate the tags
for the doc generation. This needs reverted
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
- fetch-tags: true
- - name: 'Ensure Common Build Date' # to ensure a reproducible build
+ - name: "π
Store common build date" # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >>
"$GITHUB_ENV"
- - name: "Ensure source files use common date"
- run: |
- find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
+ - name: "π
Ensure source files use common date"
+ run: find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
Review Comment:
Isn't this GPG_KEY_ID
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
- fetch-tags: true
- - name: 'Ensure Common Build Date' # to ensure a reproducible build
+ - name: "π
Store common build date" # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >>
"$GITHUB_ENV"
- - name: "Ensure source files use common date"
- run: |
- find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
+ - name: "π
Ensure source files use common date"
+ run: find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
gpg --list-keys
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- name: "βοΈ Setup JDK"
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
- distribution: liberica
- java-version: '17.0.14' # this must be a specific version for
reproducible builds
+ distribution: ${{ env.JAVA_DISTRIBUTION }}
+ java-version: ${{ env.JAVA_VERSION }}
- name: "π Setup Gradle"
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- - name: "π Store the target branch"
- id: extract_branch
- run: |
- echo "Determining Target Branch"
- TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq
'.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'`
- echo $TARGET_BRANCH
- echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
- - name: "π Store the current release version"
- id: release_version
- run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
- - name: 'βοΈ Run pre-release'
+ develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
+ - name: "βοΈ Run pre-release"
uses: apache/grails-github-actions/pre-release@asf
env:
- RELEASE_VERSION: ${{ steps.release_version.outputs.value }}
+ RELEASE_VERSION: ${{ env.VERSION }}
RELEASE_SCRIPT_PATH: '.github/scripts/setReleasedGrailsVersion.sh'
- - name: 'Fetch release Commit Hash'
- id: commit_hash
- env:
- OWNER: ${{ github.repository_owner }}
- REPO: ${{ steps.extract_repository_name.outputs.repository_name }}
- TAG: 'v${{ steps.release_version.outputs.value }}'
- run: |
- ref_json=$(gh api "repos/$OWNER/$REPO/git/ref/tags/$TAG")
-
- type=$(jq -r '.object.type' <<<"$ref_json")
- sha=$(jq -r '.object.sha' <<<"$ref_json")
-
- if [ "$type" = "tag" ]; then
- sha=$(gh api "repos/$OWNER/$REPO/git/tags/$sha" --jq '.object.sha')
- fi
-
- echo "Found Commit Sha: $sha"
-
- echo "value=$sha" >>"$GITHUB_OUTPUT"
- - name: "π§© Run grails-core Assemble"
- run: ./gradlew assemble -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
- - name: "π§© Run grails-forge Assemble"
+ - name: "π§© Run grails-core assemble"
+ run: ./gradlew assemble -PgithubBranch=${TARGET_BRANCH}
+ - name: "π§© Run grails-forge assemble"
working-directory: grails-forge
- run: ./gradlew assemble -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
+ run: ./gradlew assemble -PgithubBranch=${TARGET_BRANCH}
- name: "π¦ Generate grails-core docs"
- run: ./gradlew grails-doc:build -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
- - name: "π Sign wrapper ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign
grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip
- - name: "π¦ Create wrapper checksum"
+ run: ./gradlew grails-doc:build -PgithubBranch=${TARGET_BRANCH}
+ - name: "π Sign grails-wrapper ZIP"
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+
grails-wrapper/build/distributions/apache-grails-wrapper-${VERSION}-bin.zip
+ - name: "π¦ Create grails-wrapper checksum"
run: |
cd grails-wrapper/build/distributions
ls
- sha512sum apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip > "apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.sha512"
+ sha512sum apache-grails-wrapper-${VERSION}-bin.zip >
apache-grails-wrapper-${VERSION}-bin.zip.sha512
echo "Generated checksum for grails wrapper ZIP:"
- cat apache-grails-wrapper-${{ steps.release_version.outputs.value
}}-bin.zip.sha512
- - name: "π€ Upload grails wrapper ZIP"
+ cat apache-grails-wrapper-${VERSION}-bin.zip.sha512
+ - name: "π€ Upload grails-wrapper ZIP"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.sha512
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.asc
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "π Sign CLI ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign
grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip
- - name: "π¦ Create CLI checksum"
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip.sha512
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip.asc
+ - name: "π Sign grails-cli ZIP"
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+
grails-forge/grails-cli/build/distributions/apache-grails-${VERSION}-bin.zip
+ - name: "π¦ Create grails-cli checksum"
run: |
cd grails-forge/grails-cli/build/distributions
ls
- sha512sum apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip > "apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip.sha512"
+ sha512sum apache-grails-${VERSION}-bin.zip >
apache-grails-${VERSION}-bin.zip.sha512
echo "Generated checksum for grails cli ZIP:"
- cat apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip.sha512
- - name: "π€ Upload CLI ZIP"
+ cat apache-grails-${VERSION}-bin.zip.sha512
+ - name: "π€ Upload grails-cli ZIP"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip.sha512
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip.asc
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "Create Staging Repository"
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip.sha512
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip.asc
+ - name: "β¨ Create Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: "true"
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
- SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
- working-directory: 'grails-gradle'
- run: >
- ./gradlew initializeSonatypeStagingRepository
- - name: "π€ Publish Gradle Plugins"
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
+ run: ./gradlew initializeSonatypeStagingRepository
+ - name: "π€ Publish Gradle Plugins to Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
- working-directory: 'grails-gradle'
+ working-directory: grails-gradle
run: >
./gradlew
-x initializeSonatypeStagingRepository
- findSonatypeStagingRepository
- publishToSonatype
+ findSonatypeStagingRepository
+ publishToSonatype
aggregateChecksums
aggregatePublishedArtifacts
- - name: "π€ Publish grails-core"
+ - name: "π€ Publish grails-core to Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
run: >
./gradlew
-x initializeSonatypeStagingRepository
- findSonatypeStagingRepository
- publishToSonatype
+ findSonatypeStagingRepository
+ publishToSonatype
aggregateChecksums
aggregatePublishedArtifacts
- - name: "π€ Publish grails-forge"
+ - name: "π€ Publish grails-forge to Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
- working-directory: "grails-forge"
+ working-directory: grails-forge
run: >
./gradlew
-x initializeSonatypeStagingRepository
- findSonatypeStagingRepository
- publishToSonatype
+ findSonatypeStagingRepository
+ publishToSonatype
aggregateChecksums
aggregatePublishedArtifacts
- - name: "π€ Close Staging Repository"
+ - name: "β
Close Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: 'true'
NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}
NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}
- NEXUS_PUBLISH_URL: 'https://repository.apache.org/service/local/'
+ NEXUS_PUBLISH_URL: ${{ vars.STAGING_URL }}
NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.STAGING_PROFILE_ID }}
- NEXUS_PUBLISH_DESCRIPTION: '${{
steps.extract_repository_name.outputs.repository_name }}:${{
steps.release_version.outputs.value }}'
- SIGNING_KEY: ${{ secrets.GPG_KEY_ID }}
+ NEXUS_PUBLISH_DESCRIPTION: '${{ env.REPO_NAME }}:${{ env.VERSION }}'
run: >
./gradlew
-x initializeSonatypeStagingRepository
findSonatypeStagingRepository
closeSonatypeStagingRepository
- - name: "π©ΉCombine checksums"
+ - name: "π©Ή Combine checksums"
run: |
combined_file="build/CHECKSUMS.txt"
cat build/grails-core-checksums.txt > "$combined_file"
cat grails-gradle/build/grails-gradle-checksums.txt >>
"$combined_file"
cat grails-forge/build/grails-forge-checksums.txt >> "$combined_file"
- - name: "Upload combined checksums"
- uses: softprops/action-gh-release@v2
- with:
- tag_name: ${{ github.event.release.tag_name }}
- files: build/CHECKSUMS.txt
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "π©ΉCombine published artifacts"
+ - name: "π©Ή Combine published artifacts"
run: |
combined_file="build/PUBLISHED_ARTIFACTS.txt"
cat build/grails-core-artifacts.txt > "$combined_file"
cat grails-gradle/build/grails-gradle-artifacts.txt >>
"$combined_file"
cat grails-forge/build/grails-forge-artifacts.txt >> "$combined_file"
- - name: "Upload combined published artifacts"
- uses: softprops/action-gh-release@v2
- with:
- tag_name: ${{ github.event.release.tag_name }}
- files: build/PUBLISHED_ARTIFACTS.txt
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "Generate Build Date file"
+ - name: "π
Generate build date file"
run: echo "$SOURCE_DATE_EPOCH" >> build/BUILD_DATE.txt
- - name: "Upload Build Date file"
+ - name: "π€ Upload build date, checksums and published artifact files"
uses: softprops/action-gh-release@v2
Review Comment:
We should make sure this publishes to a non-draft release by setting that
argument on the action
##########
.github/workflows/release.yml:
##########
@@ -21,267 +21,220 @@ permissions: { }
env:
# to prevent throttling of the github api, include the github token in an
environment variable since the build will check for it
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GRAILS_PUBLISH_RELEASE: true
+ JAVA_DISTRIBUTION: liberica
+ JAVA_VERSION: 17.0.17 # this must be a specific version for reproducible
builds, keep it synced with .sdkmanrc
+ PROJECT_DESC: >
+ Grails is a powerful Groovy-based web application framework for the JVM,
+ built on top of Spring Boot, and supported by a rich ecosystem of plugins
+ that extend its functionality.
+ PROJECT_NAME: Apache Grails
+ REPO_NAME: ${{ github.event.repository.name }}
+ REPO_SLUG: ${{ github.repository }}
+ SVN_FOLDER: core
+ TAG: ${{ github.event.release.tag_name }}
+ TARGET_BRANCH: ${{ github.event.release.target_commitish }}
+ VERSION: will be computed in each job
jobs:
publish:
name: "Stage Jar Files"
permissions:
contents: write # to create release & upload wrapper
issues: write # to modify milestones
runs-on: ubuntu-24.04
- outputs:
- release_version: ${{ steps.release_version.outputs.value }}
- commit_hash: ${{ steps.commit_hash.outputs.value }}
- target_branch: ${{ steps.extract_branch.outputs.value }}
- extract_repository_name: ${{
steps.extract_repository_name.outputs.repository_name }}
steps:
- - name: "Output Agent IP" # in the event RAO blocks this agent, this can
be used to debug it
+ - name: "π Establish release version"
+ run: echo "VERSION=${TAG#v}" >> "$GITHUB_ENV"
+ - name: "π Output Agent IP" # in the event RAO blocks this agent, this
can be used to debug it
run: curl -s https://api.ipify.org
- - name: "Extract repository name"
- id: extract_repository_name
- run: |
- echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
- name: "π₯ Checkout repository"
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
+ ref: ${{ env.TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
- ref: ${{ github.ref }}
- fetch-depth: 1
- fetch-tags: true
- - name: 'Ensure Common Build Date' # to ensure a reproducible build
+ - name: "π
Store common build date" # to ensure a reproducible build
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >>
"$GITHUB_ENV"
- - name: "Ensure source files use common date"
- run: |
- find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
+ - name: "π
Ensure source files use common date"
+ run: find . -depth \( -type f -o -type d \) -exec touch -d
"@${SOURCE_DATE_EPOCH}" {} +
- name: 'π Set up GPG'
run: |
echo "${{ secrets.GRAILS_GPG_KEY }}" | gpg --batch --import
gpg --list-keys
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- name: "βοΈ Setup JDK"
- uses: actions/setup-java@v4
+ uses: actions/setup-java@v5
with:
- distribution: liberica
- java-version: '17.0.14' # this must be a specific version for
reproducible builds
+ distribution: ${{ env.JAVA_DISTRIBUTION }}
+ java-version: ${{ env.JAVA_VERSION }}
- name: "π Setup Gradle"
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- - name: "π Store the target branch"
- id: extract_branch
- run: |
- echo "Determining Target Branch"
- TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq
'.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'`
- echo $TARGET_BRANCH
- echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
- - name: "π Store the current release version"
- id: release_version
- run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
- - name: 'βοΈ Run pre-release'
+ develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
+ - name: "βοΈ Run pre-release"
uses: apache/grails-github-actions/pre-release@asf
env:
- RELEASE_VERSION: ${{ steps.release_version.outputs.value }}
+ RELEASE_VERSION: ${{ env.VERSION }}
RELEASE_SCRIPT_PATH: '.github/scripts/setReleasedGrailsVersion.sh'
- - name: 'Fetch release Commit Hash'
- id: commit_hash
- env:
- OWNER: ${{ github.repository_owner }}
- REPO: ${{ steps.extract_repository_name.outputs.repository_name }}
- TAG: 'v${{ steps.release_version.outputs.value }}'
- run: |
- ref_json=$(gh api "repos/$OWNER/$REPO/git/ref/tags/$TAG")
-
- type=$(jq -r '.object.type' <<<"$ref_json")
- sha=$(jq -r '.object.sha' <<<"$ref_json")
-
- if [ "$type" = "tag" ]; then
- sha=$(gh api "repos/$OWNER/$REPO/git/tags/$sha" --jq '.object.sha')
- fi
-
- echo "Found Commit Sha: $sha"
-
- echo "value=$sha" >>"$GITHUB_OUTPUT"
- - name: "π§© Run grails-core Assemble"
- run: ./gradlew assemble -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
- - name: "π§© Run grails-forge Assemble"
+ - name: "π§© Run grails-core assemble"
+ run: ./gradlew assemble -PgithubBranch=${TARGET_BRANCH}
+ - name: "π§© Run grails-forge assemble"
working-directory: grails-forge
- run: ./gradlew assemble -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
+ run: ./gradlew assemble -PgithubBranch=${TARGET_BRANCH}
- name: "π¦ Generate grails-core docs"
- run: ./gradlew grails-doc:build -PgithubBranch=${{
steps.extract_branch.outputs.value }}
- env:
- GRAILS_PUBLISH_RELEASE: "true"
- - name: "π Sign wrapper ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign
grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip
- - name: "π¦ Create wrapper checksum"
+ run: ./gradlew grails-doc:build -PgithubBranch=${TARGET_BRANCH}
+ - name: "π Sign grails-wrapper ZIP"
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+
grails-wrapper/build/distributions/apache-grails-wrapper-${VERSION}-bin.zip
+ - name: "π¦ Create grails-wrapper checksum"
run: |
cd grails-wrapper/build/distributions
ls
- sha512sum apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip > "apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.sha512"
+ sha512sum apache-grails-wrapper-${VERSION}-bin.zip >
apache-grails-wrapper-${VERSION}-bin.zip.sha512
echo "Generated checksum for grails wrapper ZIP:"
- cat apache-grails-wrapper-${{ steps.release_version.outputs.value
}}-bin.zip.sha512
- - name: "π€ Upload grails wrapper ZIP"
+ cat apache-grails-wrapper-${VERSION}-bin.zip.sha512
+ - name: "π€ Upload grails-wrapper ZIP"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.sha512
- grails-wrapper/build/distributions/apache-grails-wrapper-${{
steps.release_version.outputs.value }}-bin.zip.asc
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "π Sign CLI ZIP"
- env:
- GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
- run: |
- gpg --default-key "${GPG_KEY_ID}" --batch --yes --pinentry-mode
loopback --armor --detach-sign
grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip
- - name: "π¦ Create CLI checksum"
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip.sha512
+ grails-wrapper/build/distributions/apache-grails-wrapper-${{
env.VERSION }}-bin.zip.asc
+ - name: "π Sign grails-cli ZIP"
+ run: >
+ gpg
+ --default-key "${{ secrets.GPG_KEY_ID }}"
+ --batch
+ --yes
+ --pinentry-mode loopback
+ --armor
+ --detach-sign
+
grails-forge/grails-cli/build/distributions/apache-grails-${VERSION}-bin.zip
+ - name: "π¦ Create grails-cli checksum"
run: |
cd grails-forge/grails-cli/build/distributions
ls
- sha512sum apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip > "apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip.sha512"
+ sha512sum apache-grails-${VERSION}-bin.zip >
apache-grails-${VERSION}-bin.zip.sha512
echo "Generated checksum for grails cli ZIP:"
- cat apache-grails-${{ steps.release_version.outputs.value
}}-bin.zip.sha512
- - name: "π€ Upload CLI ZIP"
+ cat apache-grails-${VERSION}-bin.zip.sha512
+ - name: "π€ Upload grails-cli ZIP"
uses: softprops/action-gh-release@v2
with:
- tag_name: ${{ github.event.release.tag_name }}
+ tag_name: ${{ env.TAG }}
files: |
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip.sha512
- grails-forge/grails-cli/build/distributions/apache-grails-${{
steps.release_version.outputs.value }}-bin.zip.asc
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: "Create Staging Repository"
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip.sha512
+ grails-forge/grails-cli/build/distributions/apache-grails-${{
env.VERSION }}-bin.zip.asc
+ - name: "β¨ Create Staging Repository"
env:
- GRAILS_PUBLISH_RELEASE: "true"
Review Comment:
This should still be set
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]