2024-12-13 00:03:42 +01:00
|
|
|
name: Test Installers Build
|
|
|
|
|
|
|
|
on:
|
|
|
|
workflow_dispatch:
|
2024-12-13 19:20:54 +01:00
|
|
|
release:
|
|
|
|
types: [created]
|
2024-12-22 00:33:41 +01:00
|
|
|
|
2025-01-02 19:22:14 +01:00
|
|
|
permissions:
|
|
|
|
contents: read
|
2024-12-22 00:33:41 +01:00
|
|
|
|
2024-12-13 00:03:42 +01:00
|
|
|
jobs:
|
2025-01-12 14:46:35 +01:00
|
|
|
read_versions:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
outputs:
|
|
|
|
version: ${{ steps.versionNumber.outputs.versionNumber }}
|
|
|
|
versionMac: ${{ steps.versionNumberMac.outputs.versionNumberMac }}
|
|
|
|
steps:
|
|
|
|
- name: Harden Runner
|
|
|
|
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
|
|
|
|
with:
|
|
|
|
egress-policy: audit
|
|
|
|
|
|
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
|
|
|
|
|
|
# Get version number
|
|
|
|
- name: Get version number
|
|
|
|
id: versionNumber
|
|
|
|
run: |
|
|
|
|
VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}')
|
|
|
|
echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT
|
|
|
|
|
|
|
|
- name: Get version number mac
|
|
|
|
id: versionNumberMac
|
|
|
|
run: |
|
|
|
|
VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}')
|
|
|
|
CURRENT_YEAR=$(date +'%Y')
|
|
|
|
IFS='.' read -r -a VERSION_PARTS <<< "$VERSION"
|
|
|
|
MAC_VERSION="$CURRENT_YEAR.${VERSION_PARTS[1]:-0}.${VERSION_PARTS[2]:-0}"
|
|
|
|
echo "versionNumberMac=$MAC_VERSION" >> $GITHUB_OUTPUT
|
|
|
|
|
|
|
|
build-portable:
|
|
|
|
needs: read_versions
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
enable_security: [true, false]
|
|
|
|
include:
|
|
|
|
- enable_security: true
|
|
|
|
file_suffix: "with-login-"
|
|
|
|
- enable_security: false
|
|
|
|
file_suffix: ""
|
|
|
|
steps:
|
|
|
|
- name: Harden Runner
|
|
|
|
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
|
|
|
with:
|
|
|
|
egress-policy: audit
|
|
|
|
|
|
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
|
|
|
|
|
|
- name: Set up JDK 21
|
|
|
|
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
|
|
|
with:
|
|
|
|
java-version: "21"
|
|
|
|
distribution: "temurin"
|
|
|
|
|
|
|
|
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
|
|
|
with:
|
|
|
|
gradle-version: 8.12
|
|
|
|
|
|
|
|
- name: Generate jar (With Security=${{ matrix.enable_security }})
|
|
|
|
run: ./gradlew clean createExe
|
|
|
|
env:
|
|
|
|
DOCKER_ENABLE_SECURITY: ${{ matrix.enable_security }}
|
|
|
|
STIRLING_PDF_DESKTOP_UI: false
|
|
|
|
|
|
|
|
- name: Rename binaries
|
|
|
|
run: |
|
|
|
|
mv ./build/launch4j/Stirling-PDF.exe ./win-Stirling-PDF-portable-Server-${{ matrix.file_suffix }}${{ needs.read_versions.outputs.version }}.exe
|
|
|
|
mv ./build/libs/Stirling-PDF-${{ needs.read_versions.outputs.version }}.jar ./Stirling-PDF-${{ matrix.file_suffix }}${{ needs.read_versions.outputs.version }}.jar
|
|
|
|
|
|
|
|
- name: Upload build artifacts
|
|
|
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
|
|
|
with:
|
|
|
|
retention-days: 1
|
|
|
|
if-no-files-found: error
|
|
|
|
name: stirling-${{ matrix.file_suffix }}binaries
|
|
|
|
path: |
|
|
|
|
./win-Stirling-PDF-portable-Server-${{ matrix.file_suffix }}${{ needs.read_versions.outputs.version }}.exe
|
|
|
|
./Stirling-PDF-${{ matrix.file_suffix }}${{ needs.read_versions.outputs.version }}.jar
|
|
|
|
|
|
|
|
sign_verify-portable:
|
|
|
|
needs: [build-portable, read_versions]
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
enable_security: [true, false]
|
|
|
|
include:
|
|
|
|
- enable_security: true
|
|
|
|
file_suffix: "with-login-"
|
|
|
|
- enable_security: false
|
|
|
|
file_suffix: ""
|
|
|
|
steps:
|
|
|
|
- name: Harden Runner
|
|
|
|
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
|
|
|
with:
|
|
|
|
egress-policy: audit
|
|
|
|
|
|
|
|
- name: Download build artifacts
|
|
|
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
|
|
|
with:
|
|
|
|
name: stirling-${{ matrix.file_suffix }}binaries
|
|
|
|
|
|
|
|
- name: Display structure of downloaded files
|
|
|
|
run: ls -R
|
|
|
|
|
|
|
|
- name: Upload signed artifacts
|
|
|
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
|
|
|
with:
|
|
|
|
retention-days: 1
|
|
|
|
if-no-files-found: error
|
|
|
|
name: stirling-${{ matrix.file_suffix }}signed
|
|
|
|
path: |
|
|
|
|
./*
|
|
|
|
!cosign.*
|
|
|
|
|
2024-12-13 00:03:42 +01:00
|
|
|
build-installers:
|
2025-01-12 14:46:35 +01:00
|
|
|
needs: read_versions
|
2024-12-13 00:03:42 +01:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
|
|
|
- os: windows-latest
|
2025-01-12 14:46:35 +01:00
|
|
|
extra: "-installer"
|
|
|
|
platform: win-
|
2024-12-13 00:03:42 +01:00
|
|
|
ext: exe
|
2025-01-12 14:46:35 +01:00
|
|
|
# - os: macos-latest
|
|
|
|
# extra: ""
|
|
|
|
# platform: mac-
|
|
|
|
# ext: dmg
|
|
|
|
# - os: ubuntu-latest
|
|
|
|
# extra: ""
|
|
|
|
# platform: linux-
|
|
|
|
# ext: deb
|
2024-12-13 00:03:42 +01:00
|
|
|
runs-on: ${{ matrix.os }}
|
2024-12-22 00:33:41 +01:00
|
|
|
permissions:
|
|
|
|
contents: write
|
2024-12-13 00:03:42 +01:00
|
|
|
steps:
|
2024-12-21 13:28:35 +01:00
|
|
|
- name: Harden Runner
|
|
|
|
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
|
|
|
|
with:
|
|
|
|
egress-policy: audit
|
|
|
|
|
|
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
2024-12-13 00:03:42 +01:00
|
|
|
|
|
|
|
- name: Set up JDK 21
|
2024-12-21 13:28:35 +01:00
|
|
|
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
|
2024-12-13 00:03:42 +01:00
|
|
|
with:
|
|
|
|
java-version: "21"
|
|
|
|
distribution: "temurin"
|
|
|
|
|
2024-12-21 13:28:35 +01:00
|
|
|
- uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
|
2024-12-13 00:03:42 +01:00
|
|
|
with:
|
2025-01-03 12:26:40 +01:00
|
|
|
gradle-version: 8.12
|
2024-12-13 00:03:42 +01:00
|
|
|
|
|
|
|
# Install Windows dependencies
|
|
|
|
- name: Install WiX Toolset
|
|
|
|
if: matrix.os == 'windows-latest'
|
|
|
|
run: |
|
|
|
|
curl -L -o wix.exe https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314.exe
|
|
|
|
.\wix.exe /install /quiet
|
2024-12-21 15:34:07 +01:00
|
|
|
|
2024-12-13 00:03:42 +01:00
|
|
|
# Build installer
|
|
|
|
- name: Build Installer
|
2024-12-13 01:13:47 +01:00
|
|
|
run: ./gradlew build jpackage -x test --info
|
2024-12-13 01:00:56 +01:00
|
|
|
env:
|
|
|
|
DOCKER_ENABLE_SECURITY: false
|
|
|
|
STIRLING_PDF_DESKTOP_UI: true
|
2024-12-13 00:03:42 +01:00
|
|
|
|
|
|
|
# Rename and collect artifacts based on OS
|
|
|
|
- name: Prepare artifacts
|
|
|
|
id: prepare
|
|
|
|
shell: bash
|
|
|
|
run: |
|
|
|
|
if [ "${{ matrix.os }}" = "windows-latest" ]; then
|
2025-01-12 14:46:35 +01:00
|
|
|
mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.version }}.exe" "${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}"
|
2024-12-13 00:03:42 +01:00
|
|
|
elif [ "${{ matrix.os }}" = "macos-latest" ]; then
|
2025-01-12 14:46:35 +01:00
|
|
|
mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.versionMac }}.dmg" "${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}"
|
2024-12-13 00:03:42 +01:00
|
|
|
else
|
2025-01-12 14:46:35 +01:00
|
|
|
mv "./build/jpackage/stirling-pdf_${{ needs.read_versions.outputs.version }}-1_amd64.deb" "${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}"
|
2024-12-13 00:03:42 +01:00
|
|
|
fi
|
|
|
|
|
2025-01-12 14:46:35 +01:00
|
|
|
- name: Upload build artifacts
|
|
|
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
|
|
|
with:
|
|
|
|
retention-days: 1
|
|
|
|
if-no-files-found: error
|
|
|
|
name: ${{ matrix.platform }}binaries
|
|
|
|
path: |
|
|
|
|
./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}
|
|
|
|
|
|
|
|
sign_verify:
|
|
|
|
needs: [read_versions, build-installers]
|
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
include:
|
|
|
|
- os: windows-latest
|
|
|
|
extra: "-installer"
|
|
|
|
platform: win-
|
|
|
|
ext: exe
|
|
|
|
# - os: macos-latest
|
|
|
|
# extra: ""
|
|
|
|
# platform: mac-
|
|
|
|
# ext: dmg
|
|
|
|
# - os: ubuntu-latest
|
|
|
|
# extra: ""
|
|
|
|
# platform: linux-
|
|
|
|
# ext: deb
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Harden Runner
|
|
|
|
uses: step-security/harden-runner@c95a14d0e5bab51a9f56296a4eb0e416910cd350 # v2.10.3
|
|
|
|
with:
|
|
|
|
egress-policy: audit
|
|
|
|
|
|
|
|
- name: Download build artifacts
|
|
|
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
|
|
|
with:
|
|
|
|
name: ${{ matrix.platform }}binaries
|
|
|
|
|
|
|
|
- name: Display structure of downloaded files
|
|
|
|
run: ls -R
|
|
|
|
|
|
|
|
- name: Install Cosign
|
|
|
|
if: matrix.os == 'windows-latest'
|
|
|
|
uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0
|
|
|
|
|
|
|
|
- name: Generate key pair
|
|
|
|
if: matrix.os == 'windows-latest'
|
|
|
|
run: cosign generate-key-pair
|
|
|
|
|
|
|
|
- name: Sign and generate attestations
|
|
|
|
if: matrix.os == 'windows-latest'
|
|
|
|
run: |
|
|
|
|
cosign sign-blob \
|
|
|
|
--key ./cosign.key \
|
|
|
|
--yes \
|
|
|
|
--output-signature ./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}.sig \
|
|
|
|
./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}
|
|
|
|
|
|
|
|
cosign attest-blob \
|
|
|
|
--predicate - \
|
|
|
|
--key ./cosign.key \
|
|
|
|
--yes \
|
|
|
|
--output-attestation ./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}.intoto.jsonl \
|
|
|
|
./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}
|
|
|
|
|
|
|
|
cosign verify-blob \
|
|
|
|
--key ./cosign.pub \
|
|
|
|
--signature ./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}.sig \
|
|
|
|
./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.${{ matrix.ext }}
|
|
|
|
|
|
|
|
- name: Upload signed artifacts
|
|
|
|
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
2024-12-21 15:34:07 +01:00
|
|
|
with:
|
2024-12-13 00:03:42 +01:00
|
|
|
retention-days: 1
|
2024-12-14 12:08:35 +01:00
|
|
|
if-no-files-found: error
|
2025-01-12 14:46:35 +01:00
|
|
|
name: ${{ matrix.platform }}signed
|
|
|
|
path: |
|
|
|
|
./${{ matrix.platform }}Stirling-PDF${{ matrix.extra }}-${{ needs.read_versions.outputs.version }}.*
|
|
|
|
!cosign.*
|
2024-12-14 12:08:35 +01:00
|
|
|
|
2025-01-12 14:46:35 +01:00
|
|
|
create-release:
|
|
|
|
needs: [read_versions, sign_verify, sign_verify-portable]
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
permissions:
|
|
|
|
contents: write
|
|
|
|
steps:
|
|
|
|
- name: Download signed artifacts
|
|
|
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
|
|
|
- name: Display structure of downloaded files
|
|
|
|
run: ls -R
|
|
|
|
- name: Upload binaries, attestations and signatures to Release and create GitHub Release
|
2024-12-22 13:13:24 +01:00
|
|
|
uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v2.1.0
|
2024-12-14 12:08:35 +01:00
|
|
|
with:
|
2025-01-12 14:46:35 +01:00
|
|
|
tag_name: v${{ needs.read_versions.outputs.version }}
|
|
|
|
generate_release_notes: true
|
|
|
|
files: |
|
|
|
|
./*signed/*
|