Skip to content

chore: format .nix files #236

chore: format .nix files

chore: format .nix files #236

Workflow file for this run

name: Lint & release project
on:
push:
paths:
- "pyproject.toml"
- "poetry.lock"
- "tgpy/**"
- ".github/workflows/main.yml"
- ".github/workflows/docker.yml"
pull_request:
paths:
- "pyproject.toml"
- "poetry.lock"
- "tgpy/**"
- ".github/workflows/main.yml"
- ".github/workflows/docker.yml"
workflow_dispatch: {}
jobs:
lint:
runs-on: ubuntu-latest
name: Lint
steps:
- uses: actions/checkout@v4
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- uses: nicknovitski/nix-develop@9be7cfb4b10451d3390a75dc18ad0465bed4932a
- name: Load dependency cache
id: load-cache
uses: actions/cache@v4
with:
path: .venv
key: app-${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: |
poetry config virtualenvs.in-project true
poetry install
if: steps.load-cache.outputs.cache-hit != 'true'
- name: Check code style
if: github.event_name != 'push'
run: |
poetry run black --check --diff .
poetry run isort --check --diff .
- name: Reformat code
if: github.event_name == 'push'
run: |
poetry run black .
poetry run isort .
- name: Commit chanes
if: github.event_name == 'push'
shell: bash
run: |
if [ ! -n "$(git status --porcelain)" ]; then
exit
fi
git add -A
git config user.name "github-actions"
git config user.email "[email protected]"
git commit -m "style: reformat [skip ci]"
git push
release:
name: Release
needs: lint
concurrency: release
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/magic-nix-cache-action@main
- uses: nicknovitski/nix-develop@9be7cfb4b10451d3390a75dc18ad0465bed4932a
- name: Load dependency cache
id: load-cache
uses: actions/cache@v4
with:
path: .venv
key: app-${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
run: |
poetry config virtualenvs.in-project true
poetry install --with release
if: steps.load-cache.outputs.cache-hit != 'true'
- name: Create a release
id: release-version
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
source .venv/bin/activate
git config --global user.name "github-actions"
git config --global user.email "[email protected]"
python -m semantic_release version
echo "version-tag=$(python -m semantic_release version --print-tag)" >> $GITHUB_OUTPUT
- name: Publish package distributions to GitHub Releases
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TAG: ${{ steps.release-version.outputs.version-tag }}
run: |
source .venv/bin/activate
python -m semantic_release -v publish --tag $GH_TAG
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Save release commit hash
id: release-commit-hash
run: echo "release-commit-hash=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT
outputs:
release-commit-hash: ${{ steps.release-commit-hash.outputs.release-commit-hash }}
publish-to-pypi:
name: Publish Python distribution to PyPI
needs: release
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/tgpy
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_TOKEN }}
build-dev-docker:
needs: lint
name: Build dev docker image
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref != 'refs/heads/master'
uses: ./.github/workflows/docker.yml
secrets: inherit
build-release-docker:
name: Build release docker image
needs: release
if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/master'
uses: ./.github/workflows/docker.yml
with:
commit-hash: ${{ needs.release.outputs.release-commit-hash }}
secrets: inherit