-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
293 changed files
with
41,232 additions
and
0 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 @@ | ||
PYTHONPATH=rocrate_validator |
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,192 @@ | ||
# This workflow is triggered on push to tags and runs the following steps: | ||
# 1. Check and Build Distribution | ||
# 2. Publish to TestPyPI | ||
# 3. Publish to PyPI if the previous step is successful | ||
# 4. Sign Distribution with Sigstore | ||
# 5. Create GitHub Release with the signed distribution | ||
name: 📦 CI Pipeline 2 -- Release | ||
|
||
# Controls when the action will run. Triggers the workflow on push or pull request | ||
# events but only for the master branch | ||
on: | ||
push: | ||
tags: | ||
- "*.*.*" | ||
paths: | ||
- "**" | ||
- "!docs/**" | ||
- "!examples/**" | ||
|
||
env: | ||
TERM: xterm | ||
VENV_PATH: .venv | ||
|
||
jobs: | ||
# Wait for the testing pipeline to finish | ||
wait-for-testing: | ||
name: 🕒 Wait for Testing Pipeline | ||
runs-on: ubuntu-latest | ||
if: ${{ github.repository == 'crs4/rocrate-validator' }} | ||
steps: | ||
- name: Wait for testing pipeline to succeed | ||
uses: fountainhead/[email protected] | ||
id: wait-for-testing | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
checkName: ⌛ Run tests | ||
ref: ${{ github.sha }} | ||
|
||
- name: Do something with a passing build | ||
if: steps.wait-for-testing.outputs.conclusion == 'success' | ||
run: echo "Testing pipeline passed" && exit 0 | ||
|
||
- name: Do something with a failing build | ||
if: steps.wait-for-testing.outputs.conclusion == 'failure' | ||
run: echo "Testing pipeline failed" && exit 1 | ||
# Check and Build Distribution | ||
build: | ||
name: 🏗 Check and Build Distribution | ||
runs-on: ubuntu-latest | ||
needs: wait-for-testing | ||
if: ${{ github.repository == 'crs4/rocrate-validator' }} | ||
steps: | ||
# Access the tag from the first workflow's outputs | ||
- name: ⬇️ Checkout code | ||
uses: actions/checkout@v4 | ||
- name: 🐍 Set up Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.x" | ||
- name: 🚧 Set up Python Environment | ||
run: | | ||
pip install --upgrade pip | ||
pip install poetry | ||
- name: 📦 Install Package Dependencies | ||
run: poetry install --no-interaction --no-ansi | ||
- name: ✅ Check version | ||
run: | | ||
if [ "${{ github.event_name }}" == "push" ] && [ "${{ github.ref_type }}" == "tag" ]; then | ||
declared_version=$(poetry version -s) | ||
echo "Checking tag '${{ github.ref }}' against package version $declared_version" | ||
if [ "${{ github.ref }}" != "refs/tags/$declared_version" ]; then | ||
echo "Tag '${{ github.ref }}' does not match the declared package version '$declared_version'" | ||
exit 1 | ||
else | ||
echo "Tag '${{ github.ref }}' matches the declared package version '$declared_version'" | ||
fi | ||
fi | ||
- name: 🏗️ Build a binary wheel and a source tarball | ||
run: poetry build | ||
- name: 📦 Store the distribution packages | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: python-package-distributions | ||
path: | | ||
dist/*.whl | ||
dist/*.tar.gz | ||
# Publish to TestPyPI | ||
publish-to-testpypi: | ||
name: 📦 Publish to TestPyPI | ||
runs-on: ubuntu-latest | ||
needs: build | ||
environment: | ||
name: testpypi | ||
url: https://test.pypi.org/p/test-py-pipelines | ||
permissions: | ||
id-token: write # IMPORTANT: mandatory for trusted publishing | ||
steps: | ||
- name: ⬇️ Download all the distribution packages | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: python-package-distributions | ||
path: dist/ | ||
- name: 📦 Publish distribution to TestPyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
repository-url: https://test.pypi.org/legacy/ | ||
|
||
# Publish to PyPI | ||
publish-to-pypi: | ||
name: 📦 Publish to PyPI | ||
runs-on: ubuntu-latest | ||
needs: [build, publish-to-testpypi] | ||
environment: | ||
name: pypi | ||
url: https://pypi.org/p/test-py-pipelines | ||
permissions: | ||
id-token: write # IMPORTANT: mandatory for trusted publishing | ||
steps: | ||
- name: ⬇️ Download all the dists | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: python-package-distributions | ||
path: dist/ | ||
- name: 📦 Publish distribution to PyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
|
||
# Sign and Upload to GitHub Release | ||
sign-packages: | ||
name: 🖊️ Sign the Python distribution with Sigstore | ||
needs: publish-to-pypi | ||
runs-on: ubuntu-latest | ||
|
||
permissions: | ||
contents: write # IMPORTANT: mandatory for making GitHub Releases | ||
id-token: write # IMPORTANT: mandatory for sigstore | ||
|
||
steps: | ||
- name: ⬇️ Download all the distribution packages | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: python-package-distributions | ||
path: dist/ | ||
- name: 🖊️ Sign the dists with Sigstore | ||
uses: sigstore/[email protected] | ||
with: | ||
inputs: >- | ||
./dist/*.tar.gz | ||
./dist/*.whl | ||
- name: 📦 Store the signed distribution packages | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: python-package-signatures | ||
path: dist/*.sigstore | ||
|
||
# Create GitHub Release | ||
github_release: | ||
name: 🎉 Release on GitHub | ||
needs: sign-packages | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write # IMPORTANT: mandatory for making GitHub Releases | ||
id-token: write # IMPORTANT: mandatory for sigstore | ||
steps: | ||
- name: ⬇️ Download all the distribution packages | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: python-package-distributions | ||
path: dist/ | ||
- name: ⬇️ Download all the distribution signatures | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: python-package-signatures | ||
path: dist/ | ||
- name: 🎉 Create GitHub Release | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
run: >- | ||
gh release create | ||
'${{ github.ref_name }}' | ||
--repo '${{ github.repository }}' | ||
--generate-notes | ||
- name: 📦 Upload artifacts to GitHub Release | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
# Upload to GitHub Release using the `gh` CLI. | ||
# `dist/` contains the built packages, and the | ||
# sigstore-produced signatures and certificates. | ||
run: >- | ||
gh release upload | ||
'${{ github.ref_name }}' dist/** | ||
--repo '${{ github.repository }}' |
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,67 @@ | ||
name: 🧪 CI Pipeline 1 -- Testing | ||
|
||
# Controls when the action will run. Triggers the workflow on push or pull request | ||
# events but only for the master branch | ||
on: | ||
push: | ||
branches: | ||
- "**" | ||
tags: | ||
- "*.*.*" | ||
paths: | ||
- "**" | ||
- "!docs/**" | ||
- "!examples/**" | ||
pull_request: | ||
paths: | ||
- "**" | ||
- "!docs/**" | ||
- "!examples/**" | ||
|
||
env: | ||
TERM: xterm | ||
VENV_PATH: .venv | ||
PYTHON_VERSION: "3.11" | ||
|
||
jobs: | ||
# Verifies pep8, pyflakes and circular complexity | ||
flake8: | ||
name: 🚨 Lint Python Code | ||
runs-on: ubuntu-latest | ||
steps: | ||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | ||
- name: ⬇️ Checkout code | ||
uses: actions/checkout@v4 | ||
- name: 🐍 Set up Python v${{ env.PYTHON_VERSION }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: 🔽 Install flake8 | ||
run: pip install flake8 | ||
- name: ⌛ Run checks | ||
run: flake8 -v rocrate_validator tests | ||
|
||
# Runs the tests | ||
test: | ||
name: ⌛ Run tests | ||
runs-on: ubuntu-latest | ||
needs: [flake8] | ||
steps: | ||
- name: ⬇️ Checkout | ||
uses: actions/checkout@v4 | ||
- name: 🐍 Set up Python v${{ env.PYTHON_VERSION }} | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: ${{ env.PYTHON_VERSION }} | ||
- name: 🔄 Upgrade pip | ||
run: pip install --upgrade pip | ||
- name: 🐍 Initialise a virtual env | ||
run: python -m venv ${VENV_PATH} | ||
- name: 🐍 Enable virtual env | ||
run: source ${VENV_PATH}/bin/activate | ||
- name: 🔽 Install Poetry | ||
run: pip install poetry | ||
- name: 🔽 Install dependencies | ||
run: poetry install --no-interaction --no-ansi | ||
- name: ⌛ Run tests | ||
run: poetry run pytest |
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,12 @@ | ||
.DS_Store | ||
**/__pycache__ | ||
**/*.pyc | ||
**/.pytest_cache | ||
|
||
# ignore virtualenv | ||
.venv | ||
|
||
# ignore coverage files | ||
**/.coverage | ||
**/.coverage.* | ||
**/.report |
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,81 @@ | ||
# Copyright (c) 2024 CRS4 | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
stages: | ||
- install | ||
- test | ||
- build | ||
|
||
variables: | ||
IMAGE: python:3.12-slim # Define the desired Docker image for the runner | ||
VENV_PATH: .venv # Define the virtual environment path | ||
POETRY_VERSION: 1.8.3 # Define the desired Poetry version | ||
CACHE_KEY: $CI_COMMIT_REF_NAME # Define the cache key | ||
RUNNER_TAG: rvdev # Define the desired runner tag | ||
|
||
# Install dependencies | ||
install_dependencies: | ||
stage: install | ||
before_script: | ||
- pip install --upgrade pip | ||
- python -m venv ${VENV_PATH} | ||
- source ${VENV_PATH}/bin/activate | ||
- pip install poetry==${POETRY_VERSION} | ||
script: | ||
- poetry config virtualenvs.in-project true | ||
- poetry install --no-interaction --no-ansi | ||
cache: | ||
key: ${CACHE_KEY} | ||
paths: | ||
- ${VENV_PATH} | ||
tags: | ||
- ${RUNNER_TAG} | ||
|
||
# Run tests | ||
test: | ||
stage: test | ||
before_script: | ||
- source ${VENV_PATH}/bin/activate | ||
script: | ||
- poetry run pytest | ||
dependencies: | ||
- install_dependencies | ||
coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+)%/' | ||
cache: | ||
key: ${CACHE_KEY} | ||
paths: | ||
- ${VENV_PATH} | ||
tags: | ||
- ${RUNNER_TAG} | ||
|
||
|
||
# Build the application | ||
build: | ||
stage: build | ||
before_script: | ||
- source ${VENV_PATH}/bin/activate | ||
script: | ||
- poetry build | ||
dependencies: | ||
- test | ||
artifacts: | ||
paths: | ||
- dist/ | ||
expire_in: 30 minutes | ||
cache: | ||
key: ${CACHE_KEY} | ||
paths: | ||
- ${VENV_PATH} | ||
tags: | ||
- ${RUNNER_TAG} |
Oops, something went wrong.