diff --git a/.github/workflows/ci-branch-main.yml b/.github/workflows/ci-branch-main.yml new file mode 100644 index 0000000..ce2f6a3 --- /dev/null +++ b/.github/workflows/ci-branch-main.yml @@ -0,0 +1,77 @@ +name: CI - Merge to main +on: + workflow_dispatch: + push: + branches: + - "main" + paths-ignore: + - 'README.md' + - 'LICENSE.md' + - '.gitignore' + - 'renovate.json' + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install dependencies + run: pip install -r requirements.txt && pip install -r requirements-dev.txt + - name: Lint + run: pylint --recursive=yes . + + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ '3.10' ] + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: pip install -r requirements.txt && pip install -r requirements-dev.txt + - name: Run test suite + run: coverage run -m py.test -v + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3 + + build: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: "3.10" + # - name: Install dependencies + # run: pip install -r requirements.txt && pip install -r requirements-dev.txt + - name: Install build dependencies + run: pip install setuptools wheel + - name: Build wheel file + run: python setup.py bdist_wheel + - id: skip_check + uses: actions/upload-artifact@v3 + with: + name: whl + path: dist/ + + publish: + needs: build + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + runs-on: ubuntu-latest + steps: + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci-development.yml similarity index 84% rename from .github/workflows/ci.yml rename to .github/workflows/ci-development.yml index bfad360..f31d988 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci-development.yml @@ -1,13 +1,14 @@ -name: CI +name: CI - Development on: workflow_dispatch: push: + branches: + - '!main' paths-ignore: - 'README.md' - 'LICENSE.md' - '.gitignore' - 'renovate.json' - pull_request: jobs: skip_duplicate: @@ -92,12 +93,10 @@ jobs: steps: - name: Check out repository code uses: actions/checkout@v3 - - name: Setup Python ${{ matrix.python-version }} + - name: Setup Python 3.10 uses: actions/setup-python@v4 with: python-version: "3.10" - # - name: Install dependencies - # run: pip install -r requirements.txt && pip install -r requirements-dev.txt - name: Install build dependencies run: pip install setuptools wheel - name: Build wheel file @@ -107,15 +106,3 @@ jobs: with: name: whl path: dist/ - - publish: - name: Publish - needs: build - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} - runs-on: ubuntu-latest - steps: - - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/.github/workflows/ci-pull-request.yml b/.github/workflows/ci-pull-request.yml new file mode 100644 index 0000000..7de9d84 --- /dev/null +++ b/.github/workflows/ci-pull-request.yml @@ -0,0 +1,65 @@ +name: CI - Pull request +on: + pull_request: + paths-ignore: + - 'README.md' + - 'LICENSE.md' + - '.gitignore' + - 'renovate.json' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + strategy: + fail-fast: false + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: python + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install dependencies + run: pip install -r requirements.txt && pip install -r requirements-dev.txt + - name: Lint + run: pylint --recursive=yes . + + test: + name: Run unit tests + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ '3.10' ] + steps: + - name: Check out repository code + uses: actions/checkout@v3 + - name: Setup Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: pip install -r requirements.txt && pip install -r requirements-dev.txt + - name: Run test suite + run: coverage run -m py.test -v + - name: Upload Coverage to Codecov + uses: codecov/codecov-action@v3