diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 259cf5d..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: docker - -on: - release: - types: [ published ] - workflow_dispatch: - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - -jobs: - build-and-push-image: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Log in to the Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=sha - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.external - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/generate-release.yml b/.github/workflows/generate-release.yml new file mode 100644 index 0000000..524b95c --- /dev/null +++ b/.github/workflows/generate-release.yml @@ -0,0 +1,75 @@ +name: generate-release + +on: + release: + types: [ published ] + workflow_dispatch: + +env: + REGISTRY: docker.io + IMAGE_NAME: ${{ github.repository }} + platforms: linux/amd64,linux/arm64 + DEFAULT_TYPE: "external" + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + + strategy: + matrix: + type: [ local, external ] + + permissions: + contents: read + packages: write + + outputs: + version: ${{ steps.version.outputs.version }} + + steps: + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=semver,pattern={{version}},enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=semver,pattern={{version}}-${{ matrix.type }} + type=semver,pattern={{major}}.{{minor}},enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=semver,pattern={{major}}.{{minor}}-${{ matrix.type }} + type=semver,pattern={{major}},enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=semver,pattern={{major}}-${{ matrix.type }} + type=raw,value=latest,enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=sha + flavor: | + latest=false + + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.${{ matrix.type }} + platforms: ${{ env.platforms }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Version output + id: version + run: echo "version=${{ steps.meta.outputs.version }}" >> "$GITHUB_OUTPUT" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fc10e87..7d4425f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,13 +17,13 @@ repos: hooks: - id: black name: Formatting (black) - entry: black + entry: make format language: system types: [python] stages: [commit] - id: ruff name: Linter (ruff) - entry: ruff + entry: make lint language: system types: [python] stages: [commit] @@ -40,4 +40,4 @@ repos: pass_filenames: false language: system types: [python] - stages: [push] \ No newline at end of file + stages: [push] diff --git a/Makefile b/Makefile index 7b9a846..42d0f7c 100644 --- a/Makefile +++ b/Makefile @@ -12,20 +12,23 @@ test-coverage: PYTHONPATH=. poetry run pytest tests --cov private_gpt --cov-report term --cov-report=html --cov-report xml --junit-xml=tests-results.xml black: - poetry run black . --check + PYTHONPATH=. poetry run black . --check ruff: - poetry run ruff check private_gpt tests + PYTHONPATH=. poetry run ruff check private_gpt tests format: - poetry run black . - poetry run ruff check private_gpt tests --fix + PYTHONPATH=. poetry run black . + +lint: + PYTHONPATH=. poetry run ruff check private_gpt tests --fix mypy: - poetry run mypy private_gpt + PYTHONPATH=. poetry run mypy private_gpt check: make format + make lint make mypy ########################################################################################################################