57 lines
No EOL
2.4 KiB
Markdown
57 lines
No EOL
2.4 KiB
Markdown
# StackitGit Actions: Manual Approvals Guide
|
|
|
|
While StackitGit Actions does not currently feature native environment protection rules that pause a running workflow for a UI approval, the most effective and resource-efficient workaround is to split your CI/CD pipeline into separate workflows using the `workflow_dispatch` event.
|
|
|
|
> **Resource Efficiency (Cost Savings):**
|
|
> Unlike workarounds that use third-party actions to poll for comments on an Issue, splitting workflows is **significantly cheaper and more efficient**. Pause-and-poll methods keep the original workflow active, *holding the runner hostage* and consuming compute minutes for hours or days while waiting for an approval. By splitting workflows, the runner is immediately freed after the build phase. A new runner is only provisioned when the deployment is explicitly approved.
|
|
|
|
## Step 1: The Automated Build & Test Workflow
|
|
|
|
Create your primary workflow that runs automatically on every push or pull request. This workflow handles everything up to the point of deployment.
|
|
|
|
```yaml
|
|
name: 1. Build and Test
|
|
on: [push]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: stackit-ubuntu-22
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Run tests
|
|
run: echo "Testing the code..."
|
|
- name: Build artifact
|
|
run: echo "Building artifact..."
|
|
# Upload artifacts here for the deploy workflow to download
|
|
```
|
|
|
|
## Step 2: The Manual Deployment Workflow
|
|
|
|
Create a second workflow triggered *only* by `workflow_dispatch`. This generates a "Run Workflow" button in the StackitGit UI, serving as your manual approval gate.
|
|
|
|
```yaml
|
|
name: 2. Manual Production Deploy
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: 'Version or Branch to deploy'
|
|
required: true
|
|
default: 'main'
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: stackit-ubuntu-22
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.inputs.version }}
|
|
- name: Deploy to Production
|
|
run: echo "Deploying version ${{ github.event.inputs.version }}..."
|
|
```
|
|
|
|
## Workflow Execution
|
|
|
|
1. A developer pushes code, triggering the **Build and Test** workflow automatically.
|
|
2. The team reviews the workflow results and test logs. The runner completes its job, reports success, and shuts down.
|
|
3. When the release is approved, an authorized team member navigates to the StackitGit Actions tab, selects the **Manual Production Deploy** workflow, and clicks "Run Workflow". |