mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 16:48:31 +02:00
* Fixes for new CI pipeline (Github Actions) - Support ci skip tag on commits to avoid build dupes - Add smarter path detection so we don't spam tons of tests - Allow steps to cancel if previous steps were cancelled (don't always run) - Separate workflows to be more modular - Update release workflow to do a few more things - Add helpful messages - Be more strict in version checking (now with added regex) - Make changelog smarter about when to trigger - Add some functionality for changelog to handle releases and prereleases separately - Better error handling - Split up the version validation and the release to make way for more releases * add step in workflow to merge to release branch after a release * add check for git diff so commit doesn't error out constantly
101 lines
2.6 KiB
YAML
101 lines
2.6 KiB
YAML
name: Testing
|
|
|
|
on:
|
|
push:
|
|
branches: [ develop, release ]
|
|
paths:
|
|
- 'jrnl/**'
|
|
- 'features/**'
|
|
- 'tests/**'
|
|
- 'poetry.lock'
|
|
- 'pyproject.toml'
|
|
pull_request_target:
|
|
branches: [ develop ]
|
|
paths:
|
|
- 'jrnl/**'
|
|
- 'features/**'
|
|
- 'tests/**'
|
|
- 'poetry.lock'
|
|
- 'pyproject.toml'
|
|
|
|
jobs:
|
|
test:
|
|
if: >
|
|
! contains(github.event.head_commit.message, '[ci skip]')
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
python-version: [ 3.7, 3.8, 3.9 ]
|
|
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: poetry cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: .venv
|
|
key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ matrix.python-version }}
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
pip install poetry
|
|
poetry config --local virtualenvs.in-project true
|
|
poetry install --remove-untracked
|
|
|
|
- name: Code formatting (Black)
|
|
if: success() || failure()
|
|
run: |
|
|
poetry run black --version
|
|
poetry run black --check --diff .
|
|
|
|
- name: Code Style (PyFlakes)
|
|
if: success() || failure()
|
|
run: |
|
|
poetry run pyflakes --version
|
|
poetry run pyflakes jrnl features tests
|
|
|
|
- name: Test with pytest
|
|
if: success() || failure()
|
|
run: poetry run pytest --junitxml=reports/pytest/results.xml
|
|
|
|
- name: Test with behave
|
|
if: success() || failure()
|
|
run: poetry run behave --no-skipped --format progress2 --junit --junit-directory reports/behave
|
|
|
|
- name: Upload Unit Test Results
|
|
if: success() || failure()
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Unit Test Results
|
|
path: reports/**/*.xml
|
|
|
|
publish-test-results:
|
|
if: success() || failure()
|
|
name: "Publish Unit Tests Results"
|
|
needs: test
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Download Artifacts
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
path: artifacts
|
|
|
|
- name: Publish Unit Test Results
|
|
uses: EnricoMi/publish-unit-test-result-action@v1.4
|
|
if: always()
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
check_name: Unit Test Results
|
|
hide_comments: all but latest
|
|
comment_on_pr: true
|
|
files: '**/*.xml'
|
|
report_individual_runs: true
|
|
deduplicate_classes_by_file_name: false
|
|
|