Release #19
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
# Runs manually | |
on: | |
workflow_dispatch | |
jobs: | |
# Adjusts the revision to the latest version, builds images for each OS type/architecture using matrix:os and uploads each binary as a separate artifact | |
build-natives: | |
name: Build native images | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ windows-latest, ubuntu-latest, macos-latest, macos-13 ] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: graalvm/setup-graalvm@v1 | |
with: | |
java-version: '21.0.2' | |
distribution: 'graalvm' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
native-image-job-reports: 'true' | |
- name: Build native image | |
shell: bash | |
run: | | |
maven_config="$(cat .mvn/maven.config)" | |
current_version="${maven_config/#*-Drevision=}" | |
current_version="${current_version/ */}" | |
next_version="${current_version/-SNAPSHOT/}" | |
cd cli | |
mvn -B -ntp -Drevision=${next_version} -Pnative -DskipTests=true package | |
- name: Upload native image | |
uses: actions/upload-artifact@v4 | |
with: | |
name: natives-${{ matrix.os }} | |
path: cli/target/ideasy* | |
# Downloads all native image artifacts to cli/target and builds the project using assemblies for final deployment to Maven Central. | |
# The version number for the next build will be incremented automatically. | |
# A GitHub release and download URLs pointing to the respective OS/architecture archives on Maven Central will be created. | |
release: | |
name: Release on Sonatype OSS | |
runs-on: ubuntu-latest | |
needs: build-natives | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
token: ${{ secrets.ACTION_PUSH_TOKEN }} | |
- name: Set up Apache Maven Central | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 17 | |
distribution: 'temurin' | |
cache: 'maven' | |
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} # Value of the GPG private key to import | |
gpg-passphrase: GPG_PASSPHRASE # env variable for GPG private key passphrase | |
- name: Download natives and build project | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: natives-* | |
path: ./cli/target/ | |
- name: Create assemblies and publish to Apache Maven Central | |
run: | | |
maven_config="$(cat .mvn/maven.config)" | |
current_version="${maven_config/#*-Drevision=}" | |
current_version="${current_version/ */}" | |
next_version="${current_version/-SNAPSHOT/}" | |
sed -i "s/${current_version}/${next_version}/" .mvn/maven.config | |
git config --global user.email ${{ secrets.BUILD_USER_EMAIL }} | |
git config --global user.name ${{ secrets.BUILD_USER }} | |
git add -f .mvn/maven.config | |
git commit -m "set release version to ${next_version}" | |
git tag -a "release/${next_version}" -m "tagged version ${next_version}" | |
export GPG_TTY=$TTY | |
mkdir -p ./cli/target/ | |
mvn --settings .mvn/settings.xml -B -ntp deploy -Passembly,deploy -Dgpg.pin.entry.mode=loopback -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} | |
env: | |
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} | |
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
- name: set next version & create gitHub release | |
run: | | |
maven_config="$(cat .mvn/maven.config)" | |
current_version="${maven_config/#*-Drevision=}" | |
current_version="${current_version/ */}" | |
current_segment="${current_version/*./}" | |
last_digits="${current_segment/[^0-9]*/}" | |
suffix="${current_segment/${last_digits}/}" | |
(( next_segment=${last_digits}+1 )) | |
while [ ${#next_segment} -lt 3 ]; do next_segment="0${next_segment}"; done | |
next_version="${current_version%.*}.${next_segment}${suffix}-SNAPSHOT" | |
sed -i "s/${current_version}/${next_version}/" .mvn/maven.config | |
git add -f .mvn/maven.config | |
git commit -m "set next version to ${next_version}" | |
# prevent GH006 error when pushing to protected branch | |
git push | |
git push --tags | |
noDotVersion="${current_version//.}" | |
gh release create "release/${current_version}" ./cli/target/*.tar.gz --title "${current_version}" --notes "# Download | |
* Windows: https://repo1.maven.org/maven2/com/devonfw/tools/IDEasy/ide-cli/${current_version}/ide-cli-${current_version}-windows-x64.tar.gz | |
* Mac(arm): https://repo1.maven.org/maven2/com/devonfw/tools/IDEasy/ide-cli/${current_version}/ide-cli-${current_version}-mac-arm.tar.gz | |
* Mac(x64): https://repo1.maven.org/maven2/com/devonfw/tools/IDEasy/ide-cli/${current_version}/ide-cli-${current_version}-mac-x64.tar.gz | |
* Linux: https://repo1.maven.org/maven2/com/devonfw/tools/IDEasy/ide-cli/${current_version}/ide-cli-${current_version}-linux-x64.tar.gz | |
# Changes | |
https://github.com/devonfw/IDEasy/blob/main/CHANGELOG.adoc#${noDotVersion/-beta/}" | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
BUILD_USER: ${{ secrets.BUILD_USER }} | |
BUILD_USER_PASSWD: ${{ secrets.BUILD_USER_PASSWD }} |