Skip to content

AIOS v25.1 Autonomous Intelligence Orchestrator #2213

AIOS v25.1 Autonomous Intelligence Orchestrator

AIOS v25.1 Autonomous Intelligence Orchestrator #2213

Workflow file for this run

name: Docker Build & Push
on:
push:
branches: [main]
tags: ['v*']
pull_request:
branches: [main]
paths:
- 'Dockerfile'
- 'docker-compose*.yml'
- 'deploy/production/docker-compose.prod.yml'
- 'deploy/monitoring/**'
- 'requirements.txt'
workflow_dispatch:
permissions:
contents: read
packages: write
security-events: write
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build-and-push:
name: Build & Push Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- name: Set up QEMU
uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
- name: Login to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6
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,prefix=
type=raw,value=latest,enable={{is_default_branch}}
- name: Build and push
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
trivy-scan:
name: Trivy Vulnerability Scan
runs-on: ubuntu-latest
needs: build-and-push
if: github.event_name != 'pull_request'
steps:
- name: Checkout security policy
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- name: Lowercase image name
id: img
run: echo "name=$(echo '${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}' | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_OUTPUT"
- name: Run pinned Trivy scanner
env:
SCAN_IMAGE: ${{ steps.img.outputs.name }}:latest
run: |
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:/workspace" -w /workspace \
aquasec/trivy:0.69.3@sha256:bcc376de8d77cfe086a917230e818dc9f8528e3c852f7b1aff648949b6258d1c \
image --scanners vuln --severity HIGH,CRITICAL --ignore-unfixed \
--ignorefile /workspace/.trivyignore --exit-code 1 \
--format sarif --output /workspace/trivy-results.sarif "$SCAN_IMAGE"
- name: Upload to GitHub Security
uses: github/codeql-action/upload-sarif@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v3
if: always()
with:
sarif_file: 'trivy-results.sarif'
pinned-runtime-scan:
name: Scan pinned runtime image
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
image:
- python:3.11.15-slim-bookworm@sha256:d29f48a31a8b408ed19272ca1e7b10ebae13b240a27e862d3d4217c528e2e0c3
- prom/prometheus:v3.13.2@sha256:508729e0e2d18e11fd742a5a5ca70e557b940a93948c3c95fd0123a6fd538b69
- grafana/grafana:13.1.3@sha256:ab5cb380e3ff3172d6c8bd2e7cfd31cce977d2881b260e1f5bc089bf0b759b43
- prom/alertmanager:v0.33.1@sha256:9e082985f56f4c8c9f724e18f2288c6708f472e56a5286b8863d080434ea065d
steps:
- name: Checkout security policy
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
- name: Trivy critical vulnerability gate
env:
SCAN_IMAGE: ${{ matrix.image }}
run: |
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:/workspace" -w /workspace \
aquasec/trivy:0.69.3@sha256:bcc376de8d77cfe086a917230e818dc9f8528e3c852f7b1aff648949b6258d1c \
image --scanners vuln --severity HIGH,CRITICAL --ignore-unfixed \
--ignorefile /workspace/.trivyignore --exit-code 1 "$SCAN_IMAGE"