Update to support native builds #80
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: Java CI | |
on: | |
push: | |
workflow_dispatch: | |
jobs: | |
build-java: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up JDK 21 | |
uses: actions/[email protected] | |
with: | |
java-version: '21' | |
distribution: 'graalvm' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Read/Write Properties File | |
uses: kurt-code/[email protected] | |
id: read-properties | |
with: | |
operation: 'read' | |
file-path: 'src/main/resources/application.properties' | |
keys: 'trivysummary.version' | |
- name: Get the Read properties | |
run: | | |
echo "version: ${{ steps.read-properties.outputs.trivysummary_version }}" | |
echo "github.ref: ${{ github.ref }}" | |
- name: Build and Test with Gradle | |
run: gradle test --warning-mode all | |
- name: Create distributable ZIP file with Gradle | |
run: gradle distZip --warning-mode all | |
build-native: | |
needs: build-java | |
name: Build TrivySummary natively on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-latest, windows-latest, ubuntu-latest] | |
include: | |
- os: ubuntu-latest | |
executable: 'trivysummary' | |
output-variant: 'linux-amd64' | |
output-suffix: '' | |
- os: macos-latest | |
executable: 'trivysummary' | |
output-name: 'macos-amd64' | |
output-suffix: '' | |
- os: windows-latest | |
executable: 'trivysummary.exe' | |
output-name: 'windows-amd64' | |
output-suffix: '.exe' | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up JDK 21 | |
uses: actions/[email protected] | |
with: | |
java-version: '21' | |
distribution: 'graalvm' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
native-image-job-reports: 'true' | |
- name: Read/Write Properties File | |
uses: kurt-code/[email protected] | |
id: read-properties | |
with: | |
operation: 'read' | |
file-path: 'src/main/resources/application.properties' | |
keys: 'trivysummary.version' | |
- name: Build natively with Gradle | |
run: gradle nativeCompile | |
- name: Copy native executable to output name | |
run: copy build/native/nativeCompile/${{ matrix.executable }} build/distributions/trivysummary-${{ matrix.output-variant }}-${{ steps.read-properties.outputs.trivysummary_version }}${{ matrix.output-suffix }} | |
publish: | |
needs: build-native | |
runs-on: ubuntu-latest | |
steps: | |
- name: Read/Write Properties File | |
uses: kurt-code/[email protected] | |
id: read-properties | |
with: | |
operation: 'read' | |
file-path: 'src/main/resources/application.properties' | |
keys: 'trivysummary.version' | |
- name: Publish with Gradle | |
if: endsWith(steps.read-properties.outputs.trivysummary_version, '-SNAPSHOT') || (startsWith(github.ref, 'refs/tags/') && endsWith(github.ref, steps.read-properties.outputs.trivysummary_version)) | |
run: gradle publish -Pmvnpub.user="${{ secrets.MAVENREPO_USER }}" -Pmvnpub.key="${{ secrets.MAVENREPO_TOKEN }}" --warning-mode all | |
- name: "Create Release" | |
id: create_release | |
uses: softprops/[email protected] | |
if: startsWith(github.ref, 'refs/tags/') && endsWith(github.ref, steps.read-properties.outputs.trivysummary_version) | |
with: | |
tag_name: ${{ steps.read-properties.outputs.trivysummary_version }} | |
name: Release ${{ steps.read-properties.outputs.trivysummary_version }} | |
body_path: CHANGELOG.txt | |
token: ${{ secrets.MAVENREPO_TOKEN }} | |
files: | | |
build/distributions/trivysummary-${{ steps.read-properties.outputs.trivysummary_version }}.zip | |
build/distributions/trivysummary-windows-amd64-${{ steps.read-properties.outputs.trivysummary_version }}.exe | |
build/distributions/trivysummary-linux-amd64-${{ steps.read-properties.outputs.trivysummary_version }} | |
build/distributions/trivysummary-macos-amd64-${{ steps.read-properties.outputs.trivysummary_version }} |