Skip to content

Release

Release #71

Workflow file for this run

name: Release
on:
workflow_dispatch:
jobs:
create-release:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
packages: write
outputs:
upload_url: ${{ steps.release.outputs.upload_url }}
revision: ${{ steps.revision.outputs.revision }}
steps:
- id: release
uses: release-drafter/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- id: revision
run: echo "revision=$(echo '${{ steps.release.outputs.tag_name }}' | cut -c2-)" >> $GITHUB_OUTPUT
build:
runs-on: ${{ matrix.os }}
permissions:
contents: write
pull-requests: write
packages: write
needs: create-release
strategy:
matrix:
os: [ macos-latest, windows-latest, ubuntu-latest ]
include:
- os: ubuntu-latest
cli_assembly_id: linux-amd64
cli_assembly_format: tar.gz
- os: windows-latest
cli_assembly_id: windows-amd64
cli_assembly_format: zip
gu_executable_ext: .cmd
- os: macos-latest
cli_assembly_id: macos-amd64
cli_assembly_format: tar.gz
steps:
- uses: ilammy/msvc-dev-cmd@v1
if: ${{ matrix.os == 'windows-latest'}}
- run: ldd --version
if: ${{ matrix.os == 'ubuntu-latest'}}
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- uses: Project-Env/[email protected]
- uses: repolevedavaj/[email protected]
with:
nsis-version: 3.08
if: ${{ matrix.os == 'windows-latest'}}
- run: mvn -B -s etc/m2/settings.xml deploy -Pnative-image "-Drevision=${{ needs.create-release.outputs.revision }}" "-Dcli.assembly.id=${{ matrix.cli_assembly_id }}" "-Dcli.assembly.format=${{ matrix.cli_assembly_format }}"
if: ${{ matrix.os == 'ubuntu-latest' }}
env:
GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- run: mvn -B -s etc/m2/settings.xml verify -Pnative-image "-Drevision=${{ needs.create-release.outputs.revision }}" "-Dcli.assembly.id=${{ matrix.cli_assembly_id }}" "-Dcli.assembly.format=${{ matrix.cli_assembly_format }}"
if: ${{ matrix.os != 'ubuntu-latest' }}
env:
GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: repolevedavaj/create-cli-app-nsis-installer@main
if: ${{ matrix.os == 'windows-latest'}}
with:
package-identifier: ProjectEnv.ProjectEnvCli
package-name: Project-Env Cli
package-version: ${{ needs.create-release.outputs.revision }}
source-directory: code/cli/target/cli-${{ needs.create-release.outputs.revision }}-${{ matrix.cli_assembly_id }}
- name: Sign and notarize executable
if: ${{ matrix.os == 'macos-latest'}}
run: ../../../etc/github-actions/sign-and-notarize-executable.sh
working-directory: code/cli/target
env:
EXECUTABLE_NAME: project-env-cli
EXECUTABLE_PACKAGE_NAME: cli-${{ needs.create-release.outputs.revision }}-${{ matrix.cli_assembly_id }}.${{ matrix.cli_assembly_format }}
EXECUTABLE_ID: io.projectenv.core.cli
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
APPLE_ID_TEAM: ${{ secrets.APPLE_ID_TEAM }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_IDENTITY: ${{ secrets.APPLE_IDENTITY }}
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: code/cli/target/cli-${{ needs.create-release.outputs.revision }}-${{ matrix.cli_assembly_id }}.${{ matrix.cli_assembly_format }}
asset_name: cli-${{ needs.create-release.outputs.revision }}-${{ matrix.cli_assembly_id }}.${{ matrix.cli_assembly_format }}
asset_content_type: application/octet-stream
- uses: actions/upload-release-asset@v1
if: ${{ matrix.os == 'windows-latest'}}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: code/cli/target/cli-${{ needs.create-release.outputs.revision }}-${{ matrix.cli_assembly_id }}-setup.exe
asset_name: cli-${{ needs.create-release.outputs.revision }}-${{ matrix.cli_assembly_id }}-setup.exe
asset_content_type: application/octet-stream