Merge pull request #156 from SNflows/devel #452
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
# GitHub Actions workflow for Flows's continuous integration. | |
name: Tests | |
on: | |
push: | |
branches: [master, devel] | |
tags: 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 | |
pull_request_target: | |
branches: [master, devel] | |
schedule: | |
- cron: '0 6 1 * *' # once a month in the morning | |
jobs: | |
# Use the `flake8` tool to check for syntax errors | |
flake8: | |
name: Flake8 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
persist-credentials: true | |
- name: Setup Python 3.11 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.11 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install -r requirements.txt | |
pip install -r dev_requirements.txt | |
- name: Lint with flake8 | |
run: | | |
# stop the build if there are Python syntax errors or undefined names | |
# For some reason we have to specifically ignore G001 as well | |
flake8 --select=E9,F63,F7,F82 --show-source --ignore=G001,G004 | |
# exit-zero treats all errors as warnings. | |
# flake8 --exit-zero | |
# Run unit tests on Linux, OSX and Windows | |
pytest: | |
needs: flake8 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
python-version: ['3.11'] | |
include: | |
- os: ubuntu-latest | |
pippath: ~/.cache/pip | |
- os: macos-latest | |
pippath: ~/Library/Caches/pip | |
name: Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
env: | |
OS: ${{ matrix.os }} | |
PYTHON: ${{ matrix.python-version }} | |
FLOWS_CONFIG: ${{ secrets.FLOWS_CONFIG }} | |
FLOWS_API_TOKEN: ${{ secrets.FLOWS_API_TOKEN }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Create LFS file list | |
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | |
- name: Restore LFS cache | |
uses: actions/cache@v2 | |
id: lfs-cache | |
with: | |
path: .git/lfs | |
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1 | |
- name: Git LFS Pull | |
run: git lfs pull | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Cache pip | |
uses: actions/cache@v2 | |
with: | |
path: ${{ matrix.pippath }} | |
key: ${{ runner.os }}-pip-py${{ matrix.python-version }}-${{ hashFiles('requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip-py${{ matrix.python-version }}- | |
${{ runner.os }}-pip- | |
- name: Install dependencies | |
env: | |
FLOWS_CONFIG: ${{ secrets.FLOWS_CONFIG }} | |
FLOWS_API_TOKEN: ${{ secrets.FLOWS_API_TOKEN }} | |
CASSJOBS_WSID: ${{ secrets.CASSJOBS_WSID }} | |
CASSJOBS_PASSWORD: ${{ secrets.CASSJOBS_PASSWORD }} | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install -r requirements.txt | |
pip install -r dev_requirements.txt | |
pip install codecov pytest-cov | |
python tests/setup_tendrils.py | |
- name: Testing | |
env: | |
FLOWS_CONFIG: ${{ secrets.FLOWS_CONFIG }} | |
FLOWS_API_TOKEN: ${{ secrets.FLOWS_API_TOKEN }} | |
CASSJOBS_WSID: ${{ secrets.CASSJOBS_WSID }} | |
CASSJOBS_PASSWORD: ${{ secrets.CASSJOBS_PASSWORD }} | |
run: pytest --cov | |
- name: Upload coverage | |
continue-on-error: true | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
env_vars: OS,PYTHON | |
verbose: true | |
# Release tagged commits to: | |
release: | |
name: Create release | |
if: startsWith( github.ref, 'refs/tags/v' ) | |
needs: pytest | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- name: Create LFS file list | |
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | |
- name: Restore LFS cache | |
uses: actions/cache@v2 | |
id: lfs-cache | |
with: | |
path: .git/lfs | |
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}-v1 | |
- name: Git LFS Pull | |
run: git lfs pull | |
- name: Setup Python Release | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.11' | |
- name: Install dependencies | |
env: | |
FLOWS_API_TOKEN: ${{ secrets.FLOWS_API_TOKEN }} | |
FLOWS_CONFIG: ${{ secrets.FLOWS_CONFIG }} | |
CASSJOBS_WSID: ${{ secrets.CASSJOBS_WSID }} | |
CASSJOBS_PASSWORD: ${{ secrets.CASSJOBS_PASSWORD }} | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install -r requirements.txt | |
pip install -r dev_requirements.txt | |
python tests/setup_tendrils.py | |
- name: Update VERSION file | |
run: python -c "from flows import version; version.update_release_version();" | |
- name: Set env | |
id: vars | |
run: echo ::set-output name=tag::${GITHUB_REF#refs/tags/v} | |
- name: Generate changelog | |
id: changelog | |
uses: metcalfc/changelog-generator@v1.0.0 | |
with: | |
myToken: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: Version ${{ steps.vars.outputs.tag }} | |
body: | | |
Version ${{ steps.vars.outputs.tag }} | |
Changelog | |
--------- | |
${{ steps.changelog.outputs.changelog }} | |
draft: true |