Skip to content

Commit

Permalink
Update workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
Shmuma committed Dec 18, 2024
1 parent 459fe6d commit 3eeb642
Show file tree
Hide file tree
Showing 8 changed files with 178 additions and 68 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build-and-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:

cd-job:
name: Continues Delivery
name: Continuous Delivery
runs-on: ubuntu-latest
steps:

Expand All @@ -34,5 +34,5 @@ jobs:
run: >
gh release create ${GITHUB_REF_NAME}
--title ${GITHUB_REF_NAME}
--notes-file doc/changes/changes_${GITHUB_REF_NAME}.md
--notes-file ./doc/changes/changes_${GITHUB_REF_NAME}.md
dist/*
24 changes: 24 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: CD

on:
push:
tags:
- '**'

jobs:

check-tag-version-job:
name: Check Release Tag
uses: ./.github/workflows/check-release-tag.yml

cd-job:
name: Continuous Delivery
uses: ./.github/workflows/build-and-publish.yml
secrets:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}

publish-docs:
needs: [ cd-job ]
name: Publish Documentation
uses: ./.github/workflows/gh-pages.yml

121 changes: 72 additions & 49 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
name: Checks

on: workflow_call
on:
workflow_call:
secrets:
ALTERNATIVE_GITHUB_TOKEN:
required: false

jobs:

version-check-job:
name: Version Check
Version-Check:
name: Version
runs-on: ubuntu-latest

steps:
Expand All @@ -18,11 +22,17 @@ jobs:
uses: exasol/python-toolbox/.github/actions/[email protected]

- name: Check Version(s)
run: poetry run version-check version.py

build-documentation-job:
name: Build Documentation
needs: [version-check-job]
run: poetry run version-check `poetry run python -c "from noxconfig import PROJECT_CONFIG; print(PROJECT_CONFIG.version_file)"`
echo "Please enable the version check by replacing this output with shell command bellow:"
echo ""
echo "poetry run version-check <<VERSION_PY>>"
echo ""
echo "Note: <<VERSION_PY>> needs to point to the version file of the project (version.py)."
exit 1

Documentation:
name: Docs
needs: [ Version-Check ]
runs-on: ubuntu-latest

steps:
Expand All @@ -34,16 +44,16 @@ jobs:

- name: Build Documentation
run: |
poetry run python -m nox -s build-docs
poetry run python -m nox -s docs:build
lint-job:
Lint:
name: Linting (Python-${{ matrix.python-version }})
needs: [version-check-job]
needs: [ Version-Check ]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]
python-version: [ "3.9", "3.10", "3.11", "3.12" ]

steps:
- name: SCM Checkout
Expand All @@ -54,23 +64,24 @@ jobs:
with:
python-version: ${{ matrix.python-version }}

- name: Run Linter
run: poetry run nox -s lint
- name: Run lint
run: poetry run nox -s lint:code

- name: Upload Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4.4.0
with:
name: .lint.txt
name: lint-python${{ matrix.python-version }}
path: .lint.txt
include-hidden-files: true

type-check-job:
Type-Check:
name: Type Checking (Python-${{ matrix.python-version }})
needs: [version-check-job]
needs: [ Version-Check ]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]
python-version: [ "3.9", "3.10", "3.11", "3.12" ]

steps:
- name: SCM Checkout
Expand All @@ -81,53 +92,65 @@ jobs:
with:
python-version: ${{ matrix.python-version }}

- name: Run Type check
run: poetry run nox -s type-check
- name: Run type-check
run: poetry run nox -s lint:typing

tests-job:
name: Tests (Python-${{ matrix.python-version }}, Exasol-${{ matrix.exasol-version}})
needs: [build-documentation-job, lint-job, type-check-job]
Security:
name: Security Checks (Python-${{ matrix.python-version }})
needs: [ Version-Check ]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]
exasol-version: ["7.1.26"]
python-version: [ "3.9", "3.10", "3.11", "3.12" ]

steps:
- name: SCM Checkout
uses: actions/checkout@v4
- name: Free disk space
uses: jlumbroso/free-disk-space@main

- name: Setup Python & Poetry Environment
uses: exasol/python-toolbox/.github/actions/[email protected]
with:
tool-cache: true
large-packages: false
python-version: ${{ matrix.python-version }}

- name: Run security linter
run: poetry run nox -s lint:security

- name: Upload Artifacts
uses: actions/[email protected]
with:
name: security-python${{ matrix.python-version }}
path: .security.json
include-hidden-files: true

Tests:
name: Tests (Python-${{ matrix.python-version }}, Exasol-${{ matrix.exasol-version}})
needs: [ Documentation, Lint, Type-Check, Security ]
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.ALTERNATIVE_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
strategy:
fail-fast: false
matrix:
python-version: [ "3.9", "3.10", "3.11", "3.12" ]
exasol-version: ["7.1.9"]

steps:
- name: SCM Checkout
uses: actions/checkout@v4

- name: Free disk space by removing large directories
run: |
sudo rm -rf /usr/local/graalvm/
sudo rm -rf /usr/local/.ghcup/
sudo rm -rf /usr/local/share/powershell
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /usr/local/lib/node_modules
sudo rm -rf /opt/ghc
- name: Setup Python & Poetry Environment
uses: exasol/python-toolbox/.github/actions/[email protected]
with:
python-version: ${{ matrix.python-version }}

- name: Calculate Test Coverage
run: poetry run nox -s coverage -- -- --db-version ${{ matrix.exasol-version }}
env:
PYTEST_ADDOPTS: >
-W 'ignore::DeprecationWarning:luigi:'
-W 'ignore::DeprecationWarning:pkg_resources:'
-W 'ignore:pkg_resources is deprecated as an API:DeprecationWarning'
-W 'ignore:Deprecated call to \`pkg_resources.declare_namespace:DeprecationWarning'
-W 'ignore::DeprecationWarning:exasol_integration_test_docker_environment:'
- name: Run Tests and Compute Coverage
run: poetry run nox -s test:coverage -- -- --db-version ${{ matrix.exasol-version }}

- name: Upload Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4.4.0
with:
name: .coverage
name: coverage-python${{ matrix.python-version }}
path: .coverage
include-hidden-files: true

12 changes: 7 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@ on:
- "gh-pages/*"
- "main"
- "master"
pull_request:
types: [opened, reopened]
schedule:
# “At 00:00 on every 7th day-of-month from 1 through 31.” (https://crontab.guru)
- cron: "0 0 1/7 * *"

jobs:

ci-job:
name: Checks
uses: ./.github/workflows/checks.yml
CI:
uses: ./.github/workflows/merge-gate.yml
secrets: inherit

metrics:
needs: [ ci-job ]
Metrics:
needs: [ CI ]
uses: ./.github/workflows/report.yml
10 changes: 7 additions & 3 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Publish Documentation

on: workflow_call
on:
workflow_call:
workflow_dispatch:

jobs:

Expand All @@ -10,16 +12,18 @@ jobs:
steps:
- name: SCM Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Python & Poetry Environment
uses: exasol/python-toolbox/.github/actions/[email protected]

- name: Build Documentation
run: |
poetry run python -m nox -s build-docs
poetry run nox -s docs:multiversion
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4.4.1
uses: JamesIves/github-pages-deploy-action@v4.6.0
with:
branch: gh-pages
folder: .html-documentation
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/merge-gate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Merge-Gate

on:
workflow_call:
secrets:
ALTERNATIVE_GITHUB_TOKEN:
required: false

jobs:

fast-checks:
name: Fast
uses: ./.github/workflows/checks.yml

slow-checks:
name: Slow
runs-on: ubuntu-latest

# Even though the environment "manual-approval" will be created automatically,
# it still needs to be configured to require interactive review.
# See project settings on GitHub (Settings / Environments / manual-approval).
environment: manual-approval

# Replace the steps below with the required actions
# and/or add additional jobs if required
# Note:
# If you add additional jobs, make sure they are added as a requirement
# to the approve-merge job's input requirements (needs).
steps:
- name: Tests
run: |
echo "Slow tests ran successfully"
# This job ensures inputs have been executed successfully.
approve-merge:
name: Allow Merge
runs-on: ubuntu-latest
# If you need additional jobs to be part of the merge gate, add them below
needs: [ fast-checks, slow-checks ]

# Each job requires a step, so we added this dummy step.
steps:
- name: Approve
run: |
echo "Merge Approved"
12 changes: 12 additions & 0 deletions .github/workflows/pr-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ on:

jobs:

# This job can be removed if certain preconditions are met. See
# https://exasol.github.io/python-toolbox/user_guide/workflows.html#pr-merge-workflow

ci-job:
name: Checks
uses: ./.github/workflows/checks.yml
secrets: inherit

publish-docs:
name: Publish Documentation
uses: ./.github/workflows/gh-pages.yml

metrics:
needs: [ ci-job ]
uses: ./.github/workflows/report.yml
Loading

0 comments on commit 3eeb642

Please sign in to comment.