Skip to content

fixup! Use parallel jobs and caching to speed up slow CI #13

fixup! Use parallel jobs and caching to speed up slow CI

fixup! Use parallel jobs and caching to speed up slow CI #13

Workflow file for this run

name: CI
on:
push:
branches: ["**"]
pull_request:
branches: ["**"]
workflow_call:
workflow_dispatch:
jobs:
build-zenoh-c:
name: Build Zenoh-C
runs-on: ubuntu-latest
steps:
- name: Install Rust toolchain
run: rustup component add rustfmt clippy
- name: Clone Zenoh-C
run: |
pwd
git clone https://github.com/eclipse-zenoh/zenoh-c.git
cd zenoh-c && git rev-parse HEAD > .gh_head_rev && cat .gh_head_rev
- name: Cached rust + c build
uses: Swatinem/rust-cache@v2
with:
shared-key: zenohc
key: ${{ hashFiles('zenoh-c/.gh_head_rev') }}
cache-directories: |

Check failure on line 31 in .github/workflows/ci.yml

View workflow run for this annotation

GitHub Actions / CI

Invalid workflow file

The workflow is not valid. .github/workflows/ci.yml (Line: 31, Col: 9): Unexpected value 'cache-directories'
zenoh-c/build
# - name: Cached Cargo files
# uses: actions/cache@v4
# with:
# key: zenohc-cargo-${{ hashFiles('zenoh-c/.gh_head_rev') }}
# restore-keys: |
# zenohc-cargo-
# path: |
# ~/.cargo
# - name: Cached Zenoh-C build
# uses: actions/cache@v4
# with:
# key: zenohc-${{ hashFiles('zenoh-c/.gh_head_rev') }}
# path: |
# zenoh-c/build
- name: Build and install Zenoh-C
shell: bash
run: |
cd zenoh-c
if [ ! -e build ]; then
mkdir -p build
fi
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/local
cmake --build . --target install --config Release -- -j
- name: Upload artifacts for dependent jobs
uses: actions/upload-artifact@v4
with:
name: libzenohc
path: ~/local
retention-days: 1
build-up-cpp:
name: Build up-cpp
runs-on: ubuntu-latest
steps:
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
- name: Create default Conan profile
run: conan profile detect
- name: Create up-cpp Conan package
shell: bash
run: |
git clone https://github.com/eclipse-uprotocol/up-cpp.git
cd up-cpp
git submodule update --init --recursive
conan create . --build=missing
- name: Upload artifacts for dependent jobs
uses: actions/upload-artifact@v4
with:
name: up-cpp-conan2
path: ~/.conan2
retention-days: 1
build-up-client-zenoh-cpp:
name: Build up-client-zenoh-cpp
needs: [ build-zenoh-c, build-up-cpp ]
runs-on: ubuntu-latest
steps:
- name: Download libzenohc
uses: actions/download-artifact@v4
with:
name: libzenohc
path: ~/local
- name: Download up-cpp conan packages
uses: actions/download-artifact@v4
with:
name: up-cpp-conan2
path: ~/.conan2
- uses: actions/checkout@v4
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
- name: Build && install up-client-zenoh-cpp
shell: bash
run: |
export CMAKE_PREFIX_PATH="$HOME/local"
export CMAKE_ZENOH_INCLUDE_PATH="$HOME/local/include"
mkdir build
cd build
conan install ../ -o build_unbundled=True -o zenoh_package=False
cmake ../ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/local
cmake --build . --target install --config Release -- -j
# NOTE: In GitHub repository settings, the "Require status checks to pass
# before merging" branch protection rule ensures that commits are only merged
# from branches where specific status checks have passed. These checks are
# specified manually as a list of workflow job names. Thus we use this extra
# job to signal whether all CI checks have passed.
ci:
name: CI status checks
runs-on: ubuntu-latest
needs: [ build-zenoh-c, build-up-cpp, build-up-client-zenoh-cpp ]
if: always()
steps:
- name: Check whether all jobs pass
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")'