Skip to content

github actions save space more on linux due to run out of space on on… #4835

github actions save space more on linux due to run out of space on on…

github actions save space more on linux due to run out of space on on… #4835

Workflow file for this run

#
# Docs on github action files: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
#
# build-N-test
#
name: build-N-test
on:
push:
workflow_dispatch:
inputs:
run_all:
description: "run all"
required: false
default: "true"
container_version:
description: "Container Version"
required: false
default: "v3"
deploy_doxygen:
description: "deploy_doxygen"
required: false
default: "false"
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
jobs:
LinuxMatrixPrep:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- id: set-matrix
run: |
branchName=$(echo '${{ github.ref }}' | sed 's,refs/heads/,,g')
matrix=$(jq --arg branchName "$branchName" 'map(
. | select((.run_on_branch==$branchName) or (.run_on_branch=="always") or ("${{github.event.inputs.run_all}}"=="true") and (.run_on_branch!="never")) | select(.build_job=="Linux")
)' .github/workflows/build-N-test-Matrix.json)
echo "matrix={\"include\":$(echo $matrix)}" >> $GITHUB_OUTPUT
MacOSMatrixPrep:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- id: set-matrix
run: |
branchName=$(echo '${{ github.ref }}' | sed 's,refs/heads/,,g')
matrix=$(jq --arg branchName "$branchName" 'map(
. | select((.run_on_branch==$branchName) or (.run_on_branch=="always") or ("${{github.event.inputs.run_all}}"=="true")) | select(.build_job=="MacOS")
)' .github/workflows/build-N-test-Matrix.json)
echo "matrix={\"include\":$(echo $matrix)}" >> $GITHUB_OUTPUT
WindowsMatrixPrep:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- id: set-matrix
run: |
branchName=$(echo '${{ github.ref }}' | sed 's,refs/heads/,,g')
matrix=$(jq --arg branchName "$branchName" 'map(
. | select((.run_on_branch==$branchName) or (.run_on_branch=="always") or ("${{github.event.inputs.run_all}}"=="true")) | select(.build_job=="Windows")
)' .github/workflows/build-N-test-Matrix.json)
echo "matrix={\"include\":$(echo $matrix)}" >> $GITHUB_OUTPUT
Linux:
needs: LinuxMatrixPrep
runs-on: ${{ matrix.runs_on }}
strategy:
matrix: ${{fromJson(needs.LinuxMatrixPrep.outputs.matrix)}}
env:
# (HISTORICAL): vm has 2 virtual CPUs, but 8GB ram, so jobs=3 (empirical), and QUICK_BUILD avoids some internal testing
# vm has 4 virtual CPUs, but 16GB ram, so jobs=4 (empirical. tried 5 and 6 with no significant improvement), and QUICK_BUILD avoids some internal testing --LGP 2025-02-07
MAKEFLAGS: "--jobs=4 QUICK_BUILD=1"
ARTIFACTS_DIR: "/tmp/Artifacts/"
ARTIFACTS_DIR_BUILDLOGS: "${ARTIFACTS_DIR}/BUILD_LOGS/"
container: ${{ matrix.container_image }}:${{github.event.inputs.container_version || 'v3'}}
steps:
- uses: actions/checkout@v4
- name: Build System Info (container version ${{github.event.inputs.container_version || 'v3'}})
run: |
lsb_release -d 2>/dev/null || true
echo "CWD=" `pwd`
echo "hw.ncpu=" $(sysctl -n hw.ncpu)
echo "hw.memsize=" $(sysctl -n hw.memsize)
grep "model name" /proc/cpuinfo | head -1
grep processor /proc/cpuinfo | wc -l
grep MemTotal /proc/meminfo
df -h
- name: Configure ${{ matrix.config_name }}
run: |
./configure ${{ matrix.config_name }} --compiler-driver ${{ matrix.compiler }} ${{ matrix.extra_config_args }} --cppstd-version ${{ matrix.cpp_version }}
cat ConfigurationFiles/${{ matrix.config_name }}.xml
# Break out third-party-components to do clean so we dont run out of disk space, and break out TPC AND library
# to show the summary time for each part
- name: Make third-party-components
run: |
make third-party-components
- name: Copy Build Artifacts (Log Data etc)
if: always()
run: |
mkdir -p ${ARTIFACTS_DIR_BUILDLOGS}
mkdir -p \
"${ARTIFACTS_DIR_BUILDLOGS}" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/boost/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/GoogleTest/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/libxml2/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/lzma/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/openssl/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/sqlite/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/Xerces/" \
"${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/zlib/"
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/boost/BOOTSTRAP-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/boost/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/boost/ConfigureAndBuild-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/boost/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/GoogleTest/INSTALL-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/GoogleTest/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/libxml2/CONFIGURE-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/libxml2/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/libxml2/BUILD-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/libxml2/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/lzma/BUILD-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/lzma/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/openssl/CONFIG-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/openssl/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/openssl/INSTALL-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/openssl/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/sqlite/BUILD-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/sqlite/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/Xerces/BUILD-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/Xerces/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/Xerces/INSTALL-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/Xerces/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/zlib/BUILD-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/zlib/" || :
cp "IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/zlib/INSTALL-OUT.txt" "${ARTIFACTS_DIR_BUILDLOGS}/ThirdPartyComponents/zlib/" || :
- name: Save space (Safe)
if: always()
run: |
make --directory=ThirdPartyComponents --silent clean
- name: Make libraries and tools
run: |
make libraries tools
- name: Save space
if: always()
run: |
echo "*************Before save space*************:"
df -h
du -hs Builds/*/* IntermediateFiles/*/* ThirdPartyComponents/Origs-Cache/
make --directory Library --silent clean
make --directory ThirdPartyComponents --silent clean
rm -f Builds/${{ matrix.config_name }}/ThirdPartyComponents/bin/* ThirdPartyComponents/Origs-Cache/*
echo ""*************After cleanups"*************:"
df -h
du -hs Builds/*/* IntermediateFiles/*/* ThirdPartyComponents/*
- name: Run Tests
run: |
make run-tests
- name: Save space
if: false
run: |
echo "*************Before save space*************:"
df -h
du -hs Builds/*/* IntermediateFiles/*/*
make --directory Tests clobber
echo ""*************After cleanups"*************:"
df -h
du -hs Builds/*/* IntermediateFiles/*/*
- name: Make samples
run: |
make samples
- name: Build System Info
run: |
df -h
- name: Copy Build Artifacts (Sample apps etc)
if: always()
run: |
mkdir -p $ARTIFACTS_DIR
(cp -r --dereference "${NORMALIZED_WORKSPACE_DIR_}/Builds/${{ matrix.config_name }}/"Samples-* "${ARTIFACTS_DIR}") || echo "Error copying builds ignored"
rm -rf "${ARTIFACTS_DIR}/"{ThirdPartyComponents,Tests,*.lib} "${ARTIFACTS_DIR}/"*/*.{pdb,wixpdb}
COPY_FROM_ROOT_="IntermediateFiles/${{ matrix.config_name }}/"
mkdir -p \
"${ARTIFACTS_DIR_BUILDLOGS}/Samples-HTMLUI/html/" \
cp "${COPY_FROM_ROOT_}/Samples-HTMLUI/html/NPM-Install.txt" "${ARTIFACTS_DIR_BUILDLOGS}/Samples-HTMLUI/html/" || :
cp "${COPY_FROM_ROOT_}/Samples-HTMLUI/html/Build.txt" "${ARTIFACTS_DIR_BUILDLOGS}/Samples-HTMLUI/html/" || :
cp "${COPY_FROM_ROOT_}/Samples-HTMLUI/html/WIX-Installer-Build-Output.txt" "${ARTIFACTS_DIR_BUILDLOGS}/Samples-HTMLUI/" || :
- name: Archive Samples Results
uses: actions/upload-artifact@v4
with:
name: Sample apps (${{ matrix.displayTargetName }})
if-no-files-found: warn
path: |
Builds/${{ matrix.config_name }}/*Samples-*
- name: Archive Log Data
if: always()
uses: actions/upload-artifact@v4
with:
name: Log Data (${{ matrix.displayTargetName }})
if-no-files-found: warn
path: |
${{ env.ARTIFACTS_DIR }}PerformanceDump.txt
${{ env.ARTIFACTS_DIR_BUILDLOGS }}
/tmp/Trace*.txt
- name: Archive Core-Dumps
if: always()
uses: actions/upload-artifact@v4
with:
name: CoreDumps (${{ matrix.displayTargetName }})
if-no-files-found: ignore
path: |
*core*
MacOS:
needs: MacOSMatrixPrep
runs-on: ${{ matrix.runs_on }}
strategy:
matrix: ${{fromJson(needs.MacOSMatrixPrep.outputs.matrix)}}
env:
# vm has 3 virtual CPUs, but 8GB ram, so jobs=3 (empirical), and QUICK_BUILD avoids some internal testing --LGP 2025-05-08
MAKEFLAGS: "--jobs=3 QUICK_BUILD=1"
# Workaround for LIBIDB2 not found https://github.com/actions/runner-images/issues/9638
LIBRARY_PATH: "/opt/homebrew/lib"
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ matrix.xcode }}
- uses: actions/checkout@v4
- name: Build System Info
run: |
echo "CWD: `pwd`"
df -h
system_profiler SPSoftwareDataType
system_profiler SPDeveloperToolsDataType
sw_vers
echo " X-CODE: `xcodebuild -version | tr '\n' ';'`"
echo "LIBRARY_PATH = $LIBRARY_PATH"
echo "hw.ncpu=" $(sysctl -n hw.ncpu)
echo "hw.memsize=" $(sysctl -n hw.memsize)
# If we had docker ability, most of these would be built into a docker file
- name: Install Basic Build requirements
run: |
brew install -q gnu-sed
brew install -q p7zip
brew install -q autoconf
brew install -q libtool
brew install -q automake
make install-realpath
- name: Configure
run: |
./configure ${{ matrix.config_name }} ${{ matrix.extra_config_args }}
cat ConfigurationFiles/${{ matrix.config_name }}.xml
- name: Build third-party-components
run: |
make third-party-components
make clean
- name: Build Library and Tools
run: |
make libraries tools
- name: Build Samples
run: |
make samples
- name: Build Tests
run: |
make tests
- name: Run-Tests
run: |
make run-tests
- name: Workaround GitHub-Actions-MacOS Issue with env.TMPDIR
if: always()
run: |
mkdir /tmp/LOGS-ARCHIVE
cp $TMPDIR/Trace*.txt /tmp/LOGS-ARCHIVE || :
- name: DEBUG Workaround GitHub-Actions-MacOS Issue with env.TMPDIR
if: always()
run: |
echo "TMPDIR=$TMPDIR"
echo "TMPDIR using ENV.TMPDIR=${{ env.TMPDIR }}"
# Just the echo line above shows empty, and then the ls line causes exit 1/failure
#ls -l ${{ env.TMPDIR }}/Trace*.txt
#if this gets fixed, then lose Workaround GitHub-Actions-MacOS, and directly reference ${{ env.TMPDIR }}/Trace*.txt in Archive Log Data
- name: Build System Info
run: |
df -h
- name: Archive Log Data
if: always()
uses: actions/upload-artifact@v4
with:
name: Log Data (${{ matrix.displayTargetName }})
if-no-files-found: warn
path: |
Builds/${{ matrix.config_name }}/PerformanceDump.txt
/tmp/LOGS-ARCHIVE
IntermediateFiles/${{ matrix.config_name }}/Samples-HTMLUI/*-Installer-Build-Output.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/boost/BOOTSTRAP-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/boost/ConfigureAndBuild-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/curl/BUILD-CONF-TOOLS-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/curl/CONFIGURE-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/curl/BUILD-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/GoogleTest/INSTALL-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/libxml2/CONFIGURE-OUT.txt
IntermediateFiles/${{ matrix.config_name }}/ThirdPartyComponents/libxml2/BUILD-OUT.txt
${{ env.TMPDIR }}/Trace*.txt
- name: Archive Sample Results
uses: actions/upload-artifact@v4
with:
name: Sample apps (${{ matrix.displayTargetName }})
if-no-files-found: warn
path: |
Builds/${{ matrix.config_name }}/Samples-*
Windows:
needs: WindowsMatrixPrep
runs-on: ${{ matrix.runs_on }}
strategy:
matrix: ${{fromJson(needs.WindowsMatrixPrep.outputs.matrix)}}
env:
# see docker run for --cpus and --memory, and adjust --jobs accodingly (last done 2025-02-07), and QUICK_BUILD avoids some internal testing
MAKEFLAGS: "--jobs=4 QUICK_BUILD=1"
ARTIFACTS_DIR: "c:/Artifacts/"
steps:
- uses: actions/checkout@v4
- name: Build System Info (container version ${{github.event.inputs.container_version || 'v3'}})
shell: "bash"
run: |
echo "CWD: `pwd`"
echo "GITHUB_WORKSPACE: ${GITHUB_WORKSPACE}"
df -h
systeminfo
echo NUMBER_OF_PROCESSORS=$NUMBER_OF_PROCESSORS
# No actual need todo this step (would be done implicitly/automatically) - but do to track how long the step takes (13min)
- name: docker pull ${{ matrix.container_image }}:${{github.event.inputs.container_version || 'v3'}}
run: docker pull ${{ matrix.container_image }}:${{github.event.inputs.container_version || 'v3'}}
- name: Start docker build environment
shell: "bash"
# docker run --interactive --memory 7G --cpus 2 --storage-opt 'size=50GB' -v "${GITHUB_WORKSPACE}:c:\Stroika" --detach --name buildContainer ${{ matrix.container_image }}:${{github.event.inputs.container_version || 'v3'}} ash -c "c:/msys64/usr/bin/rebaseall -v; exec bash"
# was running out of memory with 7GB docker container (doing build of help) - and appears running on 16G vm, 4 log cpus, and 147G space, so up mem# /disk (from 50GB) also appears host as 4 vir cpus, so up # cpus from 2 to 4-- LGP 2025-02-07
run: |
docker run --interactive --memory 15G --cpus 4 --storage-opt 'size=120GB' \
-v "${GITHUB_WORKSPACE}:c:\Stroika" --detach --name buildContainer \
${{ matrix.container_image }}:${{github.event.inputs.container_version || 'v3'}} bash
- name: Print Info about docker system
shell: "bash"
run: |
docker ps -a
docker exec buildContainer systeminfo
docker exec buildContainer echo NUMBER_OF_PROCESSORS=$NUMBER_OF_PROCESSORS
docker exec buildContainer df -h
- name: Configure
shell: "bash"
run: |
docker exec --workdir c:/Stroika buildContainer sh -c "./configure ${{ matrix.config_name }} ${{ matrix.extra_config_args }}"
docker exec --workdir c:/Stroika buildContainer cat ConfigurationFiles/${{ matrix.config_name }}.xml
- name: Build Library and Tools
shell: "bash"
run: |
docker exec --workdir c:/Stroika --env MAKEFLAGS="$MAKEFLAGS" buildContainer make libraries tools
- name: Build Samples
shell: "bash"
run: |
docker exec --workdir c:/Stroika --env MAKEFLAGS="$MAKEFLAGS" buildContainer make samples
- name: Build Tests
shell: "bash"
run: |
docker exec --workdir c:/Stroika --env MAKEFLAGS="$MAKEFLAGS" buildContainer make tests
- name: Run-Tests
shell: "bash"
run: |
docker exec --workdir c:/Stroika --env MAKEFLAGS="$MAKEFLAGS" buildContainer make run-tests
- name: Build System Info
shell: "bash"
run: |
df -h
docker exec buildContainer df -h
- name: Copy Build Artifacts (Log Data and Sample apps etc)
shell: "bash"
if: always()
run: |
# Because of bind mount, no longer copy out of container, already built in outside filesystem
# (except $TMPDIR: Just copy out from container the stuff in /tmp)
NORMALIZED_WORKSPACE_DIR_=`cygpath --mixed "${GITHUB_WORKSPACE}"`
# echo "ARTIFACTS_DIR=${ARTIFACTS_DIR}"
# echo "GITHUB_WORKSPACE=${GITHUB_WORKSPACE}"
# echo "NORMALIZED_WORKSPACE_DIR_=${NORMALIZED_WORKSPACE_DIR_}"
mkdir -p $ARTIFACTS_DIR
(docker exec --workdir c:/ buildContainer bash -c 'mkdir -p c:/TRACE_LOGS; cp $TEMP/Trace*.txt c:/TRACE_LOGS/') || :
# due to flaws in docker (windows must stop) - and docker cp doesn't support wildcards
docker stop buildContainer
(docker cp "buildContainer:c:/TRACE_LOGS" "${ARTIFACTS_DIR}") || echo "error copying tracelogs ignored"
(cp -r --dereference "${NORMALIZED_WORKSPACE_DIR_}/Builds/${{ matrix.config_name }}/"Samples-* "${ARTIFACTS_DIR}") || echo "Error copying builds ignored"
#PDB files are big - no need to save if I want to debug, will do from source/rebuild
rm -rf "${ARTIFACTS_DIR}/"{ThirdPartyComponents,Tests,*.lib} "${ARTIFACTS_DIR}/"*/*.{pdb,wixpdb}
COPY_FROM_ROOT_="${NORMALIZED_WORKSPACE_DIR_}/IntermediateFiles/${{ matrix.config_name }}/"
COPY_TO_ROOT_="${ARTIFACTS_DIR}/BUILD_LOGS/"
mkdir -p \
"${COPY_TO_ROOT_}" \
"${COPY_TO_ROOT_}/Samples-HTMLUI/html/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/boost/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/GoogleTest/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/libxml2/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/lzma/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/openssl/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/sqlite/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/Xerces/" \
"${COPY_TO_ROOT_}/ThirdPartyComponents/zlib/"
cp "${COPY_FROM_ROOT_}/Samples-HTMLUI/html/NPM-Install.txt" "${COPY_TO_ROOT_}/Samples-HTMLUI/html/" || :
cp "${COPY_FROM_ROOT_}/Samples-HTMLUI/html/Build.txt" "${COPY_TO_ROOT_}/Samples-HTMLUI/html/" || :
cp "${COPY_FROM_ROOT_}/Samples-HTMLUI/html/WIX-Installer-Build-Output.txt" "${COPY_TO_ROOT_}/Samples-HTMLUI/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/boost/BOOTSTRAP-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/boost/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/boost/ConfigureAndBuild-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/boost/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/GoogleTest/INSTALL-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/GoogleTest/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/libxml2/CONFIGURE-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/libxml2/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/libxml2/BUILD-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/libxml2/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/lzma/BUILD-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/lzma/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/openssl/CONFIG-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/openssl/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/openssl/INSTALL-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/openssl/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/sqlite/BUILD-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/sqlite/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/Xerces/BUILD-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/Xerces/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/Xerces/INSTALL-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/Xerces/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/zlib/BUILD-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/zlib/" || :
cp "${COPY_FROM_ROOT_}/ThirdPartyComponents/zlib/INSTALL-OUT.txt" "${COPY_TO_ROOT_}/ThirdPartyComponents/zlib/" || :
- name: Archive Log Data
if: always()
uses: actions/upload-artifact@v4
with:
name: Log Data (${{ matrix.displayTargetName }})
if-no-files-found: warn
path: |
${{ env.ARTIFACTS_DIR }}PerformanceDump.txt
${{ env.ARTIFACTS_DIR }}BUILD_LOGS
${{ env.ARTIFACTS_DIR }}TRACE_LOGS
- name: Archive Sample Results
uses: actions/upload-artifact@v4
with:
name: Sample apps (${{ matrix.displayTargetName }})
if-no-files-found: warn
path: |
${{ env.ARTIFACTS_DIR }}Samples-*
codeql-analyze:
name: codeql-analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'cpp' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
env:
# QUICK_BUILD avoids some internal testing
MAKEFLAGS: "--jobs=4 QUICK_BUILD=1"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install tools required to build Stroika
run: |
sudo apt-get update -y
sudo apt-get install -y libtool-bin pkg-config cmake automake autoconf libtool-bin
sudo apt-get install -y g++
- name: Configure
# NOTE - disable optimizer due bugs/errors in optimizer (link errors) - but no matter, cuz also slows down analysis (I think)
# --debug-symbols false to save space and cuz no need
run: |
./configure Release --compiler-driver g++ --apply-default-release-flags --lto disable --append-CXXFLAGS -O0 --debug-symbols false
cat ConfigurationFiles/Release.xml
# Break out third-party-components to do clean so we dont run out of disk space, and break out TPC AND library
# to show the summary time for each part
- name: Make third-party-components
run: |
make third-party-components
make clean
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
- name: Make Stroika
run: make all
- name: Archive Log Data
if: always()
uses: actions/upload-artifact@v4
with:
name: Log Data (codeql-analyze)
if-no-files-found: warn
path: |
IntermediateFiles/Release/Samples-HTMLUI/*-Installer-Build-Output.txt
IntermediateFiles/Release/ThirdPartyComponents/curl/CONFIGURE-OUT.txt
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
doxygen:
runs-on: ubuntu-latest
container: sophistsolutionsinc/stroika-buildvm-ubuntu2404-regression-tests
steps:
- uses: actions/checkout@v4
- name: Build System Info (container version ${{github.event.inputs.container_version || 'v3'}})
run: |
lsb_release -d 2>/dev/null || true
echo "CWD=" `pwd`
echo "hw.ncpu=" $(sysctl -n hw.ncpu)
echo "hw.memsize=" $(sysctl -n hw.memsize)
grep "model name" /proc/cpuinfo | head -1
grep processor /proc/cpuinfo | wc -l
grep MemTotal /proc/meminfo
df -h
- name: Make Documentation
run: |
make documentation
(cd Builds; tar xvf Stroika-Doxygen-Help.tar.gz)
- name: Archive Documentation Results
uses: actions/upload-artifact@v4
# https://github.com/actions/upload-artifact/issues/506 include matrix configname until bug fixed --LGP 2024-11-27
continue-on-error: true
with:
name: Stroika-Doxygen-Help
path: |
Builds/Stroika-Doxygen-Help
- name: Archive Log Data
if: always()
uses: actions/upload-artifact@v4
with:
name: Log Data (doxygen)
if-no-files-found: warn
path: |
IntermediateFiles/Doxygen/BUILD.txt
# Single deploy job since we're just deploying help to github pages
deploy-doxygen:
needs: doxygen
if: github.event.inputs.deploy_doxygen == 'true' || github.ref == 'refs/heads/v3-Release'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
container: sophistsolutionsinc/stroika-buildvm-ubuntu2404-regression-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Make Documentation (since I dont know how to copy result from other step - this is simpler)
run: |
make documentation
(cd Builds; tar xvf Stroika-Doxygen-Help.tar.gz)
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'Builds/Stroika-Doxygen-Help'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4