diff --git a/.github/workflows/early-access.yaml b/.github/workflows/early-access.yaml new file mode 100644 index 00000000..8f3039f3 --- /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 00000000..e7fec3ff --- /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 00000000..cbd57e1e --- /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 00000000..a4b3ef79 --- /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 83570bb0..00000000 --- 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 58de2fcc..00000000 --- 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 90cc1d33..8080a62a 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,8 @@ 1.8 1.8 false + apache/maven-mvnd + github.com:${project.github.repository} 1.0.0 @@ -71,9 +73,19 @@ 1.2.0 3.0.0-M5 1.3.2 + 3.0.0-M5 1.13.9 1.0.19 + 1.0.0 + false + ALWAYS + ALWAYS + false + false + NEVER + NEVER + 3.27.0-GA @@ -91,9 +103,9 @@ - scm:git:git@github.com:mvndaemon/mvnd.git - scm:git:git@github.com:mvndaemon/mvnd.git - https://github.com/mvndaemon/mvnd + ${repository.url} + scm:git:${repository.url}.git + scm:git:${repository.url}.git head @@ -332,6 +344,7 @@ limitations under the License. **/*.jnilib **/Makefile* **/docker/* + **/*.tpl SCRIPT_STYLE @@ -451,6 +464,16 @@ limitations under the License. native-image-maven-plugin ${graalvm.plugin.version} + + org.apache.maven.plugins + maven-release-plugin + ${release.plugin.version} + + false + true + @{project.version} + + @@ -528,7 +551,127 @@ limitations under the License. + + + org.jreleaser + jreleaser-maven-plugin + ${jreleaser.version} + false + + + + + dist/target + + + + mvnd + Maven Daemon + Apache-2.0 + https://github.com/mvndaemon/mvnd + The Maven project + maven,mvn,daemon,graalvm + + + + master + true + {{projectVersion}} + {{projectVersion}} + + ${jreleaser.prerelease} + + ${jreleaser.overwrite} + + ${jreleaser.update} + + ${jreleaser.upload.assets} + + ALWAYS + - {{commitShortHash}} {{commitTitle}} + + - {{contributorName}}{{#contributorUsernameAsLink}} ({{.}}){{/contributorUsernameAsLink}} + + + + + Updated CHANGELOG.md + + + + + changelog + changelog + update-changelog + + + + changelog + GitHub,bot + + + + + + + NATIVE_IMAGE + ${jreleaser.distribution.active} + + + {{artifactsDir}}/mvnd-{{projectVersion}}-linux-amd64.zip + linux-x86_64 + + + {{artifactsDir}}/mvnd-{{projectVersion}}-windows-amd64.zip + windows-x86_64 + + + {{artifactsDir}}/mvnd-{{projectVersion}}-darwin-amd64.zip + osx-x86_64 + + + + ${jreleaser.brew.active} + true + + mvndaemon + homebrew-mvnd + Release {{tagName}} + + + + ${jreleaser.sdkman.active} + + + + + + + + + prerelease + + true + PRERELEASE + NEVER + false + false + + + + release + + false + RELEASE + ALWAYS + false + true + RELEASE + RELEASE + + + 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 00000000..aa8f4410 --- /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 00000000..55bbf590 --- /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 + #{testpath}/repository + EOS + (testpath/"pom.xml").write <<~EOS + + + 4.0.0 + org.homebrew + maven-test + 1.0.0-SNAPSHOT + + 1.8 + 1.8 + + + 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