Merge pull request #1003 from slaclab/ESROGUE-608 #1416
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
# ---------------------------------------------------------------------------- | |
# 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 }} | |
# ---------------------------------------------------------------------------- |