Zum Hauptinhalt springen
Version: Weekly Build

GitHub Preview Deployments

info

Diese Anleitung erklärt, wie automatisch ein Preview Codesphere Workspace für jeden Pull Request (PR) erstellt wird, der in deinem GitHub-Repository geöffnet wird. Dadurch kann dein Team Änderungen in einer Live-Umgebung überprüfen, bevor sie zusammengeführt werden.

Architekturüberblick

GitHub preview deployment architecture diagram

Entsprechende barrierefreie Textbeschreibung

Voraussetzungen

Bevor die Automation eingerichtet wird, sollten folgende Punkte vorbereitet sein:

  • Codesphere-Account
  • Admin-Zugriff auf das GitHub-Repository, das verbunden werden soll

Zukünftige API-Unterstützung

Wir arbeiten derzeit an einem dedizierten API-Token-System. Sobald dieses veröffentlicht ist, kann die Authentifizierung über Tokens anstelle von Account-Passwörtern erfolgen.

Empfehlung: Verwendung eines Service-Accounts

Für Produktionsumgebungen empfehlen wir dringend die Verwendung eines Service-Accounts (ein dedizierter Machine User) statt eines persönlichen Entwickler-Accounts. So wird verhindert, dass die Automation unterbrochen wird, wenn ein Teammitglied das Unternehmen verlässt.

  1. Service-Account erstellen: Registriere einen neuen Codesphere-Account mit einer dedizierten E-Mail-Alias-Adresse, z. B. [email protected].
  2. Zum Team einladen: Melde dich mit deinem Haupt-Codesphere-Account an und lade diesen neuen Service-Account in dein Ziel-Team ein.
  3. Git verbinden: Melde dich als Service-Account an und stelle sicher, dass er die nötigen Berechtigungen hat, um auf dein GitHub-Repository zuzugreifen.
  4. Passwort setzen: Da für die Automation kein OAuth verwendet werden kann, muss für diesen Service-Account ein Passwort gesetzt sein (nutze den "Passwort vergessen"-Ablauf, falls die Registrierung über GitHub/Google erfolgt ist).

Wichtig: Passwort-Anforderung

GitHub Actions benötigt einen Standard-Login mit E-Mail/Passwort. Wurde der Service-Account über OAuth erstellt, muss ein Passwort definiert werden:

  1. Melde dich von Codesphere ab.
  2. Klicke auf dem Login-Bildschirm auf Passwort vergessen.
  3. Folge den Anweisungen in der E-Mail, um ein Passwort für den Service-Account zu setzen.

GitHub Secrets konfigurieren

Damit GitHub Actions sicher mit Codesphere kommunizieren kann, müssen die Zugangsdaten als verschlüsselte Secrets gespeichert werden.

  1. Öffne dein Repository auf GitHub.
  2. Navigiere zu Settings > Secrets and Variables > Actions.
  3. Klicke auf New repository secret und füge die folgenden zwei Secrets hinzu:
Secret-NameWert
CODESPHERE_EMAILDeine Codesphere-Login-E-Mail-Adresse.
CODESPHERE_PASSWORDDas Passwort, das im Schritt "Voraussetzungen" definiert wurde.

Workflow-Datei hinzufügen

Es muss eine GitHub Actions Workflow-Datei erstellt werden, die auf Pull-Request-Events reagiert.

  1. Erstelle das Verzeichnis .github/workflows/ im Root deines Repositorys.
  2. Erstelle eine Datei mit dem Namen main.yml in diesem Verzeichnis.
  3. Füge die folgende Konfiguration ein:
name: Codesphere Preview Deployment

on:
workflow_dispatch:
pull_request:
types: [closed, opened, reopened, synchronize]

permissions:
contents: read
pull-requests: read
deployments: write

jobs:
deploy:
name: Deploy to Codesphere
# Prevent multiple workspaces from being created for the same PR
concurrency: codesphere-preview-${{ github.event.pull_request.number }}
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Deploy Preview
uses: codesphere-cloud/gh-action-deploy@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
email: ${{ secrets.CODESPHERE_EMAIL }}
password: ${{ secrets.CODESPHERE_PASSWORD }}
team: 'My Team' # <--- REPLACE with your Team Name
plan: 'Boost' # Options: Micro, Boost, Pro
onDemand: 'true' # 'true' enables cost-saving standby mode
deploymentLinkType: 'preview' # Options: preview, dev-domain
apiUrl: 'https://cloud.codesphere.com' # replace with your instance URL
env: | # Optional: Add environment variables below
MY_ENV=test
DEBUG=true

Team-Name

Achte darauf, 'My Team' durch den exakten Namen deines Teams in Codesphere zu ersetzen (Groß-/Kleinschreibung beachten). Diesen findest du oben links in der Codesphere-UI.

Konfigurationsreferenz

Die folgenden Eingaben werden von der codesphere-cloud/gh-action-deploy-Action unterstützt:

OptionErforderlichBeschreibungStandard / Werte
emailJaDie E-Mail-Adresse deines Codesphere-Accounts.-
passwordJaDas Passwort deines Codesphere-Accounts.-
teamJaDer exakte Name deines Teams in Codesphere.-
planNeinDer Compute-Plan für den Workspace.Boost
Optionen: Micro, Boost, Pro
onDemandNeinBei true verwendet der Workspace den Modus "Aus, wenn ungenutzt", um Kosten zu sparen (wacht bei Zugriff auf).false
apiUrlNeinDie Basis-URL für deine Codesphere-API.https://cloud.codesphere.com
envNeinEine Liste von Umgebungsvariablen, die in den Workspace injiziert werden (Key=Value-Format).-
deploymentLinkTypeNeinSteuert das Format des Deployment-Links, der im PR gepostet wird. preview öffnet eine interaktive Vorschau, in der Reviewer Frontend-Kommentare hinterlassen können. dev-domain verlinkt direkt auf die Development-Domain des Workspace.dev-domain

Format der Umgebungsvariablen

Verwende eine dotenv-ähnliche Definition der Umgebungsvariablen. Details siehe https://www.npmjs.com/package/dotenv.

Deployen & Überprüfen

  1. Committe und pushe die Datei main.yml.
  2. Öffne einen neuen Pull Request in deinem Repository.
  3. Prüfe den Statusbereich des PR.

Erfolg

Es wird ein "Deploy"-Check mit einem direkten Link zu deiner Preview-Umgebung angezeigt.

Statusansicht eines GitHub Pull Requests mit dem Preview-Deployment-Check und -Link.

Bereinigung

Wenn der Pull Request geschlossen oder zusammengeführt wird, fährt dieser Workflow den Preview-Workspace automatisch herunter und löscht ihn, damit keine Kosten für ungenutzte Ressourcen anfallen.