From f74eda06bd53c0fac6bbe7ff563ce4e46a1c4b26 Mon Sep 17 00:00:00 2001 From: Federico Bond Date: Tue, 24 Oct 2023 20:39:06 -0300 Subject: [PATCH] chore: optimize GitHub CI workflow (#220) Signed-off-by: Federico Bond --- .../workflows/{pullrequest.yml => build.yml} | 70 +++++++++--------- .github/workflows/merge.yml | 74 ------------------- 2 files changed, 37 insertions(+), 107 deletions(-) rename .github/workflows/{pullrequest.yml => build.yml} (70%) delete mode 100644 .github/workflows/merge.yml diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/build.yml similarity index 70% rename from .github/workflows/pullrequest.yml rename to .github/workflows/build.yml index 751b23e6..5a96d9bf 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/build.yml @@ -3,42 +3,62 @@ # separate terms of service, privacy policy, and support # documentation. -name: PR +name: "Build, lint, and test" on: + push: + branches: + - main pull_request: - branches: [master, main] - -permissions: - contents: read + branches: + - main jobs: build: runs-on: ubuntu-latest strategy: matrix: - container: ["python:3.8", "python:3.9", "python:3.10", "python:3.11"] - container: - image: ${{ matrix.container }} + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v4 with: submodules: recursive - - name: Cache virtualenvironment - uses: actions/cache@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 with: - path: ~/.venv - key: ${{ hashFiles('requirements.txt', 'requirements-dev.txt') }} + python-version: ${{ matrix.python-version }} + cache: "pip" - - name: Upgrade pip - run: pip install --upgrade pip + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Test with pytest + run: coverage run --omit="*/test*" -m pytest - - name: Create and activate Virtualenv + - name: Run E2E tests with behave run: | - [ ! -d ".venv" ] && python -m venv .venv - . .venv/bin/activate + cp test-harness/features/evaluation.feature tests/features/ + behave tests/features/ + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@c9e0f0b3cf5f112462339d69850c01735114b9ed + with: + flags: unittests # optional + name: coverage # optional + fail_ci_if_error: true # optional (default = false) + verbose: true # optional (default = false) + + lint: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + cache: "pip" - name: Initialize CodeQL uses: github/codeql-action/init@v2 @@ -57,21 +77,5 @@ jobs: - name: Run isort formatter check run: isort . - - name: Test with pytest - run: coverage run --omit="*/test*" -m pytest - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@c9e0f0b3cf5f112462339d69850c01735114b9ed - with: - flags: unittests # optional - name: coverage # optional - fail_ci_if_error: true # optional (default = false) - verbose: true # optional (default = false) - - - name: Run E2E tests with behave - run: | - cp test-harness/features/evaluation.feature tests/features/ - behave tests/features/ - - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml deleted file mode 100644 index 9693d8e8..00000000 --- a/.github/workflows/merge.yml +++ /dev/null @@ -1,74 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -name: Merge - -on: - push: - branches: [master, main] - -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - container: ["python:3.8", "python:3.9", "python:3.10"] - container: - image: ${{ matrix.container }} - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Cache virtualenvironment - uses: actions/cache@v3 - with: - path: ~/.venv - key: ${{ hashFiles('requirements.txt', 'requirements-dev.txt') }} - - - name: Upgrade pip - run: pip install --upgrade pip - - - name: Create and activate Virtualenv - run: | - [ ! -d ".venv" ] && python -m venv .venv - . .venv/bin/activate - - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: python - - - name: Install dependencies - run: pip install -r requirements.txt - - - name: Run black formatter check - run: black --check . - - - name: Run flake8 formatter check - run: flake8 . - - - name: Run isort formatter check - run: isort . - - - name: Test with pytest - run: coverage run --omit="*/test*" -m pytest - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@c9e0f0b3cf5f112462339d69850c01735114b9ed - with: - flags: unittests # optional - name: coverage # optional - fail_ci_if_error: true # optional (default = false) - verbose: true # optional (default = false) - - - name: Run E2E tests with behave - run: | - cp test-harness/features/evaluation.feature tests/features/ - behave tests/features/ - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2