Skip to content

Merge pull request #156 from SNflows/devel #452

Merge pull request #156 from SNflows/devel

Merge pull request #156 from SNflows/devel #452

Workflow file for this run

# 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