Skip to content

Merge pull request #954 from slaclab/ESROGUE-599 #1214

Merge pull request #954 from slaclab/ESROGUE-599

Merge pull request #954 from slaclab/ESROGUE-599 #1214

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
env:
EPICS_BASE: /home/runner/packages/epics/base-7.0.7
EPICS_PCAS_ROOT: /home/runner/packages/pcas/pcas-4.13.3
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: Setup Environment
run: |
LD_LIBRARY_PATH=/usr/lib:${EPICS_BASE}/lib/linux-x86_64:${EPICS_PCAS_ROOT}/lib/linux-x86_64
PATH=${EPICS_BASE}/bin/linux-x86_64:${PATH}
echo "EPICS_BASE=$EPICS_BASE" >> $GITHUB_ENV
echo "EPICS_PCAS_ROOT=$EPICS_PCAS_ROOT" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
- 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/
- name: Cache EPICS
uses: actions/cache@v3
id: epics-cache
with:
key: epics
path: |
${{ env.EPICS_BASE }}/
${{ env.EPICS_PCAS_ROOT }}/
- if: ${{ steps.epics-cache.outputs.cache-hit != 'true' }}
name: Install EPICS Base
run: |
mkdir -p ${EPICS_BASE}
cd ${EPICS_BASE}
pwd
wget -O base-7.0.7.tar.gz https://github.com/epics-base/epics-base/archive/R7.0.7.tar.gz
tar xzf base-7.0.7.tar.gz --strip 1
make clean && make && make install
- if: ${{ steps.epics-cache.outputs.cache-hit != 'true' }}
name: Install EPICS PCAS
run: |
mkdir -p ${EPICS_PCAS_ROOT}
cd ${EPICS_PCAS_ROOT}
wget -O pcas-4.13.3.tar.gz https://github.com/epics-modules/pcas/archive/v4.13.3.tar.gz
tar xzf pcas-4.13.3.tar.gz --strip 1
echo "EPICS_BASE=$EPICS_BASE" >> configure/RELEASE.local
make clean && make && make install
# Rogue
- name: Build Rogue
run: |
python -c "import numpy; print(numpy.get_include())"
mkdir build; cd build
cmake .. -DROGUE_INSTALL=local -DDO_EPICS=1
make -j4 install
# Run Tests
- name: Rogue Tests
run: |
source setup_rogue.sh
python -m pytest --cov
# # Run test_rate.py
# # - name: Get test_rate.py output
# # uses: mathiasvr/command-output@v1
# # id: rates
# # with:
# # run: |
# # source setup rogue.sh
# # python -m test_rate.py
# 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
# # Set up for Comment PR
# - name: Checkout
# uses: actions/checkout@v3
# # Comment on PR
# - name: Comment PR
# uses: thollander/actions-comment-pull-request@v1
# with:
# message: |
# Rates -
# ${{steps.rates.outputs.stdout}}
# github_token: ${{ secrets.GITHUB_TOKEN }}
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:
name: Generate Release
runs-on: ubuntu-20.04
needs: [full_build_test, small_build_test]
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Get Image Information
id: get_image_info
run: |
echo ::set-output name=tag::`git describe --tags`
- name: Get Ruckus
run: |
git clone https://github.com/slaclab/ruckus.git
python -m pip install --upgrade pip
pip install -r ruckus/scripts/pip_requirements.txt
- name: Gen Release
env:
TRAVIS_REPO_SLUG: ${{ github.repository }}
TRAVIS_TAG: ${{ steps.get_image_info.outputs.tag }}
GH_REPO_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
python ruckus/scripts/releaseGen.py
conda_build:
name: Anaconda Build
needs: [full_build_test, small_build_test]
if: startsWith(github.ref, 'refs/tags/')
strategy:
matrix:
os:
- ubuntu-20.04
src:
- conda-recipe
runs-on: ${{ matrix.os }}
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
env:
OS_NAME: ${{ matrix.os }}
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 }}
OS_NAME: ${{ matrix.os }}
run: |
echo ::set-output name=token::$CONDA_UPLOAD_TOKEN_TAG
echo ::set-output name=os::linux-64
- name: Build
env:
CONDA_SRC: ${{ matrix.src }}
run: |
export PATH="${HOME}/miniconda/bin:$PATH"
source ${HOME}/miniconda/etc/profile.d/conda.sh
conda build $CONDA_SRC --output-folder bld-dir -c tidair-packages -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/${{ steps.get_image_info.outputs.os }}/*.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 ::set-output name=tag::`git describe --tags`
echo ::set-output name=branch::`echo ${GITHUB_REF} | awk 'BEGIN { FS = "/" } ; { print $3 }'`
# 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: ./Dockerfile
push: true
tags: tidair/rogue:${{ steps.get_image_info.outputs.tag }}, tidair/rogue:latest
build-args: branch=${{ steps.get_image_info.outputs.branch }}