refactor(cbindings): Thread-safe communication between the main thread and the Waku Thread #1914
Workflow file for this run
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: ci | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
NPROC: 2 | |
MAKEFLAGS: "-j${NPROC}" | |
NIMFLAGS: "--parallelBuild:${NPROC}" | |
jobs: | |
changes: # changes detection | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: read | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout code | |
id: checkout | |
- uses: dorny/paths-filter@v2 | |
id: filter | |
with: | |
filters: | | |
common: | |
- '.github/workflows/**' | |
- 'vendor/**' | |
- 'Makefile' | |
- 'waku.nimble' | |
v2: | |
- 'waku/**' | |
- 'apps/**' | |
- 'tools/**' | |
- 'tests/all_tests_v2.nim' | |
- 'tests/**' | |
outputs: | |
common: ${{ steps.filter.outputs.common }} | |
v2: ${{ steps.filter.outputs.v2 }} | |
build: | |
needs: changes | |
if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
name: build-${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Get submodules hash | |
id: submodules | |
run: | | |
echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT | |
- name: Cache submodules | |
uses: actions/cache@v3 | |
with: | |
path: | | |
vendor/ | |
.git/modules | |
key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} | |
- name: Build binaries | |
run: make V=1 QUICK_AND_DIRTY_COMPILER=1 all tools | |
test: | |
needs: changes | |
if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
name: test-${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Get submodules hash | |
id: submodules | |
run: | | |
echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT | |
- name: Cache submodules | |
uses: actions/cache@v3 | |
with: | |
path: | | |
vendor/ | |
.git/modules | |
key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} | |
- name: Run tests | |
run: | | |
if [ ${{ runner.os }} == "macOS" ]; then | |
brew unlink postgresql@14 | |
brew link libpq --force | |
fi | |
if [ ${{ runner.os }} == "Linux" ]; then | |
sudo docker run --rm -d -e POSTGRES_PASSWORD=test123 -p 5432:5432 postgres:9.6-alpine | |
fi | |
make V=1 LOG_LEVEL=DEBUG QUICK_AND_DIRTY_COMPILER=1 test testwakunode2 | |
build-docker-image: | |
needs: changes | |
if: ${{ needs.changes.outputs.v2 == 'true' || needs.changes.outputs.common == 'true' }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
name: docker-build-${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Get submodules hash | |
id: submodules | |
run: | | |
echo "hash=$(git submodule status | awk '{print $1}' | sort | shasum -a 256 | sed 's/[ -]*//g')" >> $GITHUB_OUTPUT | |
- name: Cache submodules | |
uses: actions/cache@v3 | |
with: | |
path: | | |
vendor/ | |
.git/modules | |
key: ${{ runner.os }}-vendor-modules-${{ steps.submodules.outputs.hash }} | |
- name: Build binaries | |
id: build | |
run: | | |
make -j${NPROC} V=1 QUICK_AND_DIRTY_COMPILER=1 NIMFLAGS="-d:disableMarchNative" wakunode2 | |
TAG=$([ "${PR_NUMBER}" == "" ] && echo "master" || echo "${PR_NUMBER}") | |
IMAGE=quay.io/wakuorg/nwaku-pr:${TAG} | |
echo "image=${IMAGE}" >> $GITHUB_OUTPUT | |
docker login -u ${QUAY_USER} -p ${QUAY_PASSWORD} quay.io | |
docker build -t ${IMAGE} -f docker/binaries/Dockerfile.bn.amd64 --label quay.expires-after=7d . | |
docker push ${IMAGE} | |
env: | |
QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }} | |
QUAY_USER: ${{ secrets.QUAY_USER }} | |
PR_NUMBER: ${{ github.event.number }} | |
- name: Comment PR | |
uses: thollander/actions-comment-pull-request@v2 | |
if: ${{ github.event_name == 'pull_request' }} | |
with: | |
message: | | |
You can find the image built from this PR at | |
``` | |
${{steps.build.outputs.image}} | |
``` | |
comment_tag: execution |