name: Build and Publish Docker Image and Pypi package
on:
push:
branches:
- master
workflow_dispatch:
jobs:
# First job to request approval
request-approval:
runs-on: ubuntu-latest
steps:
- name: Request approval
uses: trstringer/manual-approval@v1
with:
secret: ${{ secrets.GITHUB_TOKEN }}
approvers: DenisStefanAndrei,alinmanolache,AlexCornigeanu,marian-craciunescu,marius-avram,mateibm,AndreiTudose95,smmihai,RazvanKokovicsSiscale,hutanmihai,aburnaz
minimum-approvals: 1
issue-title: "Approval needed for Docker image push"
issue-body: "Please approve this workflow to push a new Docker image to DockerHub"
exclude-workflow-initiator-as-approver: false
timeout-minutes: 120
build-pypi-package:
runs-on: ubuntu-latest
needs: request-approval # This ensures the approval job completes first
environment: pypi-publish
permissions:
contents: read
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install uv
run: |
python -m pip install --upgrade pip
pip install uv
- name: Install dependencies from pyproject.toml
run: |
uv pip install --system .
- name: Build package
run: uv build
- name: Verify package
run: |
ls -la dist/
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
# Second job to build and push Docker image
docker-build-and-push:
needs: request-approval # This ensures the approval job completes first
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: devsiscale
password: ${{ secrets.DOCKERHUB_DEVSISCALE_PAT }}
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: arcanna/arcanna-mcp-server:latest