Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Videos & KonferenzenTwo Minute Papers: Claude Opus 5.5 AI: A Massive Leap Forward(24.09.2026 um 10:40 Uhr)
Sicherheitslücken (CVE)USN-8805-1: Moodle vulnerability(23.09.2026 um 16:43 Uhr)
Sichere ProgrammierungI thought clipboard sync would be simple. Android had other plans.(24.09.2026 um 11:01 Uhr)
Sichere ProgrammierungAI-assisted genealogy, a follow-up(24.09.2026 um 11:02 Uhr)
Sicherheitslücken (CVE)Smart Contract Vulnerability Surface Analysis: HashKey Exchange(24.09.2026 um 11:02 Uhr)
Sichere ProgrammierungAI Agents Calling Your Existing Backend Without MCP Development(24.09.2026 um 11:06 Uhr)
Videos & KonferenzenTwo Minute Papers: Claude Opus 5.5 AI: A Massive Leap Forward(24.09.2026 um 10:40 Uhr)
Sicherheitslücken (CVE)USN-8805-1: Moodle vulnerability(23.09.2026 um 16:43 Uhr)
Sichere ProgrammierungI thought clipboard sync would be simple. Android had other plans.(24.09.2026 um 11:01 Uhr)
Sichere ProgrammierungAI-assisted genealogy, a follow-up(24.09.2026 um 11:02 Uhr)
Sicherheitslücken (CVE)Smart Contract Vulnerability Surface Analysis: HashKey Exchange(24.09.2026 um 11:02 Uhr)
Sichere ProgrammierungAI Agents Calling Your Existing Backend Without MCP Development(24.09.2026 um 11:06 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

CI/CD Pipeline for Solo Developers: Go + GCP + GitHub Actions

I run Amida-san (amida-san.com), a web service with 10,000+ users, as a solo developer. The backend is written in Go and deployed on GCP. In the age of AI, building a working service has become easier than ever. However, delivering a…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

I run Amida-san (amida-san.com), a web service with 10,000+ users, as a solo developer. The backend is written in Go and deployed on GCP.



In the age of AI, building a working service has become easier than ever. However, delivering a stable, high-quality experience to users requires more than just shipping code. When you're the only developer, you're also the only one who notices when things break. That's why a solid CI/CD pipeline is essential—it keeps the development-to-deployment loop fast and safe.



This article covers the CI/CD pipeline I built using GitHub Actions + GCP (Cloud Run, Cloud Build) + Terraform.




Code samples in this article are simplified for explanation purposes. Service names, regions, and versions have been changed from actual values.







Tech Stack








































Category Technology
Language Go
Framework Gin
Infrastructure
GCP (Cloud Run, Cloud SQL, Secret Manager, Artifact Registry)
IaC Terraform
CI/CD
GitHub Actions + Cloud Build
Security Scanning
Trivy, gosec
Notifications Discord Webhook





Architecture Overview



CI/CD Pipeline Overview






CI Pipeline






Automated Quality Checks



Every push and PR to main triggers the following checks automatically:




name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout
- uses: actions/setup-go

- name: Generate mocks
run: make mocks

- name: Run golangci-lint
uses: golangci/golangci-lint-action

- name: Run tests
run: go test -v -race -coverprofile=coverage.out ./...

- name: Build
run: go build -v ./...






Key points:





  • -race flag detects data races—essential for Go's concurrent patterns


  • golangci-lint for static analysis with customizable rules via .golangci.yml


  • mockgen auto-generates mocks in CI, ensuring test reproducibility






AI-Powered PR Reviews



When a PR is created, both Claude and Gemini automatically review the code. Using two different AI models provides diverse perspectives, maintaining review quality even as a solo developer.






Dependabot for Dependency Updates



Five ecosystems are automatically updated on a regular schedule:




updates:
- package-ecosystem: "gomod"
- package-ecosystem: "docker"
- package-ecosystem: "github-actions"
- package-ecosystem: "terraform"
- package-ecosystem: "npm"






This covers Go, Docker, GitHub Actions, Terraform, and npm—no layer left behind.






CD Pipeline - Deployment Strategy






Why Manual Triggers?



For solo projects, auto-deploying on merge to main is common. I chose manual triggers (workflow_dispatch) instead, for several reasons.



First, coordinating infrastructure and application changes. For example, DB schema changes and app deploys often need a specific order—"add the column first, then deploy the app."



Second, release tags make it clear which codebase is running in production. When incidents happen, you can immediately identify the exact code version.



And honestly, pressing the deploy button gives you a moment of "okay, let's do this"—a small but real psychological benefit.






Release Tag Convention



Release tags follow the YYYYMMDDB format (e.g., 20250703b). The trailing letter (a, b, c...) handles multiple same-day releases. The date-based format makes it instantly clear when the deployed code was cut.






Deployment Flow



Deployment Flow - Three Safety Guards



The deployment workflow has three safety mechanisms:




on:
workflow_dispatch:
inputs:
deployment_type:
type: choice
options: ["full", "restart"]
release_tag:
description: "Release tag (YYYYMMDDB format)"
confirm_production:
description: 'Type "DEPLOY" to confirm'






Three Safety Guards:





  1. Confirmation string "DEPLOY" — prevents accidental clicks


  2. Tag format validation — rejects anything not in YYYYMMDDB format


  3. Pre-deploy security scan — gosec vulnerability check + full test suite






Cloud Build Pipeline






steps:
- id: "test" # Run Go tests
- id: "build" # Build Docker image
waitFor: ["test"]
- id: "push" # Push to Artifact Registry
- id: "deploy" # Deploy to Cloud Run
- id: "traffic" # Switch traffic (LATEST=100%)

timeout: "1200s"






Test → Build → Push → Deploy → Traffic switch, executed sequentially via waitFor.






Production Dockerfile






# Build stage
FROM golang:x.xx-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

# Runtime stage
FROM alpine:x.xx
RUN adduser -D appuser
WORKDIR /home/appuser
COPY --from=builder /app/main .
USER appuser
CMD ["./main"]






Security measures:





  • Multi-stage build minimizes image size


  • Non-root user (appuser) for runtime execution


  • CGO_ENABLED=0 for static linking with zero external dependencies






Service Restart (Redeploy Without Code Changes)



When Secret Manager secrets are updated, you may need a new revision without code changes:




gcloud run services update <service-name> \
--region=<region> \
--update-annotations=restart-timestamp=$(date +%s)






Just select the restart type to pick up new secrets.






Rollback Strategy



A dedicated rollback workflow enables immediate recovery during incidents:




on:
workflow_dispatch:
inputs:
rollback_target:
type: choice
options: ["previous-revision", "specific-revision"]
revision_id:
description: "Specific revision ID"
confirm_rollback:
description: 'Type "ROLLBACK" to confirm'






Two rollback modes:





  1. Previous revision — instantly revert to the last stable version


  2. Specific revision — specify a revision ID from the deploy notification



Leveraging Cloud Run's revision management, rollback is just a gcloud run services update-traffic call. No rebuild needed—rollback completes in seconds.



Post-rollback health checks (with retries) and Discord notifications confirm recovery.






Infrastructure as Code - Terraform






Module Structure






terraform/
├── environments/<env>/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ ├── providers.tf
│ └── terraform.tfvars
└── modules/
├── cloud-run/ # Cloud Run service
├── cloud-sql/ # Database
├── auth/ # Authentication
├── secret-manager/ # Secret management
├── billing/ # Budget alerts
└── monitoring/ # Monitoring config






Every GCP resource—Cloud Run, Cloud SQL, Firebase, Secret Manager, billing, monitoring—is managed through Terraform.






Plan/Apply Separation with Approval Gates





  • Plan and Apply are separate workflows. Review the diff from Plan, then execute Apply

  • Apply requires GitHub Environment production approval


  • Local terraform apply is prohibited. Only GitHub Actions can apply changes






Workload Identity Federation






- name: Authenticate to Google Cloud
uses: google-github-actions/auth
with:
workload_identity_provider: ${{ secrets.WIF_PROVIDER }}
service_account: ${{ secrets.SA_EMAIL }}






Instead of storing service account keys (JSON) in GitHub Secrets, Workload Identity Federation uses OIDC authentication. This eliminates key rotation and leakage risks entirely.






Security



This project uses gosec and Trivy at different stages for different purposes:



Security Tools Overview
































Tool Target When What it detects
gosec Go source code Every push/PR (CI) Code-level vulnerabilities
Trivy (image) Built Docker image Scheduled Known CVEs in OS packages
Trivy (filesystem) Entire repository Scheduled Known CVEs in Go modules, secret leaks





gosec - Static Security Analysis



gosec runs via golangci-lint on every CI run. It detects issues like:




  • SQL injection (string concatenation in queries)

  • Command injection (os/exec with external input)

  • Hardcoded secrets (passwords/tokens in code)

  • Weak cryptographic algorithms (MD5, SHA1)

  • Insecure TLS configurations






Trivy - Scheduled Vulnerability Scanning






name: Security Scan
on:
schedule:
- cron: "..." # Scheduled

jobs:
trivy-image-scan:
steps:
- run: docker build -t app:latest .
- uses: aquasecurity/trivy-action
with:
image-ref: "app:latest"
exit-code: "1"
severity: "HIGH,CRITICAL"

trivy-fs-scan:
steps:
- uses: aquasecurity/trivy-action
with:
scan-type: "fs"
exit-code: "1"
severity: "HIGH,CRITICAL"






Trivy checks whether libraries and OS packages contain known vulnerabilities—even if your own code is clean. It runs on a schedule rather than every CI run to keep feedback loops fast. Docker image builds and scans are time-consuming, and dependency vulnerabilities don't change with daily development. HIGH/CRITICAL findings trigger immediate Discord notifications.



No code reaches production without passing gosec + tests during deployment.






Monitoring & Notifications



All CI/CD workflow results (deploy, rollback, Terraform apply, security scans) are sent to Discord. Deploy notifications include revision IDs and monitoring links, ensuring all necessary information is available during incidents.



For the monitoring and observability setup (structured logging, GCP Cloud Monitoring dashboards, error alerts, admin web app), see the companion article: Monitoring & Observability for Solo Developers.






Conclusion



Building this level of CI/CD as a solo developer delivers three key benefits:





  1. Deploy with confidence — tests, static analysis, and security scans run before every deploy, with instant rollback available


  2. Lower operational overhead — automation handles routine tasks (dependency updates, security checks)


  3. Production-grade reliability — maintain the same quality processes as team-based development



Setting up this CI/CD infrastructure took significant effort. But once the foundation is in place, the ongoing cost of worrying "is anything broken?" drops dramatically. The investment pays for itself in sustained peace of mind.



In the AI era, building something that works is easier than ever. But keeping it running reliably is a different challenge entirely—quality gates, safe deploy/rollback mechanisms, continuous security checks. These are the things worth investing in as an engineer.






Originally published at shusukedev.com

CTI Threat Relationship Graph7 Knoten / 6 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
SOC Incident Playbook: Remote Code Execution (RCE) Defense
title: Detect Exploitation - CI/CD Pipeline for Solo Developers: Go + GCP + GitHub Actions
id: d5d2ad9b-3fff-4d36-bc2f-811aa5899b2b
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-24
logsource:
  category: network_connection
  product: any
detection:
  selection:
      CommandLine|contains:
        - 'exploit'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
  - attack.t1190
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-24"
        description = "YARA Signature for "
    strings:
        $str = "CI/CD Pipeline for Solo Develo" ascii wide
    condition:
        any of them
}
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Kognitive Analyse für identifizierte Bedrohung: Erhöhte Bedrohungslage im Bereich CI/CD Pipeline for Solo Developers: Go +.... Basierend auf 368k Vektor-Korrelationen werden sofortige Isolationsmaßnahmen für betroffene Endpunkte empfohlen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
🔗 Semantisch verwandte Zero-Days MariaDB 11.7 VEC
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten CI/CD Pipeline for Solo Developers: Go + GCP + GitHub Actions

Thematisch verwandte Begriffe: CICD, Pipeline, Solo, Developers · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-97056 | SigNoz versions from v0.98.0 up to (but not including) v0.143.0, when co…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel TTP ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick