StegSchreck/RatS

View on GitHub
.github/workflows/CI.yml

Summary

Maintainability
Test Coverage
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install poetry
        poetry install --with dev
    - name: Lint with flake8
      run: |
        # stop the build if there are Python syntax errors or undefined names
        poetry run flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --extend-exclude 'venv'
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        poetry run flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --extend-exclude 'venv'
    - name: Test with pytest
      run: |
        poetry run pytest --cov RatS --cov-report term-missing --cov-report xml
    - name: Codacy Coverage Reporter
      if: github.actor != 'dependabot[bot]'
      uses: codacy/codacy-coverage-reporter-action@v1.3.0
      with:
        api-token: ${{ secrets.CODACY_API_TOKEN }}
        project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
        coverage-reports: coverage.xml
        language: python
      env:
        CODACY_API_TOKEN: ${{ secrets.CODACY_API_TOKEN }}
        CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
        CODACY_USERNAME: ${{ github.GITHUB_REPOSITORY_OWNER }}
        CODACY_PROJECT_NAME: RatS

  docker:
    needs: build
    runs-on: ubuntu-latest
    if: github.ref_name == 'master' || github.ref_type == 'tag'

    steps:
    - name: Checkout code
      uses: actions/checkout@v3
    - name: Publish to GitHub Docker Registry
      uses: elgohr/Publish-Docker-Github-Action@master
      with:
        name: stegschreck/rats/rats
        username: ${{ secrets.GITHUB_DOCKER_USERNAME }}
        password: ${{ secrets.GITHUB_TOKEN }}
        registry: docker.pkg.github.com
        tag_names: true

  release:
    needs: build
    runs-on: ubuntu-latest
    if: github.ref_type == 'tag'

    steps:
    - name: Checkout code
      uses: actions/checkout@v3
    - name: Create Release
      uses: softprops/action-gh-release@v0.1.14
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}