Build LN #8
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 LN | |
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: "c97a09f3c1fb41f6fe466e202da66a664c453f7c" | |
LN_REF: "8bee6ffc65ca8f3c930d4858e945947f7484bb0b" | |
#COMMUNITY_REF: <GIT REF> | |
#LN_REF: <GIT REF> | |
GITHUB_ACCOUNT: ${{ github.repository_owner }} | |
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 }} | |
github_account: ${{ steps.vars.outputs.github_account }} | |
steps: | |
- name: Calculate vars | |
id: vars | |
run: | | |
github_account=${{ env.GITHUB_ACCOUNT }} | |
echo "github_account=$github_account" >> $GITHUB_OUTPUT | |
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=${{ env.GITHUB_ACCOUNT == '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-docker: | |
name: Build Docker | |
needs: preamble | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
include: | |
#- os: ubuntu-22.04 | |
# name: LN | |
#- os: centos-7 | |
# name: LN | |
# cmake_options_extra: "-DVCPKG_TARGET_TRIPLET=x64-centos-7-dynamic" | |
- os: rockylinux-8 | |
fail-fast: false | |
steps: | |
- name: Free additional disk space (remove Android SDK + Tools) | |
continue-on-error: true | |
run: | | |
df -h | |
sudo rm -rf ${ANDROID_HOME} | |
sudo rm -rf ${JAVA_HOME_8_X64} | |
sudo rm -rf ${JAVA_HOME_11_X64} | |
sudo rm -rf ${JAVA_HOME_17_X64} | |
sudo rm -rf ${JAVA_HOME_21_X64} | |
sudo rm -rf ${CHROMEWEBDRIVER} | |
sudo rm -rf ${EDGEWEBDRIVER} | |
sudo rm -rf ${GECKOWEBDRIVER} | |
sudo rm -rf ${SELENIUM_JAR_PATH} | |
- name: Display disk space (post free) | |
run: | | |
df -h | |
- name: Checkout HPCC-Platform | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ needs.preamble.outputs.github_account }}/HPCC-Platform | |
ref: ${{ needs.preamble.outputs.community_ref }} | |
submodules: recursive | |
path: ${{ needs.preamble.outputs.folder_platform }} | |
- name: Checkout LN | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ needs.preamble.outputs.github_account }}/LN | |
token: ${{ secrets.LNB_TOKEN }} | |
ref: ${{ needs.preamble.outputs.internal_ref }} | |
submodules: recursive | |
path: ${{ needs.preamble.outputs.folder_ln }} | |
- name: Calculate vars | |
id: vars | |
working-directory: ${{ needs.preamble.outputs.folder_platform }}/vcpkg | |
run: | | |
vcpkg_sha_short=$(git rev-parse --short=8 HEAD) | |
echo "vcpkg_sha_short=$vcpkg_sha_short" >> $GITHUB_OUTPUT | |
docker_build_label=hpccsystems/platform-build-${{ matrix.os }} | |
echo "docker_build_label=$docker_build_label" >> $GITHUB_OUTPUT | |
echo "docker_tag=$docker_build_label:$vcpkg_sha_short" >> $GITHUB_OUTPUT | |
echo "docker_tag_candidate_base=$docker_build_label:${{ needs.preamble.outputs.candidate_base_branch }}" >> $GITHUB_OUTPUT | |
- name: Print vars | |
run: | | |
echo "${{ toJSON(needs.preamble.outputs) }})" | |
echo "${{ toJSON(steps.vars.outputs) }})" | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to DockerHub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Create Build Image | |
uses: docker/build-push-action@v4 | |
with: | |
builder: ${{ steps.buildx.outputs.name }} | |
file: ${{ needs.preamble.outputs.folder_platform }}/dockerfiles/vcpkg/${{ matrix.os }}.dockerfile | |
context: ${{ needs.preamble.outputs.folder_platform }}/dockerfiles/vcpkg | |
push: ${{ needs.preamble.outputs.github_account == 'hpcc-systems' }} | |
load: ${{ needs.preamble.outputs.github_account != 'hpcc-systems' }} | |
build-args: | | |
VCPKG_REF=${{ steps.vars.outputs.vcpkg_sha_short }} | |
tags: | | |
${{ steps.vars.outputs.docker_tag_candidate_base }} | |
cache-from: | | |
type=registry,ref=${{ steps.vars.outputs.docker_tag_candidate_base }} | |
type=registry,ref=${{ steps.vars.outputs.docker_tag }} | |
cache-to: type=inline | |
# Internal Build | |
- name: CMake Packages (internal) | |
run: | | |
mkdir -p ${{ needs.preamble.outputs.folder_build }} | |
echo "${{ secrets.SIGNING_SECRET }}" > ${{ needs.preamble.outputs.folder_build }}/private.key | |
plugins=("PLATFORM" "CLIENTTOOLS_ONLY") | |
for plugin in "${plugins[@]}"; do | |
sudo rm -f ${{ needs.preamble.outputs.folder_build }}/CMakeCache.txt | |
sudo rm -rf ${{ needs.preamble.outputs.folder_build }}/CMakeFiles | |
docker run --rm --mount ${{ needs.preamble.outputs.mount_platform }} --mount ${{ needs.preamble.outputs.mount_ln }} --mount ${{ needs.preamble.outputs.mount_build }} ${{ steps.vars.outputs.docker_tag_candidate_base }} "${{ needs.preamble.outputs.gpg_import }} && \ | |
cmake -S /hpcc-dev/LN -B /hpcc-dev/build -DHPCC_SOURCE_DIR=/hpcc-dev/HPCC-Platform ${{ needs.preamble.outputs.cmake_docker_config }} -DSIGN_MODULES_PASSPHRASE=${{ secrets.SIGN_MODULES_PASSPHRASE }} -DSIGN_MODULES_KEYID=${{ secrets.SIGN_MODULES_KEYID }} -D$plugin=ON -DINCLUDE_PLUGINS=ON -DCONTAINERIZED=OFF -DSUPPRESS_REMBED=ON -DSUPPRESS_V8EMBED=ON -DSUPPRESS_SPARK=ON -DCPACK_STRIP_FILES=OFF ${{ matrix.cmake_options_extra }} && \ | |
yum install -y rpm-build.x86_64 && \ | |
cmake --build /hpcc-dev/build --parallel $(nproc) --target package" | |
done | |
- name: Upload Artifacts LN Packages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: LN-Package-${{ matrix.os }} | |
path: | | |
${{ needs.preamble.outputs.folder_build }}/*.deb | |
${{ needs.preamble.outputs.folder_build }}/*.rpm | |
compression-level: 0 |