name: Lint, Test, Tag & Publish on: push: branches: - master paths-ignore: - "**/.github/**" - "**/.gitignore" - "**/.vscode/**" - "**/README.md" - "**/CHANGELOG.md" workflow_dispatch: jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: psf/black@stable with: options: "-l 100 --exclude '/.venv/|/__init__.py'" - uses: creyD/autoflake_action@master with: no_commit: True options: --in-place --remove-all-unused-imports -r --exclude **/__init__.py,**/db/models.py, - uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Adjusted files for isort & autopep test: runs-on: ubuntu-latest needs: lint steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.12' - run: python -m pip install --upgrade pip - run: python -m pip install -r requirements.txt - run: python test.py tag_and_publish: runs-on: ubuntu-latest needs: test permissions: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing steps: - uses: actions/checkout@v4 with: fetch-tags: true ref: ${{ github.ref }} fetch-depth: 0 - name: setup git run: | git config --local user.email "actions@github.com" git config --local user.name "GitHub Action" - name: Git Version uses: codacy/git-version@2.8.0 id: git_version with: minor-identifier: "feat:" major-identifier: "breaking:" - name: Create Tag run: git tag ${{ steps.git_version.outputs.version }} - name: Push tag run: git push origin ${{ steps.git_version.outputs.version }} - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.build.txt python setup.py sdist bdist_wheel - name: Build and publish uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }}