diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/on_demand.yml | 89 | ||||
-rw-r--r-- | .github/workflows/pr-management.yml | 104 | ||||
-rw-r--r-- | .github/workflows/release.yml | 136 |
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 }} |