You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/04/11 11:28:13 UTC
[maven-mvnd] branch master updated: Refactor build and release workflows (#574)
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git
The following commit(s) were added to refs/heads/master by this push:
new 8ae4f16 Refactor build and release workflows (#574)
8ae4f16 is described below
commit 8ae4f1652363686aa087bd35cf3ea931f2825e13
Author: Andres Almiray <aa...@yahoo.com>
AuthorDate: Mon Apr 11 13:28:08 2022 +0200
Refactor build and release workflows (#574)
* Refactor early-access builds with JReleaser
* Add brew and sdkman to release configuration
* Tweak changelog generation
* Do not trigger verify workflow when changelog is updated
* Add release workflows
* Exclude template files from license check
* configure access tokens for Homebrew and Sdkman
* Fix Graal settings in workflows
* setup-graalvm takes care of adjusting the environment on Windows
* Fix workflow configuration
* Uncoment sdkman settings in workflow
* Remove explicit JReleaser build from workflows
* Configure SCM urls
* Update to JReleaser 1.0.0-M1
* Update to JReleaser 1.0.0-RC2
* Update to JReleaser 1.0.0
---
.github/workflows/early-access.yaml | 116 +++++++++
.github/workflows/release-candidate-stage1.yml | 95 ++++++++
.github/workflows/release-candidate-stage2.yml | 65 +++++
.github/workflows/release.yaml | 114 +++++++++
.github/workflows/test-jdk11.yaml | 144 ------------
.github/workflows/verify.yaml | 261 ---------------------
pom.xml | 149 +++++++++++-
.../distributions/mvnd/brew/README.md.tpl | 15 ++
.../distributions/mvnd/brew/formula-multi.rb.tpl | 67 ++++++
9 files changed, 618 insertions(+), 408 deletions(-)
diff --git a/.github/workflows/early-access.yaml b/.github/workflows/early-access.yaml
new file mode 100644
index 0000000..8f3039f
--- /dev/null
+++ b/.github/workflows/early-access.yaml
@@ -0,0 +1,116 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Early Access
+
+# trigger on push to branches and PR
+on:
+ push:
+ branch:
+ pull_request:
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ build:
+ name: 'Build with Graal on ${{ matrix.os }}'
+ if: startsWith(github.event.head_commit.message, 'Updated CHANGELOG.md') != true && startsWith(github.event.head_commit.message, '[maven-release-plugin]') != true
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ ubuntu-18.04, macOS-10.15, windows-2019 ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+
+ - name: 'Set vars'
+ shell: bash
+ run: |
+ OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}')
+ [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+
+ - name: 'Set up Graal'
+ uses: graalvm/setup-graalvm@v1
+ with:
+ version: ${{ env.GRAALVM_VERSION }}
+ java-version: ${{ env.JAVA_VERSION }}
+ components: 'native-image'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 'Build native distribution'
+ run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e
+
+ - name: 'Upload daemon test logs'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: daemon-test-logs-${{ env.OS }}
+ path: integration-tests/target/mvnd-tests/**/daemon*.log
+
+ - name: 'Upload artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: artifacts
+ path: dist/target/mvnd-*.zip
+
+ early-access:
+ runs-on: ubuntu-18.04
+ needs: [build]
+ # Only post early access releases when push to master
+ if: ${{ !github.event.issue.pull_request }} && startsWith(github.ref, 'refs/heads/master')
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: 'Download all build artifacts'
+ uses: actions/download-artifact@v2
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release to GitHub'
+ env:
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: ./mvnw -B --file pom.xml -pl :mvnd -DartifactsDir=artifacts jreleaser:release
+
+ - name: 'JReleaser output'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: jreleaser-logs
+ path: |
+ target/jreleaser/trace.log
+ target/jreleaser/output.properties
diff --git a/.github/workflows/release-candidate-stage1.yml b/.github/workflows/release-candidate-stage1.yml
new file mode 100644
index 0000000..e7fec3f
--- /dev/null
+++ b/.github/workflows/release-candidate-stage1.yml
@@ -0,0 +1,95 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Release Candidate - Stage1
+
+# manual trigger
+on:
+ workflow_dispatch:
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ build:
+ name: 'Build with Graal on ${{ matrix.os }}'
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ ubuntu-18.04, macOS-10.15, windows-2019 ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+
+ - name: 'Set vars'
+ shell: bash
+ run: |
+ OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}')
+ [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+
+ - name: 'Set up Graal'
+ uses: graalvm/setup-graalvm@v1
+ with:
+ version: ${{ env.GRAALVM_VERSION }}
+ java-version: ${{ env.JAVA_VERSION }}
+ components: 'native-image'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 'Build native distribution'
+ run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e
+
+ - name: 'Upload daemon test logs'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: daemon-test-logs-${{ env.OS }}
+ path: integration-tests/target/mvnd-tests/**/daemon*.log
+
+ release:
+ runs-on: ubuntu-18.04
+ needs: [build]
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ # required for triggering release-candidate-stage2
+ token: ${{ secrets.GIT_ACCESS_TOKEN }}
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release'
+ run: |
+ ./mvnw -B -ntp \
+ -Drepository.url=https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git \
+ release:prepare
diff --git a/.github/workflows/release-candidate-stage2.yml b/.github/workflows/release-candidate-stage2.yml
new file mode 100644
index 0000000..cbd57e1
--- /dev/null
+++ b/.github/workflows/release-candidate-stage2.yml
@@ -0,0 +1,65 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Release Candidate - Stage2
+
+# push on tag but not on 'early-access'
+on:
+ push:
+ tags:
+ - '!early-access'
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release to GitHub'
+ env:
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: ./mvnw -B --file pom.xml -pl :mvnd -Pprerelease jreleaser:release
+
+ - name: 'JReleaser output'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: jreleaser-logs
+ path: |
+ target/jreleaser/trace.log
+ target/jreleaser/output.properties
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
new file mode 100644
index 0000000..a4b3ef7
--- /dev/null
+++ b/.github/workflows/release.yaml
@@ -0,0 +1,114 @@
+#
+# Copyright (c) 2017 Angelo Zerr and other contributors as
+# indicated by the @author tags.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Release
+
+# manual trigger
+on:
+ workflow_dispatch:
+
+env:
+ GRAALVM_VERSION: '21.3.0'
+ JAVA_VERSION: '17'
+
+jobs:
+ build:
+ name: 'Build with Graal on ${{ matrix.os }}'
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ ubuntu-18.04, macOS-10.15, windows-2019 ]
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+
+ - name: 'Set vars'
+ shell: bash
+ run: |
+ OS=$(echo '${{ runner.os }}' | awk '{print tolower($0)}')
+ [[ $OS == 'ubuntu' ]] && echo "OS=linux" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ [[ $OS == 'macos' ]] && echo "OS=darwin" >> $GITHUB_ENV || echo "OS=$OS" >> $GITHUB_ENV
+ echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
+
+ - name: 'Set up Graal'
+ uses: graalvm/setup-graalvm@v1
+ with:
+ version: ${{ env.GRAALVM_VERSION }}
+ java-version: ${{ env.JAVA_VERSION }}
+ components: 'native-image'
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: 'Build native distribution'
+ run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e
+
+ - name: 'Upload daemon test logs'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: daemon-test-logs-${{ env.OS }}
+ path: integration-tests/target/mvnd-tests/**/daemon*.log
+
+ - name: 'Upload artifact'
+ uses: actions/upload-artifact@v2
+ with:
+ name: artifacts
+ path: dist/target/mvnd-*.zip
+
+ release:
+ runs-on: ubuntu-18.04
+ needs: [build]
+
+ steps:
+ - name: 'Check out repository'
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: 'Download all build artifacts'
+ uses: actions/download-artifact@v2
+
+ - name: 'Set up Java'
+ uses: actions/setup-java@v2
+ with:
+ java-version: ${{ env.JAVA_VERSION }}
+ distribution: 'zulu'
+
+ - name: 'Cache Maven packages'
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: 'Release to GitHub'
+ env:
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ JRELEASER_HOMEBREW_GITHUB_TOKEN: ${{ secrets.GIT_ACCESS_TOKEN }}
+ JRELEASER_SDKMAN_CONSUMER_KEY: ${{ secrets.SDKMAN_CONSUMER_KEY }}
+ JRELEASER_SDKMAN_CONSUMER_TOKEN: ${{ secrets.SDKMAN_CONSUMER_TOKEN }}
+ run: ./mvnw -B --file pom.xml -pl :mvnd -Prelease -DartifactsDir=artifacts jreleaser:full-release
+
+ - name: 'JReleaser output'
+ if: always()
+ uses: actions/upload-artifact@v2
+ with:
+ name: jreleaser-logs
+ path: |
+ target/jreleaser/trace.log
+ target/jreleaser/output.properties
diff --git a/.github/workflows/test-jdk11.yaml b/.github/workflows/test-jdk11.yaml
deleted file mode 100644
index 83570bb..0000000
--- a/.github/workflows/test-jdk11.yaml
+++ /dev/null
@@ -1,144 +0,0 @@
-#
-# Copyright (c) 2017 Angelo Zerr and other contributors as
-# indicated by the @author tags.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: GitHub Actions
-on: [push, pull_request]
-
-env:
- GRAALVM_VERSION: '21.3.0.java11'
-
-jobs:
-
- linux-jdk11:
- runs-on: ubuntu-18.04
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-linux
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-linux-amd64.zip
- path: dist/target/mvnd-*.zip
-
- windows-jdk11:
- runs-on: windows-2019
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- shell: bash
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- shell: cmd
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- shell: cmd
- run: |
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e %SKIP_TESTS_OPT%
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-windows
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-windows-amd64.zip
- path: dist/target/mvnd-*.zip
-
- darwin-jdk11:
- runs-on: macos-10.15
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-darwin
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-darwin-amd64.zip
- path: dist/target/mvnd-*.zip
-
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
deleted file mode 100644
index 58de2fc..0000000
--- a/.github/workflows/verify.yaml
+++ /dev/null
@@ -1,261 +0,0 @@
-#
-# Copyright (c) 2017 Angelo Zerr and other contributors as
-# indicated by the @author tags.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: GitHub Actions
-on: [push, pull_request]
-
-env:
- GRAALVM_VERSION: '21.3.0.java17'
-
-jobs:
-
- linux:
- runs-on: ubuntu-18.04
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-linux
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-linux-amd64.zip
- path: dist/target/mvnd-*.zip
-
- windows:
- runs-on: windows-2019
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- shell: bash
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- shell: cmd
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- shell: cmd
- run: |
- call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
- ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e %SKIP_TESTS_OPT%
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-windows
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-windows-amd64.zip
- path: dist/target/mvnd-*.zip
-
- darwin:
- runs-on: macos-10.15
- steps:
-
- - uses: actions/checkout@v1
-
- - name: Set VERSION env var
- run: echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
-
- - name: setup-graalvm-ce
- uses: DeLaGuardo/setup-graalvm@5.0
- with:
- graalvm-version: ${{ env.GRAALVM_VERSION }}
-
- - name: gu install native-image
- run: gu install native-image
-
- - name: Skip tests when releasing from a tag
- if: startsWith(github.ref, 'refs/tags')
- shell: bash
- run: echo "SKIP_TESTS_OPT=-DskipTests" >> $GITHUB_ENV
-
- - name: mvn clean verify
- run: ./mvnw clean verify -Pnative -Dmrm=false -B -ntp -e $SKIP_TESTS_OPT
-
- - name: Upload daemon test logs
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v2
- with:
- name: daemon-test-logs-darwin
- path: integration-tests/target/mvnd-tests/**/daemon*.log
-
- - name: Upload mvnd.zip
- uses: actions/upload-artifact@v2
- with:
- name: mvnd-darwin-amd64.zip
- path: dist/target/mvnd-*.zip
-
- deploy:
- runs-on: ubuntu-18.04
- needs: [linux, windows, darwin]
- if: startsWith(github.ref, 'refs/tags') # deploy only for tags
- steps:
-
- - name: Download artifacts
- uses: actions/download-artifact@v2
-
- - name: ls -R
- run: ls -R
-
- - name: Set environment
- run: |
- if [[ ${GITHUB_REF} = refs/heads/* ]]
- then
- VERSION=${GITHUB_REF##*/}-${GITHUB_SHA::8}
- else
- VERSION=${GITHUB_REF##*/}
- fi
- echo "Using VERSION=$VERSION"
- echo "VERSION=$VERSION" >> $GITHUB_ENV
-
- - name: Compute sha256 checksums
- run: |
- sha256sum mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip | cut -d ' ' -f 1 > mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip.sha256
- sha256sum mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip | cut -d ' ' -f 1 > mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip.sha256
- sha256sum mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip | cut -d ' ' -f 1 > mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip.sha256
-
- - name: Create Release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: ${{ env.VERSION }}
- release_name: ${{ env.VERSION }}
- draft: false
- prerelease: false
-
- - name: Deploy mvnd-linux-amd64.zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip
- asset_name: mvnd-${{ env.VERSION }}-linux-amd64.zip
- asset_content_type: application/zip
-
- - name: Deploy mvnd-linux-amd64.zip.sha256
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-linux-amd64.zip/mvnd-${{ env.VERSION }}-linux-amd64.zip.sha256
- asset_name: mvnd-${{ env.VERSION }}-linux-amd64.zip.sha256
- asset_content_type: text/plain
-
- - name: Deploy mvnd-darwin-amd64.zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip
- asset_name: mvnd-${{ env.VERSION }}-darwin-amd64.zip
- asset_content_type: application/zip
-
- - name: Deploy mvnd-darwin-amd64.zip.sha256
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-darwin-amd64.zip/mvnd-${{ env.VERSION }}-darwin-amd64.zip.sha256
- asset_name: mvnd-${{ env.VERSION }}-darwin-amd64.zip.sha256
- asset_content_type: text/plain
-
- - name: Deploy mvnd-windows-amd64.zip
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip
- asset_name: mvnd-${{ env.VERSION }}-windows-amd64.zip
- asset_content_type: application/zip
-
- - name: Deploy mvnd-windows-amd64.zip.sha256
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: mvnd-windows-amd64.zip/mvnd-${{ env.VERSION }}-windows-amd64.zip.sha256
- asset_name: mvnd-${{ env.VERSION }}-windows-amd64.zip.sha256
- asset_content_type: text/plain
-
- - uses: actions/checkout@v1
-
- - name: Publish on sdkman.io
- env:
- SDKMAN_CONSUMER_KEY: ${{ secrets.SDKMAN_CONSUMER_KEY }}
- SDKMAN_CONSUMER_TOKEN: ${{ secrets.SDKMAN_CONSUMER_TOKEN }}
- run: ./build/publish-on-sdkman.sh "${{ env.VERSION }}"
-
- - name: Update the mvnd Homebrew tap
- env:
- MVND_CI_TOKEN: ${{ secrets.MVND_CI_TOKEN }}
- run: |
- curl -u ":$MVND_CI_TOKEN" \
- -X POST \
- -H "Accept: application/vnd.github.v3+json" \
- https://api.github.com/repos/mvndaemon/homebrew-mvnd/actions/workflows/release.yaml/dispatches \
- -d '{"ref": "master"}'
diff --git a/pom.xml b/pom.xml
index 90cc1d3..8080a62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,6 +41,8 @@
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<trimStackTrace>false</trimStackTrace>
+ <project.github.repository>apache/maven-mvnd</project.github.repository>
+ <repository.url>github.com:${project.github.repository}</repository.url>
<!-- dependency versions a..z -->
<apiguardian-api.version>1.0.0</apiguardian-api.version>
@@ -71,9 +73,19 @@
<mrm.version>1.2.0</mrm.version>
<surefire.version>3.0.0-M5</surefire.version><!-- keep in sync with junit-platform-launcher.version -->
<junit-platform-launcher.version>1.3.2</junit-platform-launcher.version><!-- keep in sync with surefire.version -->
+ <release.plugin.version>3.0.0-M5</release.plugin.version>
<takari-lifecycle.version>1.13.9</takari-lifecycle.version>
<takari-provisio.version>1.0.19</takari-provisio.version>
+ <jreleaser.version>1.0.0</jreleaser.version>
+ <jreleaser.prerelease>false</jreleaser.prerelease>
+ <jreleaser.upload.assets>ALWAYS</jreleaser.upload.assets>
+ <jreleaser.distribution.active>ALWAYS</jreleaser.distribution.active>
+ <jreleaser.overwrite>false</jreleaser.overwrite>
+ <jreleaser.update>false</jreleaser.update>
+ <jreleaser.brew.active>NEVER</jreleaser.brew.active>
+ <jreleaser.sdkman.active>NEVER</jreleaser.sdkman.active>
+
<javassist.version>3.27.0-GA</javassist.version>
</properties>
@@ -91,9 +103,9 @@
</modules>
<scm>
- <connection>scm:git:git@github.com:mvndaemon/mvnd.git</connection>
- <developerConnection>scm:git:git@github.com:mvndaemon/mvnd.git</developerConnection>
- <url>https://github.com/mvndaemon/mvnd</url>
+ <url>${repository.url}</url>
+ <connection>scm:git:${repository.url}.git</connection>
+ <developerConnection>scm:git:${repository.url}.git</developerConnection>
<tag>head</tag>
</scm>
@@ -332,6 +344,7 @@ limitations under the License.</inlineHeader>
<exclude>**/*.jnilib</exclude>
<exclude>**/Makefile*</exclude>
<exclude>**/docker/*</exclude>
+ <exclude>**/*.tpl</exclude>
</excludes>
<mapping>
<bash>SCRIPT_STYLE</bash>
@@ -451,6 +464,16 @@ limitations under the License.</inlineHeader>
<artifactId>native-image-maven-plugin</artifactId>
<version>${graalvm.plugin.version}</version>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-release-plugin</artifactId>
+ <version>${release.plugin.version}</version>
+ <configuration>
+ <useReleaseProfile>false</useReleaseProfile>
+ <autoVersionSubmodules>true</autoVersionSubmodules>
+ <tagNameFormat>@{project.version}</tagNameFormat>
+ </configuration>
+ </plugin>
</plugins>
</pluginManagement>
@@ -528,7 +551,127 @@ limitations under the License.</inlineHeader>
</execution>
</executions>
</plugin>
+
+ <plugin>
+ <groupId>org.jreleaser</groupId>
+ <artifactId>jreleaser-maven-plugin</artifactId>
+ <version>${jreleaser.version}</version>
+ <inherited>false</inherited>
+ <configuration>
+ <jreleaser>
+ <environment>
+ <properties>
+ <artifactsDir>dist/target</artifactsDir>
+ </properties>
+ </environment>
+ <project>
+ <name>mvnd</name>
+ <description>Maven Daemon</description>
+ <license>Apache-2.0</license>
+ <website>https://github.com/mvndaemon/mvnd</website>
+ <authors>The Maven project</authors>
+ <tags>maven,mvn,daemon,graalvm</tags>
+ </project>
+ <release>
+ <github>
+ <branch>master</branch>
+ <skipTag>true</skipTag>
+ <tagName>{{projectVersion}}</tagName>
+ <releaseName>{{projectVersion}}</releaseName>
+ <prerelease>
+ <enabled>${jreleaser.prerelease}</enabled>
+ </prerelease>
+ <overwrite>${jreleaser.overwrite}</overwrite>
+ <update>
+ <enabled>${jreleaser.update}</enabled>
+ </update>
+ <uploadAssets>${jreleaser.upload.assets}</uploadAssets>
+ <changelog>
+ <formatted>ALWAYS</formatted>
+ <format>- {{commitShortHash}} {{commitTitle}}</format>
+ <contributors>
+ <format>- {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}}</format>
+ </contributors>
+ <labelers>
+ <labeler>
+ <label>update-changelog</label>
+ <title>Updated CHANGELOG.md</title>
+ </labeler>
+ </labelers>
+ <categories>
+ <category>
+ <key>changelog</key>
+ <title>changelog</title>
+ <labels>update-changelog</labels>
+ </category>
+ </categories>
+ <hide>
+ <categories>changelog</categories>
+ <contributors>GitHub,bot</contributors>
+ </hide>
+ </changelog>
+ </github>
+ </release>
+ <distributions>
+ <mvnd>
+ <type>NATIVE_IMAGE</type>
+ <active>${jreleaser.distribution.active}</active>
+ <artifacts>
+ <artifact>
+ <path>{{artifactsDir}}/mvnd-{{projectVersion}}-linux-amd64.zip</path>
+ <platform>linux-x86_64</platform>
+ </artifact>
+ <artifact>
+ <path>{{artifactsDir}}/mvnd-{{projectVersion}}-windows-amd64.zip</path>
+ <platform>windows-x86_64</platform>
+ </artifact>
+ <artifact>
+ <path>{{artifactsDir}}/mvnd-{{projectVersion}}-darwin-amd64.zip</path>
+ <platform>osx-x86_64</platform>
+ </artifact>
+ </artifacts>
+ <brew>
+ <active>${jreleaser.brew.active}</active>
+ <multiPlatform>true</multiPlatform>
+ <tap>
+ <owner>mvndaemon</owner>
+ <name>homebrew-mvnd</name>
+ <commitMessage>Release {{tagName}}</commitMessage>
+ </tap>
+ </brew>
+ <sdkman>
+ <active>${jreleaser.sdkman.active}</active>
+ </sdkman>
+ </mvnd>
+ </distributions>
+ </jreleaser>
+ </configuration>
+ </plugin>
</plugins>
</build>
+ <profiles>
+ <profile>
+ <id>prerelease</id>
+ <properties>
+ <jreleaser.prerelease>true</jreleaser.prerelease>
+ <jreleaser.upload.assets>PRERELEASE</jreleaser.upload.assets>
+ <jreleaser.distribution.active>NEVER</jreleaser.distribution.active>
+ <jreleaser.overwrite>false</jreleaser.overwrite>
+ <jreleaser.update>false</jreleaser.update>
+ </properties>
+ </profile>
+ <profile>
+ <id>release</id>
+ <properties>
+ <jreleaser.prerelease>false</jreleaser.prerelease>
+ <jreleaser.upload.assets>RELEASE</jreleaser.upload.assets>
+ <jreleaser.distribution.active>ALWAYS</jreleaser.distribution.active>
+ <jreleaser.overwrite>false</jreleaser.overwrite>
+ <jreleaser.update>true</jreleaser.update>
+ <jreleaser.brew.active>RELEASE</jreleaser.brew.active>
+ <jreleaser.sdkman.active>RELEASE</jreleaser.sdkman.active>
+ </properties>
+ </profile>
+ </profiles>
</project>
diff --git a/src/jreleaser/distributions/mvnd/brew/README.md.tpl b/src/jreleaser/distributions/mvnd/brew/README.md.tpl
new file mode 100644
index 0000000..aa8f441
--- /dev/null
+++ b/src/jreleaser/distributions/mvnd/brew/README.md.tpl
@@ -0,0 +1,15 @@
+# Homebrew tap for mvnd
+
+This is a homebrew tap for https://github.com/{{repoOwner}}/mvnd[`mvnd`, the Maven Daemon].
+
+Tap and install with
+
+```
+brew install {{repoOwner}}/homebrew-mvnd/mvnd
+```
+
+Afterwards, `mvnd` is available on the path and you can build your Maven based Java programs like this:
+
+```
+mvnd clean verify
+```
diff --git a/src/jreleaser/distributions/mvnd/brew/formula-multi.rb.tpl b/src/jreleaser/distributions/mvnd/brew/formula-multi.rb.tpl
new file mode 100644
index 0000000..55bbf59
--- /dev/null
+++ b/src/jreleaser/distributions/mvnd/brew/formula-multi.rb.tpl
@@ -0,0 +1,67 @@
+# {{jreleaserCreationStamp}}
+class {{brewFormulaName}} < Formula
+ desc "{{projectDescription}}"
+ homepage "{{projectWebsite}}"
+ version "{{projectVersion}}"
+ license "{{projectLicense}}"
+
+ {{brewMultiPlatform}}
+
+ livecheck do
+ url :stable
+ end
+
+ depends_on "openjdk" => :recommended
+
+ def install
+ # Remove windows files
+ rm_f Dir["bin/*.cmd"]
+
+ # Replace mvnd by using mvnd.sh
+ if Hardware::CPU.arm?
+ mv "bin/mvnd.sh", "bin/mvnd", force: true
+ end
+
+ libexec.install Dir["*"]
+
+ Pathname.glob("#{libexec}/bin/*") do |file|
+ next if file.directory?
+
+ basename = file.basename
+ (bin/basename).write_env_script file, Language::Java.overridable_java_home_env
+ end
+
+ daemon = var + 'run/mvnd'
+ FileUtils.mkdir_p "#{daemon}", mode: 0775 unless daemon.exist?
+ FileUtils.ln_sf(daemon, libexec + 'daemon')
+ end
+
+ test do
+ (testpath/"settings.xml").write <<~EOS
+ <settings><localRepository>#{testpath}/repository</localRepository></settings>
+ EOS
+ (testpath/"pom.xml").write <<~EOS
+ <?xml version="1.0" encoding="UTF-8"?>
+ <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.homebrew</groupId>
+ <artifactId>maven-test</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <properties>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
+ </project>
+ EOS
+ (testpath/"src/main/java/org/homebrew/MavenTest.java").write <<~EOS
+ package org.homebrew;
+ public class MavenTest {
+ public static void main(String[] args) {
+ System.out.println("Testing Maven with Homebrew!");
+ }
+ }
+ EOS
+ system "#{bin}/mvnd", "-gs", "#{testpath}/settings.xml", "compile"
+ end
+end