Skip to content

Commit

Permalink
ci: major cleanup of shell/working-directory and env var usage
Browse files Browse the repository at this point in the history
 * BUILD_SHARED_LIBS=ON (also on windows)
 * add Install and upload step for native builds
  • Loading branch information
axxel committed Feb 3, 2024
1 parent 66b47cc commit ef16c58
Showing 1 changed file with 174 additions and 181 deletions.
355 changes: 174 additions & 181 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,201 +23,194 @@ jobs:

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3

- name: Setup Python 3
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Create Build Environment
# Some projects don't allow in-source building, so create a separate build directory
# We'll use this as our working directory for all subsequent commands
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake
working-directory: ${{runner.workspace}}/build
# Use a bash shell so we can use the same syntax for environment variable
# access regardless of the host operating system
shell: bash
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_BLACKBOX_TESTS=ON -DBUILD_UNIT_TESTS=ON -DBUILD_PYTHON_MODULE=ON -DBUILD_C_API=ON

- name: Build
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute the build. You can specify a specific target with "--target <NAME>"
run: cmake --build . -j8 --config $BUILD_TYPE

- name: Test
working-directory: ${{runner.workspace}}/build
shell: bash
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -V -C $BUILD_TYPE

build-ubuntu-sanitize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{github.ref}}
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure
run: >
cmake -S $GITHUB_WORKSPACE -B ${{runner.workspace}}/build -DCMAKE_BUILD_TYPE=RelWithDebInfo
-DBUILD_BLACKBOX_TESTS=ON -DBUILD_UNIT_TESTS=ON -DBUILD_PYTHON_MODULE=OFF -DBUILD_C_API=OFF
-DCMAKE_CXX_COMPILER=clang++
-DCMAKE_CXX_FLAGS="-march=native -fsanitize=address,undefined -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer"
cmake -S . -B build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_SHARED_LIBS=ON
-DBUILD_BLACKBOX_TESTS=ON -DBUILD_UNIT_TESTS=ON -DBUILD_PYTHON_MODULE=ON -DBUILD_C_API=ON
- name: Build
run: cmake --build ${{runner.workspace}}/build -j8

- name: Test
working-directory: ${{runner.workspace}}/build
run: ctest -V

build-ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{github.ref}}

- name: Build the swift package
shell: sh
working-directory: ${{runner.workspace}}/${{github.event.repository.name}}
run: swift build

- name: Build the demo app
shell: sh
working-directory: ${{runner.workspace}}/${{github.event.repository.name}}/wrappers/ios/demo
run: xcodebuild build -scheme demo -sdk "iphonesimulator"

- name: Validate the Pod
shell: sh
working-directory: ${{runner.workspace}}/${{github.event.repository.name}}
run: pod lib lint --allow-warnings

build-android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Build the lib/app
working-directory: wrappers/android
run: ./gradlew assembleDebug # build only the debug version of the aar (faster build)

- uses: actions/upload-artifact@v3
with:
name: android-artifacts
path: "wrappers/android/zxingcpp/build/outputs/aar/zxingcpp-debug.aar"

build-python:
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ['3.12']
os: [ubuntu-latest, macos-latest, windows-latest]

steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
run: cmake --build build -j8 --config ${{env.BUILD_TYPE}}

- name: Install dependencies
working-directory: wrappers/python
- name: Set PATH for Tests
shell: bash # to make the $GITHUB_PATH update work
if: runner.os == 'Windows'
run: |
python -m pip install --upgrade pip setuptools
python -m pip install numpy pillow
- name: Build module
working-directory: wrappers/python
run: python -m pip -v install -e .

- name: Test module
working-directory: wrappers/python
run: python -m unittest -v

build-rust:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]

steps:
- uses: actions/checkout@v3

- name: Lint
working-directory: wrappers/rust
run: |
cargo fmt --check
cargo clippy -- -Dwarnings
- name: Build
working-directory: wrappers/rust
run: cargo build --release --verbose --features bundled,image --examples
echo "${GITHUB_WORKSPACE}/build/core/${BUILD_TYPE}" >> $GITHUB_PATH
echo "${GITHUB_WORKSPACE}/build/lib/${BUILD_TYPE}" >> $GITHUB_PATH
- name: Test
working-directory: wrappers/rust
run: cargo test --release --features bundled,image

- name: Package
working-directory: wrappers/rust
# --allow-dirty is required on the windows build (but not the ubuntu build?!)
run: cargo package --verbose --allow-dirty --features bundled,image

build-wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: mymindstorm/setup-emsdk@v12
# shell: bash
run: ctest --test-dir build -V -C ${{env.BUILD_TYPE}}

- name: Configure
run: emcmake cmake -Swrappers/wasm -Bbuild

- name: Build
run: cmake --build build -j4

# - name: Test
# run: node build/EmGlueTests.js

- uses: actions/upload-artifact@v3
with:
name: wasm-artifacts
path: |
build/zxing*
build/demo*
build-winrt:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3

- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/build

- name: Configure CMake
shell: cmd
run: >
cmake -S ${{github.workspace}}/wrappers/winrt -B ${{runner.workspace}}/build -A ARM64
-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_BUILD_TYPE=Release
-DBUILD_WINRT_LIB=ON -DBUILD_EXAMPLES=OFF -DBUILD_BLACKBOX_TESTS=OFF
-DEXTENSION_SDK_OUTPUT=dist/UAP/v0.8.0.0/ExtensionSDKs/ZXingWinRT/1.0.0.0
- name: Build
shell: cmd
run: cmake --build ${{runner.workspace}}/build -j8 --config Release
- name: Install
run: |
cmake -E make_directory install
cmake --install build --config ${{env.BUILD_TYPE}} --prefix ${{github.workspace}}/install
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: winrt-ARM64-artifacts
path: ${{runner.workspace}}/build/dist
name: ${{matrix.os}}-artifacts
path: install

# build-ubuntu-sanitize:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# with:
# ref: ${{github.ref}}

# - name: Configure
# run: >
# cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
# -DBUILD_BLACKBOX_TESTS=ON -DBUILD_UNIT_TESTS=ON -DBUILD_PYTHON_MODULE=OFF -DBUILD_C_API=OFF
# -DCMAKE_CXX_COMPILER=clang++
# -DCMAKE_CXX_FLAGS="-march=native -fsanitize=address,undefined -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer"

# - name: Build
# run: cmake --build build -j8

# - name: Test
# run: ctest -V --test-dir build

# build-ios:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v3
# with:
# ref: ${{github.ref}}

# - name: Build the swift package
# run: swift build

# - name: Build the demo app
# working-directory: wrappers/ios/demo
# run: xcodebuild build -scheme demo -sdk "iphonesimulator"

# - name: Validate the Pod
# run: pod lib lint --allow-warnings

# build-android:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: actions/setup-java@v3
# with:
# distribution: 'temurin'
# java-version: '17'

# - name: Build the lib/app
# working-directory: wrappers/android
# run: ./gradlew assembleDebug # build only the debug version of the aar (faster build)

# - uses: actions/upload-artifact@v3
# with:
# name: android-artifacts
# path: "wrappers/android/zxingcpp/build/outputs/aar/zxingcpp-debug.aar"

# build-python:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# python-version: ['3.12']
# os: [ubuntu-latest, macos-latest, windows-latest]

# steps:
# - uses: actions/checkout@v3

# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/setup-python@v4
# with:
# python-version: ${{ matrix.python-version }}

# - name: Install dependencies
# working-directory: wrappers/python
# run: |
# python -m pip install --upgrade pip setuptools
# python -m pip install numpy pillow

# - name: Build module
# working-directory: wrappers/python
# run: python -m pip -v install -e .

# - name: Test module
# working-directory: wrappers/python
# run: python -m unittest -v

# build-rust:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [ubuntu-latest, macos-latest, windows-latest]

# steps:
# - uses: actions/checkout@v3

# - name: Lint
# working-directory: wrappers/rust
# run: |
# cargo fmt --check
# cargo clippy -- -Dwarnings

# - name: Build
# working-directory: wrappers/rust
# run: cargo build --release --verbose --features bundled,image --examples

# - name: Test
# working-directory: wrappers/rust
# run: cargo test --release --features bundled,image

# - name: Package
# working-directory: wrappers/rust
# # --allow-dirty is required on the windows build (but not the ubuntu build?!)
# run: cargo package --verbose --allow-dirty --features bundled,image

# build-wasm:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: mymindstorm/setup-emsdk@v12

# - name: Configure
# run: emcmake cmake -Swrappers/wasm -Bbuild

# - name: Build
# run: cmake --build build -j4

# # - name: Test
# # run: node build/EmGlueTests.js

# - uses: actions/upload-artifact@v3
# with:
# name: wasm-artifacts
# path: |
# build/zxing*
# build/demo*

# build-winrt:
# runs-on: windows-latest

# steps:
# - uses: actions/checkout@v3

# - name: Configure
# shell: cmd # powershell messes up the arguments containing a '.' ?!?
# run: >
# cmake -S wrappers/winrt -B build -A ARM64
# -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_BUILD_TYPE=Release
# -DBUILD_WINRT_LIB=ON -DBUILD_EXAMPLES=OFF -DBUILD_BLACKBOX_TESTS=OFF -DBUILD_C_API=OFF
# -DEXTENSION_SDK_OUTPUT=dist/UAP/v0.8.0.0/ExtensionSDKs/ZXingWinRT/1.0.0.0

# - name: Build
# run: cmake --build build -j8 --config Release

# - uses: actions/upload-artifact@v3
# with:
# name: winrt-ARM64-artifacts
# path: build/dist

0 comments on commit ef16c58

Please sign in to comment.