Skip to content

CMAKE Python Fix

CMAKE Python Fix #1424

Workflow file for this run

# ----------------------------------------------------------------------------
# Title : ROGUE GitHub Actions Script
# ----------------------------------------------------------------------------
# This file is part of the rogue software package. It is subject to
# the license terms in the LICENSE.txt file found in the top-level directory
# of this distribution and at:
# https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
# No part of the rogue software package, including this file, may be
# copied, modified, propagated, or distributed except according to the terms
# contained in the LICENSE.txt file.
# ----------------------------------------------------------------------------
# The following environment variables are required for this process:
# secrets.GH_TOKEN
# secrets.CONDA_UPLOAD_TOKEN_TAG
# secrets.DOCKERHUB_TOKEN
name: Rogue Integration
on: [push]
jobs:
full_build_test:
name: Full Build Test
runs-on: ubuntu-20.04
steps:
# This step checks out a copy of your repository.
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: 3.8
cache: 'pip'
cache-dependency-path: 'pip_requirements.txt'
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install doxygen doxygen-doc libzmq3-dev libboost-all-dev
pip install -r pip_requirements.txt
# Flake 8 check
- name: Flake8 Tests
run: |
python -m compileall -f ./python/
flake8 --count ./python/
python -m compileall -f ./tests
flake8 --count ./tests/
# Rogue
- name: Build Rogue
run: |
python -c "import numpy; print(numpy.get_include())"
mkdir build; cd build
cmake .. -DROGUE_INSTALL=local
make -j4 install
# Run Tests
- name: Rogue Tests
run: |
source setup_rogue.sh
python -m pytest --cov
# Compile API Test
- name: Compile API Test
run: |
source setup_rogue.sh
cd tests/api_test
mkdir build; cd build
cmake ..
make
# Run API Test
- name: Run API Test
run: |
source setup_rogue.sh
tests/api_test/bin/api_test
# Code Coverage
- name: Code Coverage
run: |
source setup_rogue.sh
codecov
coverage report -m
# Generate Documentation
- name: Generate Documentation
if: startsWith(github.ref, 'refs/tags/')
run: |
source setup_rogue.sh
cd docs
make html
- name: Deploy Documentation
if: startsWith(github.ref, 'refs/tags/')
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GH_TOKEN }}
publish_dir: docs/build/html
# ----------------------------------------------------------------------------
small_build_test:
name: Small Build Test
runs-on: ubuntu-20.04
steps:
# This step checks out a copy of your repository.
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install libzmq3-dev
# Rogue
- name: Build Rogue
run: |
mkdir build; cd build
cmake .. -DROGUE_INSTALL=local -DNO_PYTHON=1 -DSTATIC_LIB=1
make -j4 install
# ----------------------------------------------------------------------------
gen_release:
needs: [full_build_test, small_build_test]
uses: slaclab/ruckus/.github/workflows/gen_release.yml@main
with:
version: '1.0.0'
secrets:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
# ----------------------------------------------------------------------------
conda_build:
name: Anaconda Build
needs: [full_build_test, small_build_test]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-20.04
steps:
# This step checks out a copy of your repository.
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Setup anaconda
run: |
cd ${HOME}
wget -O miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash miniconda.sh -b -p ${HOME}/miniconda
export PATH="${HOME}/miniconda/bin:$PATH"
source ${HOME}/miniconda/etc/profile.d/conda.sh
conda config --set always_yes yes
conda config --set channel_priority strict
conda install -n base conda-libmamba-solver
conda config --set solver libmamba
conda install conda-build anaconda-client conda-verify
conda update -q conda conda-build
conda update --all
- name: Get Image Information
id: get_image_info
env:
CONDA_UPLOAD_TOKEN_TAG: ${{ secrets.CONDA_UPLOAD_TOKEN_TAG }}
run: |
echo token=${CONDA_UPLOAD_TOKEN_TAG} >> ${GITHUB_OUTPUT}
- name: Build
run: |
export PATH="${HOME}/miniconda/bin:$PATH"
source ${HOME}/miniconda/etc/profile.d/conda.sh
conda build conda-recipe --output-folder bld-dir -c conda-forge
- name: Upload
run: |
export PATH="${HOME}/miniconda/bin:$PATH"
source ${HOME}/miniconda/etc/profile.d/conda.sh
anaconda -t ${{ steps.get_image_info.outputs.token }} upload --force bld-dir/*/*.tar.bz2
# ----------------------------------------------------------------------------
docker_build:
name: Docker Build
runs-on: ubuntu-20.04
needs: [full_build_test, small_build_test]
if: startsWith(github.ref, 'refs/tags/')
steps:
# This step checks out a copy of your repository.
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get Image Information
id: get_image_info
run: |
echo tag=`git describe --tags` >> ${GITHUB_OUTPUT}
echo branch=`echo ${GITHUB_REF} | awk 'BEGIN { FS = "/" } ; { print $3 }'` >> ${GITHUB_OUTPUT}
# Setup docker build environment
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
# Login to Dockerhub
- name: Login to Dockerhub
uses: docker/login-action@v1
with:
username: tidair
password: ${{ secrets.DOCKERHUB_TOKEN }}
# Build and push the docker image
- name: Build and push image to Dockerhub
uses: docker/build-push-action@v2
with:
context: .
file: ./docker/rogue/Dockerfile
push: true
tags: tidair/rogue:${{ steps.get_image_info.outputs.tag }}, tidair/rogue:latest
build-args: branch=${{ steps.get_image_info.outputs.branch }}
# ----------------------------------------------------------------------------