summaryrefslogtreecommitdiffstats
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/on_demand.yml89
-rw-r--r--.github/workflows/pr-management.yml104
-rw-r--r--.github/workflows/release.yml136
3 files changed, 329 insertions, 0 deletions
diff --git a/.github/workflows/on_demand.yml b/.github/workflows/on_demand.yml
new file mode 100644
index 0000000..1e41be2
--- /dev/null
+++ b/.github/workflows/on_demand.yml
@@ -0,0 +1,89 @@
+---
+name: "Build a docker image on-demand"
+on:
+ workflow_dispatch:
+ inputs:
+ tag:
+ description: "Tag to use during the build (default: dev)"
+ required: true
+ default: 'dev'
+
+jobs:
+ docker:
+ name: Docker Image Build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Docker meta for TAG
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images: |
+ ${{ secrets.DOCKER_IMAGE }}
+ ghcr.io/${{ secrets.DOCKER_IMAGE }}
+ tags: |
+ type=raw,value=${{ inputs.tag }}
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ file: Dockerfile
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
+
+ docker_in_docker:
+ name: Docker Image Build with Docker support
+ runs-on: ubuntu-latest
+ needs: [docker]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Docker meta for TAG
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images: |
+ ${{ secrets.DOCKER_IMAGE }}
+ ghcr.io/${{ secrets.DOCKER_IMAGE }}
+ tags: |
+ type=raw,value=${{ inputs.tag }}-dind
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ file: Dockerfile.docker
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
diff --git a/.github/workflows/pr-management.yml b/.github/workflows/pr-management.yml
new file mode 100644
index 0000000..508a870
--- /dev/null
+++ b/.github/workflows/pr-management.yml
@@ -0,0 +1,104 @@
+---
+name: code-testing
+on:
+ push:
+ branches:
+ - main
+ pull_request_target:
+ types: [assigned, opened, synchronize, reopened]
+
+jobs:
+ compiling:
+ name: Run installation process and code compilation supported Python versions
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.8", "3.9", "3.10"]
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: install requirements
+ run: |
+ pip install .
+
+ - name: install dev requirements
+ run: pip install .[dev]
+
+ - name: validate the syntax of python scripts
+ run: |
+ python -m py_compile $(git ls-files '*.py')
+
+ linting:
+ name: Run flake8, pylint for supported Python versions
+ runs-on: ubuntu-latest
+ needs: [compiling]
+
+ strategy:
+ matrix:
+ python: ["3.8", "3.9", "3.10"]
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Setup Python
+ uses: actions/setup-python@v3
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install dependencies
+ run: pip install tox tox-gh-actions
+
+ - name: "Run tox for ${{ matrix.python }}"
+ run: tox -e lint
+
+ typing:
+ name: Run mypy for supported Python versions
+ runs-on: ubuntu-latest
+ needs: [compiling]
+
+ strategy:
+ matrix:
+ python: ["3.8", "3.9", "3.10"]
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Setup Python
+ uses: actions/setup-python@v3
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install dependencies
+ run: pip install tox tox-gh-actions
+
+ - name: "Run tox for ${{ matrix.python }}"
+ run: tox -e type
+
+ pytest:
+ name: Run pytest validation
+ runs-on: ubuntu-latest
+ needs: [linting, typing]
+
+ strategy:
+ matrix:
+ python: ["3.8", "3.9", "3.10"]
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Setup Python
+ uses: actions/setup-python@v3
+ with:
+ python-version: ${{ matrix.python }}
+
+ - name: Install dependencies
+ run: pip install tox tox-gh-actions
+
+ - name: "Run tox for ${{ matrix.python }}"
+ run: tox -e testenv
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..70cce9c
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,136 @@
+---
+name: "Tag & Release management"
+on:
+ push:
+ # Sequence of patterns matched against refs/tags
+ tags:
+ - 'v[0-9]+.[0-9]+.[0-9]+' # Push events to matching v*, i.e. v1.0, v20.15.10
+jobs:
+ # release:
+ # name: Create Github Release
+ # runs-on: ubuntu-latest
+ # steps:
+ # - name: Checkout code
+ # uses: actions/checkout@v3
+ # with:
+ # fetch-depth: 0
+
+ # - name: Generate Changelog
+ # run: |
+ # sudo apt update && sudo apt install zsh
+ # export TAG_CURRENT=$(git describe --abbrev=0 --tags)
+ # export TAG_PREVIOUS=$(git describe --abbrev=0 --tags `git rev-list --tags --skip=1 --max-count=1`)
+ # echo "Previous tag is: ${TAG_PREVIOUS}"
+ # echo "Current tag is: ${TAG_CURRENT}"
+ # zsh .github/changelog.sh ${TAG_CURRENT} ${TAG_PREVIOUS} md > CHANGELOG.md
+ # cat CHANGELOG.md
+
+ # - name: Release on Github
+ # uses: softprops/action-gh-release@v1
+ # with:
+ # draft: false
+ # body_path: CHANGELOG.md
+
+ pypi:
+ name: Publish version to Pypi servers
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install setuptools wheel build
+
+ - name: Build package
+ run: |
+ python -m build
+
+ - name: Publish package to TestPyPI
+ uses: pypa/gh-action-pypi-publish@release/v1
+ with:
+ user: __token__
+ password: ${{ secrets.PYPI_API_TOKEN }}
+
+ docker:
+ name: Docker Image Build
+ runs-on: ubuntu-latest
+ needs: [pypi]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Docker meta for TAG
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images:
+ ${{ secrets.DOCKER_IMAGE }}
+ ghcr.io/${{ secrets.DOCKER_IMAGE }}
+ tags: |
+ type=semver,pattern={{raw}}
+ type=raw,value=latest
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ file: Dockerfile
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
+
+ docker_in_docker:
+ name: Docker Image Build with Docker support
+ runs-on: ubuntu-latest
+ needs: [docker]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Docker meta for TAG
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images:
+ ${{ secrets.DOCKER_IMAGE }}
+ ghcr.io/${{ secrets.DOCKER_IMAGE }}
+ tags: |
+ type=semver,pattern={{raw}}-dind
+ type=raw,value=latest-dind
+
+ - name: Login to DockerHub
+ uses: docker/login-action@v2
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Login to GitHub Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ghcr.io
+ username: ${{ github.repository_owner }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Build and push
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ file: Dockerfile.docker
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}