Skip to content

merge back into original build.yml #635

merge back into original build.yml

merge back into original build.yml #635

Workflow file for this run

on: [ push, pull_request, workflow_dispatch ]
name: Build
jobs:
build-linux-memtest:
runs-on: ubuntu-20.04
steps:
- run: sudo apt update
- run: sudo apt install -y valgrind uuid-dev
- uses: actions/checkout@v2
with:
submodules: true
- run: sh cmake/GenerateMake.sh
- run: cmake --build . --target lib3mf_memcheck
working-directory: ./build
build-linux-ubi8-gcc12:
runs-on: ubuntu-20.04
steps:
- run: sudo apt update
- run: sudo apt install -y uuid-dev
- uses: actions/checkout@v2
with:
submodules: true
- run: mkdir -p build
- run: zip -r build/bindings.zip Autogenerated/Bindings
- name: Archive bindings
uses: actions/upload-artifact@v2
with:
name: bindings.zip
path: build/bindings.zip
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker Build
uses: docker/build-push-action@v5
with:
context: .
file: ./CI/Dockerfile
platforms: linux/amd64
tags: lib3mf_ubi8:latest
load: true
- name: Docker Extract
uses: shrink/[email protected]
id: extract
with:
image: lib3mf_ubi8:latest
path: out.zip
destination: dist
- run: unzip out.zip
working-directory: ./dist
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: lib3mf.so
path: dist/lib3mf.so.2
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- run: sh cmake/GenerateMake.sh "-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64"
- run: cmake --build .
working-directory: ./build
- run: ctest -V
working-directory: ./build
- name: Archive Mac binary
uses: actions/upload-artifact@v2
with:
name: lib3mf.dylib
path: build/lib3mf.dylib
build-macos-debug:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
submodules: true
- run: sh cmake/GenerateMake.sh "-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64 -DCMAKE_BUILD_TYPE=Debug"
- run: cmake --build .
working-directory: ./build
- run: ctest -V
working-directory: ./build
- name: Archive Mac binary
uses: actions/upload-artifact@v2
with:
name: lib3mf.debug.dylib
path: build/lib3mf.dylib
codecoverage-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install Prerequisites
run: |
brew install lcov
brew install gcovr
- run: sh cmake/GenerateMake.sh -DBUILD_FOR_CODECOVERAGE=ON
- run: cmake --build .
working-directory: ./build
- run: ./Tests/codecoverage/run_codecoverage.sh
- name: Archive Code Coverage Results
uses: actions/upload-artifact@v2
with:
name: codecoverage.zip
path: build/codecoverage.zip
- name: Upload code coverage to codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./build/Test_CPP_Bindings_filtered.info
fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)
build-windows-release:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: true
- run: ./cmake/GenerateVS2019.bat
- run: cmake --build . --config Release
working-directory: ./build
- run: ctest -V
working-directory: ./build
- name: Archive Windows Release binary
uses: actions/upload-artifact@v2
with:
name: lib3mf.dll
path: build/Release/lib3mf.dll
- name: Archive Windows Release lib
uses: actions/upload-artifact@v2
with:
name: lib3mf.lib
path: build/Release/lib3mf.lib
build-windows-debug:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: true
- run: ./cmake/GenerateVS2019.bat
- run: cmake --build . --config Debug
working-directory: ./build
- run: ctest -V
working-directory: ./build
- name: Archive Windows Debug binary
uses: actions/upload-artifact@v2
with:
name: lib3mf.debug.dll
path: build/Debug/lib3mf.dll
- uses: actions/upload-artifact@v2
with:
name: lib3mf.pdb
path: build/Debug/lib3mf.pdb
- uses: actions/upload-artifact@v2
with:
name: lib3mf.debug.lib
path: build/Debug/lib3mf.lib
build-windows-32bit:
runs-on: windows-2019
steps:
- uses: actions/checkout@v2
with:
submodules: true
- run: ./cmake/GenerateVS2019_32bit.bat
- run: cmake --build . --config Release
working-directory: ./build_32bit
- run: ctest -V
working-directory: ./build_32bit
- name: Archive Windows 32 bit Release binary
uses: actions/upload-artifact@v2
with:
name: lib3mf_32bit.dll
path: build_32bit/Release/lib3mf.dll
- name: Archive Windows 32 bit Release lib
uses: actions/upload-artifact@v2
with:
name: lib3mf_32bit.lib
path: build_32bit/Release/lib3mf.lib
build-mingw-w64:
runs-on: windows-2019
steps:
- run: choco install mingw -y
- uses: actions/checkout@v2
with:
submodules: true
- run: ./cmake/GenerateMinGW.bat
- run: cmake --build .
working-directory: ./build
- run: ctest -V
working-directory: ./build
assemble-sdk:
runs-on: ubuntu-20.04
needs: [ build-windows-release, build-macos, build-linux-ubi8-gcc12 ]
steps:
- run: sudo apt install -y zip unzip
- run: mkdir build
- uses: actions/checkout@v2
with:
submodules: false
- name: Download all workflow run artifacts
uses: actions/download-artifact@v2
with:
path: ./build
- run: ls -Rl ./build
- run: unzip bindings.zip/bindings.zip
working-directory: ./build
- run: bash SDK/GenerateSDK_github.sh
- name: Archive SDK artifact
uses: actions/upload-artifact@v2
with:
name: lib3mf_sdk.zip
path: build/lib3mf_sdk.zip
deploy-linux:
runs-on: ubuntu-20.04
needs: [ assemble-sdk ]
steps:
- run: sudo apt install -y zip unzip
- run: pwd
- run: ls -Rl .
- name: Download lib3mf_sdk artifact
uses: actions/download-artifact@v2
with:
name: lib3mf_sdk.zip
path: lib3mf_sdk.zip
- run: ls -Rl .
- name: Unpack the SDK
run: |
unzip lib3mf_sdk.zip/lib3mf_sdk.zip
- name: Build CppDynamic
run: |
sh Examples/CppDynamic/GenerateMake.sh
cd Examples/CppDynamic/build
cmake --build .
./Example_ExtractInfo ../../Files/Helix.3mf
- name: Build Cpp
run: |
sh Examples/Cpp/GenerateMake.sh
cd Examples/Cpp/build
cmake --build .
./Example_ExtractInfo ../../Files/Helix.3mf
deploy-windows:
runs-on: windows-2019
needs: [ assemble-sdk ]
steps:
- name: Download lib3mf_sdk artifact
uses: actions/download-artifact@v2
with:
name: lib3mf_sdk.zip
path: lib3mf_sdk.zip
- name: Unpack the SDK
run: |
unzip lib3mf_sdk.zip/lib3mf_sdk.zip
- name: Build CppDynamic
run: |
./Examples/CppDynamic/GenerateVS2019.bat
cd Examples/CppDynamic/build
cmake --build . --config Release
./Release/Example_ExtractInfo.exe ../../Files/Helix.3mf
- name: Build Cpp
run: |
./Examples/Cpp/GenerateVS2019.bat
cd Examples/Cpp/build
cmake --build . --config Release
./Release/Example_ExtractInfo.exe ../../Files/Helix.3mf
deploy-macos:
runs-on: macos-latest
needs: [ assemble-sdk ]
steps:
- name: Download lib3mf_sdk artifact
uses: actions/download-artifact@v2
with:
name: lib3mf_sdk.zip
path: lib3mf_sdk.zip
- name: Unpack the SDK
run: |
unzip lib3mf_sdk.zip/lib3mf_sdk.zip
- name: Build CppDynamic
run: |
sh Examples/CppDynamic/GenerateMake.sh
cd Examples/CppDynamic/build
cmake --build .
./Example_ExtractInfo ../../Files/Helix.3mf
- name: Build Cpp
run: |
sh Examples/Cpp/GenerateMake.sh
cd Examples/Cpp/build
cmake --build .
./Example_ExtractInfo ../../Files/Helix.3mf
integration_tests-latest-release:
runs-on: ubuntu-20.04
if: github.event_name == 'workflow_dispatch'
steps:
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: true
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Get latest release info from GitHub API
id: get_release
run: |
LATEST_RELEASE_URL=$(curl -s https://api.github.com/repos/3MFConsortium/test_suites/releases/latest | grep "zipball_url" | cut -d '"' -f 4)
echo "LATEST_RELEASE_URL=${LATEST_RELEASE_URL}" >> $GITHUB_ENV
- name: Download latest SDK zip
run: |
wget ${{ env.LATEST_RELEASE_URL }} -O latest_release.zip
- name: Unpack the SDK
run: |
unzip latest_release.zip -d lib3mf_sdk
- name: Build CppDynamic
run: |
sh lib3mf_sdk/Examples/CppDynamic/GenerateMake.sh
cd lib3mf_sdk/Examples/CppDynamic/build
cmake --build .
./Example_ExtractInfo ../../Files/Helix.3mf
- name: Download and unzip test suite
run: |
wget https://github.com/3MFConsortium/test_suites/releases/download/v2.0.0/3MF_Conformance_Test_Suites_v2.0.0.zip
unzip 3MF_Conformance_Test_Suites_v2.0.0.zip -d test_suites
- name: Copy integration test script
run: |
cp CI/integration_test.py test_suites/3MF_Conformance_Test_Suites_v2.0.0/
- name: Run integration tests
run: |
python test_suites/3MF_Conformance_Test_Suites_v2.0.0/integration_test.py