name: Lint, Test, Tag & Publish on: push: branches: - master - dev paths-ignore: - "**/.gitignore" - "**/.vscode/**" - "**/README.md" - "**/CHANGELOG.md" pull_request: branches: - dev 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.13' - run: python -m pip install --upgrade pip - run: | python -m pip install -r requirements.txt python -m pip install -r requirements.pg.txt python -m pip install -r requirements.auth0.txt - run: python test.py tag_and_publish: runs-on: ubuntu-latest if: (github.ref_name == 'master' || github.ref_name == 'dev') && github.event_name == 'push' needs: test permissions: id-token: write # IMPORTANT: this permission is mandatory for trusted publishing contents: write # for the tags steps: - uses: actions/checkout@v4 with: fetch-tags: true ref: ${{ github.ref_name }} fetch-depth: 0 - name: setup git run: | git config --local user.email "15138480+creyD@users.noreply.github.com" git config --local user.name "creyD" - name: set version format id: version_format run: | if [[ ${{ github.ref_name }} == 'master' ]]; then echo "version_format=\${major}.\${minor}.\${patch}" >> $GITHUB_OUTPUT else echo "version_format=\${major}.\${minor}.\${patch}rc\${increment}" >> $GITHUB_OUTPUT fi - name: Git Version uses: PaulHatch/semantic-version@v5.4.0 id: git_version with: tag_prefix: "" major_pattern: "breaking:" minor_pattern: "feat:" enable_prerelease_mode: false version_format: ${{ steps.version_format.outputs.version_format }} - name: Create & Push Tag run: | git tag ${{ steps.git_version.outputs.version }} git push origin ${{ steps.git_version.outputs.version }} - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.13' - 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 }}