Integrate Vienna OS governance directly into your GitHub workflows. The Vienna OS GitHub Action allows you to govern deployments, releases, and other critical operations through your existing CI/CD pipeline.
Add the Vienna OS governance check to your workflow:
name: Deploy to Production
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Vienna OS Governance Check
uses: vienna-os/governance-action@v1
with:
api-key: ${{ secrets.VIENNA_API_KEY }}
action: 'deploy'
environment: 'production'
agent-id: 'github-ci'
- name: Deploy Application
run: |
echo "Deploying to production..."
# Your deployment commands hereexecution:submit permissionsVIENNA_API_KEYReference the action in your .github/workflows/*.yml file:
- name: Vienna OS Governance Check
uses: vienna-os/governance-action@v1
with:
api-key: ${{ secrets.VIENNA_API_KEY }}
action: 'deploy' # The action being governed
environment: 'production' # Target environment
agent-id: 'github-ci' # Optional: agent identifierRequired
Your Vienna OS API key. Store this as a GitHub secret.
Required (default: "deploy")
The action type being governed. Examples: deploy, release, migrate, rollback
Optional (default: "production")
Target environment. Examples: production, staging, development
Optional (default: "github-actions")
Identifier for the agent performing the action. Used for governance policies and audit trails.
The Vienna OS GitHub Action can return different governance modes:
The action is approved and the workflow continues normally.
The action requires manual approval. The workflow will fail with a warning message containing an approval ID. Check your Vienna OS console or Slack for approval options.
The action is blocked by governance policies. The workflow fails with an error message.
name: Multi-Environment Deploy
on:
workflow_dispatch:
inputs:
environment:
description: 'Target environment'
required: true
type: choice
options:
- staging
- production
jobs:
governance-check:
runs-on: ubuntu-latest
outputs:
governance-mode: ${{ steps.vienna.outputs.governance-mode }}
steps:
- name: Vienna OS Governance Check
id: vienna
uses: vienna-os/governance-action@v1
with:
api-key: ${{ secrets.VIENNA_API_KEY }}
action: 'deploy'
environment: ${{ github.event.inputs.environment }}
agent-id: ${{ github.actor }}
deploy:
needs: governance-check
runs-on: ubuntu-latest
steps:
- name: Deploy
run: |
echo "Governance mode: ${{ needs.governance-check.outputs.governance-mode }}"
echo "Deploying to ${{ github.event.inputs.environment }}..."
# Deployment logic herename: Database Migration
on:
workflow_dispatch:
inputs:
migration_name:
description: 'Migration name'
required: true
jobs:
migrate:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Vienna OS Migration Governance
uses: vienna-os/governance-action@v1
with:
api-key: ${{ secrets.VIENNA_API_KEY }}
action: 'database_migration'
environment: 'production'
agent-id: 'db-migrator'
- name: Run Migration
run: |
echo "Running migration: ${{ github.event.inputs.migration_name }}"
# Migration commands hereAll GitHub Actions governed by Vienna OS are logged in your governance console:
execution:submit permissionsVIENNA_API_KEYNeed help? Contact support at support@regulator.ai or join our developer community.