Skip to main content
Glama
docker-publish.yml3.7 kB
name: Docker Publish on: push: tags: - "v*.*.*" workflow_dispatch: inputs: tag: description: "Docker image tag" required: false default: "latest" env: DOCKER_IMAGE: digidefiance/mcp-screenshot GHCR_IMAGE: ghcr.io/digital-defiance/mcp-screenshot PLATFORMS: linux/amd64,linux/arm64 jobs: build-and-test: name: Build and Test Docker Image runs-on: ubuntu-latest permissions: contents: read security-events: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build Docker image (test) uses: docker/build-push-action@v5 with: context: . file: Dockerfile push: false load: true tags: ${{ env.DOCKER_IMAGE }}:test cache-from: type=gha cache-to: type=gha,mode=max - name: Test Docker image run: | docker run --rm --entrypoint node ${{ env.DOCKER_IMAGE }}:test --version echo "✓ Basic Docker image tests passed" - name: Scan image for vulnerabilities uses: aquasecurity/trivy-action@master with: image-ref: ${{ env.DOCKER_IMAGE }}:test format: "sarif" output: "trivy-results.sarif" severity: "CRITICAL,HIGH" - name: Upload Trivy results to GitHub Security uses: github/codeql-action/upload-sarif@v3 if: always() with: sarif_file: "trivy-results.sarif" publish: name: Publish Docker Image needs: build-and-test runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') permissions: contents: read packages: write steps: - name: Checkout code 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_TOKEN }} - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: images: | ${{ env.DOCKER_IMAGE }} ${{ env.GHCR_IMAGE }} tags: | type=ref,event=branch type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=semver,pattern={{major}} type=raw,value=latest,enable={{is_default_branch}} - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . file: Dockerfile platforms: ${{ env.PLATFORMS }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max provenance: true sbom: true - name: Update Docker Hub description uses: peter-evans/dockerhub-description@v4 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} repository: ${{ env.DOCKER_IMAGE }} readme-filepath: ./README.md short-description: "MCP server providing screenshot capture capabilities for AI agents"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Digital-Defiance/mcp-screenshot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server