Skip to content

Merge branch 'hotfix/2.8.8' #104

Merge branch 'hotfix/2.8.8'

Merge branch 'hotfix/2.8.8' #104

Workflow file for this run

name: Publish
on:
push:
branches: [ main, develop ]
tags: ['*']
pull_request:
workflow_dispatch:
env:
REGISTRY: docker.io
BASE_IMAGE_REPO: python
BASE_IMAGE_TAG: '3.8.7-buster'
# narg/NARG (number-of-CPU argument to pass to the builds) are based on OS-specific CPU counts in the GitHub-hosted GHA runners.
# checked 1/4/2024: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
jobs:
test_docker:
runs-on: ubuntu-latest
env:
NARG: 2
# This job runs for all events that trigger this workflow
steps:
- name: Checkout the repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build and run
run: |
cd /home/runner/work/dripline-cpp/dripline-cpp
docker build \
--build-arg img_repo=${BASE_IMAGE_REPO} \
--build-arg img_tag=${BASE_IMAGE_TAG} \
--build-arg build_type=Debug \
--build-arg build_examples=TRUE \
--build-arg enable_testing=TRUE \
--build-arg narg=${NARG} \
--tag driplineorg/dripline-cpp:test \
.
docker run driplineorg/dripline-cpp:test /usr/local/build/testing/run_tests
test_builds:
runs-on: ${{ matrix.os }}
# This job runs for all events that trigger this workflow
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
include:
- os: ubuntu-latest
narg: 2
- os: macos-latest
narg: 3
steps:
- name: Checkout the repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies -- Mac
if: startsWith(matrix.os, 'macos')
run: |
brew install \
boost \
rabbitmq-c \
rapidjson \
yaml-cpp
- name: Install dependencies -- Linux
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y \
libboost-all-dev \
librabbitmq-dev \
rapidjson-dev \
libyaml-cpp-dev
- name: Configure
run: |
mkdir build
cd build
cmake -DScarab_BUILD_PYTHON=FALSE -DDripline_ENABLE_TESTING=TRUE ..
- name: Build
run: |
cd build
make -j${{ matrix.narg }} install
- name: Run tests
run: |
cd build/testing
./run_tests
build_and_push:
runs-on: ubuntu-latest
env:
NARG: 2
# This job runs on push (limited above to develop, main and tags) and pull_requests marked read_for_review
# Pushing images is limited below to push events
if: |
github.event_name == 'push' ||
(github.event_name == 'pull_request' && github.event.pull_request.draft == false)
needs: [test_docker, test_builds]
strategy:
matrix:
build: [dev, release]
include:
- build: dev
build-type: DEBUG
build-examples: 'TRUE'
enable-testing: 'TRUE'
tag-suffix: '-dev'
- build: release
build-type: RELEASE
build-examples: 'FALSE'
enable-testing: 'FALSE'
tag-suffix: ''
steps:
- name: Checkout the repo
uses: actions/checkout@v4
with:
submodules: recursive
- name: Docker meta
id: docker_meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ github.repository }}
flavor: |
latest=auto
suffix=${{ matrix.tag-suffix }},onlatest=true
tags: |
type=semver,pattern={{raw}}
type=ref,event=branch
type=ref,event=pr
type=raw,value=latest,enable=${{ github.ref == format('refs/heads{0}', 'main') }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
id: setup_buildx
uses: docker/setup-buildx-action@v3
with:
buildkitd-flags: --debug
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# for ghcr.io, use:
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
id: build_push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.event_name == 'push' }} # limited to develop, main, and tags; don't push on PR
build-args: |
img_repo=${{ env.BASE_IMAGE_REPO }}
img_tag=${{ env.BASE_IMAGE_TAG }}
build_type=${{ matrix.build-type }}
build_examples=${{ matrix.build-examples }}
enable_testing=${{ matrix.enable-testing }}
narg=${{env.NARG }}
tags: ${{ steps.docker_meta.outputs.tags }}
platforms: linux/amd64,linux/arm/v7,linux/arm64
- name: Release
uses: softprops/action-gh-release@v1
if: ${{ github.event_name == 'push' && contains(github.ref, 'refs/tags/') }}