Build WinXOS Clienttools #4
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: Build WinXOS Clienttools | |
env: | |
VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,read" | |
VCPKG_NUGET_REPOSITORY: "https://github.com/hpcc-systems/vcpkg" | |
on: | |
workflow_dispatch | |
#push: | |
jobs: | |
preamble: | |
name: Publish Release | |
env: | |
COMMUNITY_REF: "3eb770915a09815ab4342d157a25ef306f2b1523" | |
LN_REF: "bfe0d6a9fce8d0caa73417b0b9be748fab9f75ab" | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
outputs: | |
folder_platform: ${{ steps.vars.outputs.folder_platform }} | |
mount_platform: ${{ steps.vars.outputs.mount_platform }} | |
folder_ln: ${{ steps.vars.outputs.folder_ln }} | |
mount_ln: ${{ steps.vars.outputs.mount_ln }} | |
folder_build: ${{ steps.vars.outputs.folder_build }} | |
mount_build: ${{ steps.vars.outputs.mount_build }} | |
community_ref: ${{ steps.vars.outputs.community_ref }} | |
community_tag: ${{ steps.vars.outputs.community_tag }} | |
internal_ref: ${{ steps.vars.outputs.internal_ref }} | |
internal_tag: ${{ steps.vars.outputs.internal_tag }} | |
hpcc_version: ${{ steps.vars.outputs.hpcc_version }} | |
candidate_base_branch: ${{ steps.vars.outputs.candidate_base_branch }} | |
candidate_branch: ${{ steps.vars.outputs.candidate_branch }} | |
cmake_docker_config: ${{ steps.vars.outputs.cmake_docker_config }} | |
gpg_import: ${{ steps.vars.outputs.gpg_import }} | |
steps: | |
- name: Calculate vars | |
id: vars | |
run: | | |
echo "folder_platform=${{ github.workspace }}/HPCC-Platform" >> $GITHUB_OUTPUT | |
echo 'mount_platform=source="${{ github.workspace }}/HPCC-Platform",target=/hpcc-dev/HPCC-Platform,type=bind,consistency=cached' >> $GITHUB_OUTPUT | |
echo "folder_ln=${{ github.workspace }}/LN" >> $GITHUB_OUTPUT | |
echo 'mount_ln=source="${{ github.workspace }}/LN",target=/hpcc-dev/LN,type=bind,consistency=cached' >> $GITHUB_OUTPUT | |
echo "folder_build=${{ github.workspace }}/build" >> $GITHUB_OUTPUT | |
echo 'mount_build=source="${{ github.workspace }}/build",target=/hpcc-dev/build,type=bind,consistency=cached' >> $GITHUB_OUTPUT | |
community_ref=${{ env.COMMUNITY_REF }} | |
echo "community_ref=$community_ref" >> $GITHUB_OUTPUT | |
ln_ref=${{ env.LN_REF }} | |
echo "internal_ref=$ln_ref" >> $GITHUB_OUTPUT | |
community_tag=$(echo $community_ref | cut -d'/' -f3) | |
echo "community_tag=$community_tag" >> $GITHUB_OUTPUT | |
internal_tag=$(echo $ln_ref | cut -d'/' -f3) | |
echo "internal_tag=$internal_tag" >> $GITHUB_OUTPUT | |
echo "hpcc_version=$(echo $community_tag | sed 's/community_//' | sed 's/-[0-9]$//')" >> $GITHUB_OUTPUT | |
community_base_ref=${{ github.event.base_ref || github.ref }} | |
candidate_branch=$(echo $community_base_ref | cut -d'/' -f3) | |
echo "candidate_branch=$candidate_branch" >> $GITHUB_OUTPUT | |
echo "candidate_base_branch=$(echo $candidate_branch | awk -F'.' -v OFS='.' '{ $3="x"; print }')" >> $GITHUB_OUTPUT | |
echo "cmake_docker_config=-DCMAKE_BUILD_TYPE=RelWithDebInfo -DVCPKG_FILES_DIR=/hpcc-dev -DCPACK_THREADS=0 -DUSE_OPTIONAL=OFF -DSIGN_MODULES=${{ github.repository_owner == 'hpcc-systems' && 'ON' || 'OFF' }}" >> $GITHUB_OUTPUT | |
echo 'gpg_import=gpg --batch --import /hpcc-dev/build/private.key' >> $GITHUB_OUTPUT | |
- name: Print vars | |
run: | | |
echo "${{ toJSON(steps.vars.outputs) }})" | |
build-bare-metal: | |
name: Build Bare Metal | |
# if: github.repository == 'hpcc-systems/HPCC-Platform' | |
needs: preamble | |
strategy: | |
matrix: | |
include: | |
#- os: "windows-2022" | |
# mono: "" | |
# sudo: "" | |
# cmake_config_options: '-T host=x64 -A Win32 -DUSE_OPTIONAL=OFF -DCLIENTTOOLS_ONLY=ON -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_JAVA=OFF -DUSE_OPENLDAP=OFF' | |
# cmake_build_options: "--config Release --parallel $NUMBER_OF_PROCESSORS" | |
- os: "windows-2022" | |
mono: "" | |
sudo: "" | |
cmake_config_options: '-T host=x64 -A x64 -DUSE_OPTIONAL=OFF -DCLIENTTOOLS_ONLY=ON -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_JAVA=OFF -DUSE_OPENLDAP=OFF' | |
cmake_build_options: "--config Release --parallel $NUMBER_OF_PROCESSORS" | |
#- os: "macos-12" | |
# mono: "mono" | |
# sudo: "sudo" | |
# cmake_config_options: "-DCMAKE_BUILD_TYPE=Release -DUSE_OPTIONAL=OFF -DCLIENTTOOLS_ONLY=ON -DUSE_AZURE=OFF -DUSE_CASSANDRA=OFF -DUSE_JAVA=OFF -DUSE_OPENLDAP=OFF" | |
# cmake_build_options: "--parallel $(nproc)" | |
fail-fast: false | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Print vars | |
shell: "bash" | |
run: | | |
echo ${{ matrix.os }} | |
echo "${{ toJSON(needs.preamble.outputs) }})" | |
- name: OSX Dependencies | |
if: ${{ contains(matrix.os, 'macos') }} | |
shell: "bash" | |
run: | | |
brew install bison flex pkg-config autoconf autoconf-archive automake libtool cmake openjdk@11 | |
- name: "Remove builtin vcpkg (old)" | |
working-directory: . | |
shell: "bash" | |
run: | | |
${{ matrix.sudo }} rm -rf "$VCPKG_INSTALLATION_ROOT" | |
- name: Checkout HPCC-Platform | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.repository_owner }}/HPCC-Platform | |
ref: ${{ needs.preamble.outputs.community_ref }} | |
submodules: recursive | |
path: ./HPCC-Platform | |
- name: Checkout LN | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ github.repository_owner }}/LN | |
token: ${{ secrets.LNB_TOKEN }} | |
ref: ${{ needs.preamble.outputs.internal_ref }} | |
submodules: recursive | |
path: ./LN | |
- name: "Create code signing" | |
if: ${{ contains(matrix.os,'windows') }} | |
shell: "pwsh" | |
run: | | |
mkdir -p ./sign | |
cd sign | |
$pfxPath = "hpcc_code_signing.pfx" | |
$encodedBytes = [System.Convert]::FromBase64String("${{ secrets.SIGNING_CERTIFICATE }}") | |
$currentDirectory = Get-Location | |
$certificatePath = Join-Path -Path $currentDirectory -ChildPath $pfxPath | |
[IO.File]::WriteAllBytes("$certificatePath", $encodedBytes) | |
CertUtil -p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} hpcc_code_signing.pfx | |
- name: "vcpkg Bootstrap" | |
shell: "bash" | |
run: | | |
./HPCC-Platform/vcpkg/bootstrap-vcpkg.sh | |
- name: "Setup NuGet credentials" | |
shell: "bash" | |
run: | | |
${{ matrix.mono }} `./HPCC-Platform/vcpkg/vcpkg fetch nuget | tail -n 1` \ | |
sources add \ | |
-name "GitHub" \ | |
-source "https://nuget.pkg.github.com/hpcc-systems/index.json" \ | |
-storepasswordincleartext \ | |
-username "${{ github.repository_owner }}" \ | |
-password "${{ secrets.GITHUB_TOKEN }}" | |
- name: CMake Packages | |
shell: "bash" | |
run: | | |
mkdir -p ./build | |
cmake -S ./HPCC-Platform -B ./build ${{ matrix.cmake_config_options }} | |
cmake --build ./build ${{ matrix.cmake_build_options }} --target package | |
- name: Sign Windows Package | |
if: ${{ contains(matrix.os,'windows') }} | |
shell: "pwsh" | |
run: | | |
cd ./build | |
C:\"Program Files (x86)"\"Microsoft SDKs"\ClickOnce\SignTool\signtool.exe sign /debug /f ../sign/hpcc_code_signing.pfx /p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} /t http://timestamp.digicert.com /fd SHA256 hpccsystems-clienttools*.exe | |
- name: Upload Artifact Clientools build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: WinOSX-Clienttools | |
path: | | |
./build/hpccsystems-clienttools*.exe | |
./build/hpccsystems-clienttools*.msi | |
./build/hpccsystems-clienttools*.dmg | |
./build/hpccsystems-clienttools*.pkg | |
compression-level: 0 | |
- name: CMake LN Packages | |
shell: "bash" | |
run: | | |
${{ matrix.sudo }} rm -f ./build/CMakeCache.txt | |
${{ matrix.sudo }} rm -rf ./build/CMakeFiles | |
cmake -S ./LN -B ./build ${{ matrix.cmake_config_options }} | |
cmake --build ./build ${{ matrix.cmake_build_options }} --target package | |
- name: Sign LN Windows Package | |
if: ${{ contains(matrix.os,'windows') }} | |
shell: "pwsh" | |
run: | | |
cd ./build | |
C:\"Program Files (x86)"\"Microsoft SDKs"\ClickOnce\SignTool\signtool.exe sign /debug /f ../sign/hpcc_code_signing.pfx /p ${{ secrets.SIGNING_CERTIFICATE_PASSPHRASE }} /t http://timestamp.digicert.com /fd SHA256 hpccsystems-clienttools*.exe | |
- name: Upload Artifact LN Clientools build | |
uses: actions/upload-artifact@v4 | |
with: | |
name: WinOSX-LN-Clienttools | |
path: | | |
./build/hpccsystems-clienttools-internal*.exe | |
./build/hpccsystems-clienttools-internal*.msi | |
./build/hpccsystems-clienttools-internal*.dmg | |
./build/hpccsystems-clienttools-internal*.pkg | |
compression-level: 0 | |
- name: Upload error logs | |
if: ${{ failure() || cancelled() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }}-logs | |
path: ./build/**/*.log |