GitHub Actions: CI/CD Workflows | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

241 Dokumentationen verfügbar

Wissensdatenbank

GitHub Actions CI CD Workflow

Zuletzt aktualisiert: 11.01.2026 um 12:06 Uhr

GitHub Actions: CI/CD Workflows

GitHub Actions ermöglicht automatisierte Workflows direkt im Repository. Testen, bauen und deployen Sie Code automatisch bei jedem Push oder Pull Request.

Grundkonzepte

  • Workflow: Automatisierter Prozess (YAML-Datei)
  • Job: Gruppe von Steps auf einem Runner
  • Step: Einzelne Aufgabe (Befehl oder Action)
  • Action: Wiederverwendbare Komponente
  • Runner: Server der den Workflow ausführt

Erster Workflow

# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
      - name: Code auschecken
        uses: actions/checkout@v4
      
      - name: Node.js einrichten
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
      
      - name: Abhängigkeiten installieren
        run: npm ci
      
      - name: Tests ausführen
        run: npm test
      
      - name: Build erstellen
        run: npm run build

Trigger-Events

on:
  # Bei Push
  push:
    branches: [ main ]
    paths:
      - 'src/**'
      - '!**.md'
  
  # Bei Pull Request
  pull_request:
    types: [ opened, synchronize ]
  
  # Zeitgesteuert (Cron)
  schedule:
    - cron: '0 2 * * *'  # Täglich 2 Uhr
  
  # Manuell
  workflow_dispatch:
    inputs:
      environment:
        description: 'Deployment-Umgebung'
        required: true
        default: 'staging'

Matrix-Builds

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        node-version: [18, 20, 22]
    
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - run: npm test

Secrets verwenden

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy via SSH
        env:
          SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
          SERVER: ${{ secrets.SERVER_IP }}
        run: |
          echo "$SSH_KEY" > key.pem
          chmod 600 key.pem
          ssh -i key.pem user@$SERVER "cd /app && git pull"

Artifacts speichern

steps:
  - name: Build
    run: npm run build
  
  - name: Artifact hochladen
    uses: actions/upload-artifact@v4
    with:
      name: build-output
      path: dist/
      retention-days: 7

Docker Image bauen & pushen

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Docker Hub Login
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USER }}
          password: ${{ secrets.DOCKER_TOKEN }}
      
      - name: Build und Push
        uses: docker/build-push-action@v5
        with:
          push: true
          tags: user/app:latest

Deployment-Workflow

name: Deploy to Production

on:
  release:
    types: [ published ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    environment: production
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Deploy to Server
        uses: appleboy/ssh-action@v1.0.0
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USER }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /var/www/app
            git pull origin main
            npm install --production
            pm2 restart app

Nützliche Actions

Action Beschreibung
actions/checkout Repository auschecken
actions/setup-node Node.js einrichten
actions/cache Abhängigkeiten cachen
docker/build-push-action Docker Images
appleboy/ssh-action SSH-Befehle

Weitere Hilfe

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120