-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(actions): add github action workflows (#3)
Signed-off-by: Vincent Koppen <[email protected]> Co-authored-by: Vincent Koppen <[email protected]> Co-authored-by: Thijs Baaijen<[email protected]> Co-authored-by: Jaap Schouten<[email protected]>
- Loading branch information
1 parent
6fae7ec
commit 7e5d6b8
Showing
13 changed files
with
452 additions
and
4 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
allowRemediationCommits: | ||
individual: true | ||
thirdParty: true | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
|
||
version: 2 | ||
updates: | ||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "weekly" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
|
||
name: Build, Test, Sonar and Publish | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
# run pipeline on pull request | ||
pull_request: | ||
# run pipeline on merge queue | ||
merge_group: | ||
# run pipeline from another workflow | ||
workflow_call: | ||
inputs: | ||
create_release: | ||
type: boolean | ||
description: Create a (pre-)release when CI passes | ||
default: false | ||
required: false | ||
# run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
inputs: | ||
create_release: | ||
type: boolean | ||
description: Create a (pre-)release when CI passes | ||
default: false | ||
required: true | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-main | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
|
||
build-python: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
version: ${{ steps.version.outputs.version }} | ||
steps: | ||
|
||
- name: Checkout source code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Python 3.11 | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.11" | ||
|
||
- name: Build | ||
run: | | ||
pip install requests build | ||
python set_pypi_version.py | ||
python -m build --outdir wheelhouse . | ||
- name: Save version | ||
id: version | ||
run: echo "version=$(cat PYPI_VERSION)" >> $GITHUB_OUTPUT | ||
|
||
- name: Store built wheel file | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: power-grid-model-ds | ||
path: wheelhouse/ | ||
|
||
sonar-cloud: | ||
permissions: | ||
contents: write | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- name: Checkout source code | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis | ||
|
||
- name: Setup Python 3.11 | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.11" | ||
|
||
- name: Install in develop mode | ||
run: | | ||
pip install -e .[dev] | ||
- name: Test and Coverage | ||
run: | | ||
coverage run -m pytest | ||
coverage xml | ||
coverage report --fail-under=80 | ||
- name: SonarCloud Scan | ||
if: ${{ (github.event_name == 'push') || (github.event.pull_request.head.repo.owner.login == 'PowerGridModel') }} | ||
uses: SonarSource/sonarqube-scan-action@v4 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | ||
|
||
tests: | ||
needs: build-python | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest, windows-latest] | ||
python: ["3.10", "3.11", "3.12", "3.13"] | ||
fail-fast: false | ||
runs-on: ${{ matrix.os }} | ||
|
||
steps: | ||
- name: Checkout source code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Python ${{ matrix.python }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ matrix.python }} | ||
|
||
- name: Load built wheel file | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: power-grid-model-ds | ||
path: wheelhouse/ | ||
|
||
- name: Install built wheel file | ||
run: pip install power-grid-model-ds[dev]==${{ needs.build-python.outputs.version }} --find-links=wheelhouse | ||
|
||
- name: Unit test and coverage | ||
run: pytest --verbose | ||
|
||
publish: | ||
needs: | ||
- build-python | ||
- tests | ||
- sonar-cloud | ||
permissions: | ||
contents: write | ||
env: | ||
TWINE_USERNAME: ${{ secrets.PYPI_USER }} | ||
TWINE_PASSWORD: ${{ secrets.PYPI_PASS }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Setup Python 3.11 | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.11" | ||
|
||
- name: Load built wheel file | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: power-grid-model-ds | ||
path: wheelhouse/ | ||
|
||
# - name: Upload wheels | ||
# if: (github.event_name == 'push') || ((github.event_name == 'workflow_dispatch') && (github.event.inputs.create_release == 'true')) | ||
# run: | | ||
# pip install twine | ||
# echo "Publish to PyPI..." | ||
# twine upload --verbose wheelhouse/* | ||
|
||
# - name: Release | ||
# if: (github.event_name == 'push') || ((github.event_name == 'workflow_dispatch') && (github.event.inputs.create_release == 'true')) | ||
# uses: softprops/action-gh-release@v2 | ||
# with: | ||
# files: | | ||
# ./wheelhouse/* | ||
# tag_name: v${{ needs.build-python.outputs.version }} | ||
# prerelease: ${{github.ref != 'refs/heads/main'}} | ||
# generate_release_notes: true | ||
# target_commitish: ${{ github.sha }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
|
||
name: Check Blocking Labels | ||
|
||
on: | ||
# run pipeline on pull request | ||
pull_request: | ||
types: | ||
- opened | ||
- synchronize | ||
- labeled | ||
- unlabeled | ||
# run pipeline on merge queue | ||
merge_group: | ||
# run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-blocking-labels | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
check-blocking-labels: | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- name: do-not-merge | ||
if: contains(github.event.pull_request.labels.*.name, 'do-not-merge') | ||
run: | | ||
echo "This pull request should not be merged (do-not-merge)" | ||
exit 1 | ||
- name: merge-target-first | ||
if: contains(github.event.pull_request.labels.*.name, 'merge-target-first') | ||
run: | | ||
echo "The target branch of this PR should be merged first (merge-target-first)" | ||
exit 2 | ||
- name: needs-unit-tests | ||
if: contains(github.event.pull_request.labels.*.name, 'needs-unit-tests') | ||
run: | | ||
echo "This pull request needs (more) unit tests before it may be merged (needs-unit-tests)" | ||
exit 3 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
|
||
name: Check Code Quality | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
# run pipeline on pull request | ||
pull_request: | ||
# run pipeline on merge queue | ||
merge_group: | ||
# run pipeline from another workflow | ||
workflow_call: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-code-quality | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
check-code-quality: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: 3.11 | ||
|
||
- name: Upgrade pip | ||
run: pip install --upgrade pip | ||
|
||
- name: Install dependencies | ||
run: pip install -e .[dev] | ||
|
||
- name: Run pre-commit on all files | ||
run: pre-commit run --all-files |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
name: DCO for merge groups | ||
# Workaround because DCO plugin does not run on merge group. See https://github.com/dcoapp/app/issues/199 | ||
|
||
# Controls when the workflow will run | ||
on: | ||
# run pipeline on merge queue because DCO plugin does not | ||
merge_group: | ||
# Any other signals are handled by the actual DCO plugin | ||
|
||
jobs: | ||
dco-merge-group: | ||
name: DCO | ||
runs-on: ubuntu-latest | ||
if: ${{ github.actor != 'dependabot[bot]' }} | ||
steps: | ||
- name: "Workaround for DCO on merge groups" | ||
run: | | ||
echo "Workaround: signal DCO for merge queues because DCO plugin does not run for merge queues. See https://github.com/dcoapp/app/issues/199" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
name: Nightly build | ||
|
||
# Controls when the workflow will run | ||
on: | ||
workflow_dispatch: | ||
schedule: | ||
- cron: "0 2 * * *" # Based on UTC time | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-nightly | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
main: | ||
uses: "./.github/workflows/build-test-and-sonar.yml" | ||
permissions: | ||
contents: write | ||
with: | ||
create_release: false | ||
|
||
check-code-quality: | ||
uses: "./.github/workflows/check-code-quality.yml" | ||
|
||
reuse-compliance: | ||
uses: "./.github/workflows/reuse-compliance.yml" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# SPDX-FileCopyrightText: Contributors to the Power Grid Model project <[email protected]> | ||
# | ||
# SPDX-License-Identifier: MPL-2.0 | ||
|
||
|
||
name: REUSE Compliance Check | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
# run pipeline on pull request | ||
pull_request: | ||
# run pipeline on merge queue | ||
merge_group: | ||
# run pipeline from another workflow | ||
workflow_call: | ||
# run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-reuse-compliance | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
reuse-compliance-check: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: checkout | ||
uses: actions/checkout@v4 | ||
- name: REUSE Compliance Check | ||
uses: fsfe/reuse-action@v5 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
0.0.1 | ||
0.0 |
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
Oops, something went wrong.