Skip to content

Commit

Permalink
Initial CI setup (#2)
Browse files Browse the repository at this point in the history
CI features for Github actions; setup scripts for Ubuntu; basic unit tests
  • Loading branch information
boblinchuan authored Jun 26, 2024
1 parent 1555a12 commit 091ca57
Show file tree
Hide file tree
Showing 12 changed files with 575 additions and 3 deletions.
97 changes: 97 additions & 0 deletions .github/workflows/conda_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Testing if we can install Conda successfully. Sanity checking the CI flow.
name: conda-test

on: [push]

env:
CONDA_ENV_NAME: conda_test

jobs:
conda-cache:
runs-on: ubuntu-20.04
defaults:
run:
shell: bash -el {0}
continue-on-error: true
outputs:
pytestOutput: ${{ steps.unit-tests.outputs.test }}
strategy:
matrix:
python-version: ["3.7"]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup conda
uses: conda-incubator/[email protected]
with:
activate-environment: ${{ env.CONDA_ENV_NAME }}
python-version: ${{ matrix.python-version }}
auto-activate-base: false
- name: Save Conda Env
# Workaround, this isn't working otherwise.
run: |
echo "CONDA=$CONDA"
echo "CONDA=$CONDA" >> "$GITHUB_ENV"
- name: Cache Conda env
uses: actions/cache@v3
with:
path: ${{ env.CONDA }}/envs/${{ env.CONDA_ENV_NAME }}
key:
conda-test-conda-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
hashFiles('conda_test.yml') }}-${{
env.CACHE_NUMBER }}
env:
CACHE_NUMBER: 0
id: cache
- name: Update environment
run: |
echo "CONDA=$CONDA"
conda env update -n ${{ env.CONDA_ENV_NAME }} -f conda_test.yml
ls $CONDA/envs/
if: steps.cache.outputs.cache-hit != 'true'
conda-cache-load:
needs: conda-cache
runs-on: ubuntu-20.04
defaults:
run:
shell: bash -el {0}
continue-on-error: true
outputs:
pytestOutput: ${{ steps.unit-tests.outputs.test }}
strategy:
matrix:
python-version: ["3.7"]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup conda
uses: conda-incubator/[email protected]
with:
activate-environment: ${{ env.CONDA_ENV_NAME }}
python-version: ${{ matrix.python-version }}
auto-activate-base: false
- name: Save Conda Env
# Workaround, this isn't working otherwise.
run: |
echo "CONDA=$CONDA"
echo "CONDA=$CONDA" >> "$GITHUB_ENV"
- name: Cache Conda env
uses: actions/cache@v3
with:
path: ${{ env.CONDA }}/envs/${{ env.CONDA_ENV_NAME }}
key:
conda-test-conda-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
hashFiles('conda_test.yml') }}-${{
env.CACHE_NUMBER }}
env:
CACHE_NUMBER: 0
id: cache
- name: Fail
run: exit 1
if: steps.cache.outputs.cache-hit != 'true'
157 changes: 157 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# CI flow
name: pybag-pr-ci

on:
push:
schedule:
- cron: '0 9 * * *' # 9AM UTC = 2AM PST

env:
CONDA_ENV_NAME: bag_py3d7_c

jobs:
build:
runs-on: ubuntu-20.04
defaults:
run:
shell: bash -el {0}
continue-on-error: true
outputs:
pytestOutput: ${{ steps.unit-tests.outputs.test }}
strategy:
matrix:
python-version: ["3.7"]
steps:
- name: Install packages
run: |
sudo apt update
sudo apt -y install \
autoconf \
curl \
gcc-8 \
g++-8 \
git \
libtool \
libltdl-dev \
pkg-config \
make \
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup conda
uses: conda-incubator/[email protected]
with:
activate-environment: ${{ env.CONDA_ENV_NAME }}
python-version: ${{ matrix.python-version }}
auto-activate-base: false
- name: Save Conda Env
# Workaround, this isn't working otherwise.
run: |
echo "CONDA=$CONDA"
echo "CONDA=$CONDA" >> "$GITHUB_ENV"
- name: Cache Conda env
uses: actions/cache@v3
with:
path: ${{ env.CONDA }}/envs/${{ env.CONDA_ENV_NAME }}
key:
conda-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
hashFiles('environment.yml') }}-${{
env.CACHE_NUMBER }}
env:
# Increase this value to reset cache if etc/example-environment.yml has not changed
CACHE_NUMBER: 0
id: cache-conda
- name: Update conda environment
run: |
echo "CONDA=$CONDA"
conda env update -n ${{ env.CONDA_ENV_NAME }} -f environment.yml
if: steps.cache-conda.outputs.cache-hit != 'true'
- name: Install additional dependencies
if: steps.cache-conda.outputs.cache-hit != 'true'
run: |
cd setup
mkdir install
cp setup_script.sh install/
cp render_template.py install/
cp project-config.template install/
cd install
./setup_script.sh
cd ../../
- name: Build cbag and pybag
id: cpp-build
run: |
export PYBAG_PYTHON=python
echo "PYBAG_PYTHON=$PYBAG_PYTHON"
./run_test.sh
- name: Cache pybag build
uses: actions/cache@v3
with:
path: _build
key:
build-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
env.CACHE_NUMBER }}
env:
# Increase this value to reset cache if etc/example-environment.yml has not changed
CACHE_NUMBER: 0
id: cache-pybag
test:
needs: build
runs-on: ubuntu-20.04
defaults:
run:
shell: bash -el {0}
continue-on-error: true
outputs:
pytestOutput: ${{ steps.unit-tests.outputs.test }}
strategy:
matrix:
python-version: ["3.7"]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Setup conda
uses: conda-incubator/[email protected]
with:
activate-environment: bag_py3d7_c
python-version: ${{ matrix.python-version }}
auto-activate-base: false
- name: Save Conda Env
# Workaround, this isn't working otherwise.
run: |
echo "CONDA=$CONDA"
echo "CONDA=$CONDA" >> "$GITHUB_ENV"
- name: Cache Conda env
uses: actions/cache@v3
with:
path: ${{ env.CONDA }}/envs/${{ env.CONDA_ENV_NAME }}
key:
conda-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
hashFiles('environment.yml') }}-${{
env.CACHE_NUMBER }}
env:
# Increase this value to reset cache if etc/example-environment.yml has not changed
CACHE_NUMBER: 0
id: cache-conda
- name: Cache pybag build
uses: actions/cache@v3
with:
path: _build
key:
build-${{ runner.os }}--${{ runner.arch }}--${{
steps.get-date.outputs.today }}-${{
env.CACHE_NUMBER }}
env:
# Increase this value to reset cache if etc/example-environment.yml has not changed
CACHE_NUMBER: 0
id: cache-pybag
- name: Run test
id: run-pytest
run: |
which pytest
pytest tests -v
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
# PYBAG

Python wrapper for [CBAG](https://github.com/bluecheetah/cbag) library.
Python wrapper for [CBAG](https://github.com/ucb-art/cbag) library for BAG3++.

This is a fork of [PYBAG] (https://github.com/ucb-art/pybag), which as of May 13th, 2019,
has been taken offline temporarily.
## Setup

This library should be used with [BAG3++](https://github.com/ucb-art/bag). To setup BAG, follow the instructions outlined on the [RTD page](https://bag3-readthedocs.readthedocs.io/en/latest/dependencies/).

Alternative, if you are using Ubuntu, you can use the `setup_script.sh` under the `setup` directory. This runs the steps described in the RTD page above. See the `setup/README.md` for discussion.

To build the `pybag` library, run `./run_test.sh`. This will compile `cbag` as well as create the `pybag` Python wrappers for `BAG`.

Running `./run_test.sh`requires the `PYBAG_PYTHON` environment variable be set to the Python from your Miniconda install from the setup process.

## Licensing

Expand Down
8 changes: 8 additions & 0 deletions conda_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
name: conda_test
channels:
- anaconda
- conda-forge
- defaults
dependencies:
- numpy-base>=1.21.5

Loading

0 comments on commit 091ca57

Please sign in to comment.