Zurück zum Blog

Integration von Proxys in CI/CD-Pipelines: Konfiguration für GitHub Actions, GitLab und Jenkins

Vollständiger Leitfaden zur Integration von Proxys in CI/CD-Pipelines für Entwickler: Einrichtung von GitHub Actions, GitLab CI, Jenkins mit Codebeispielen und Lösungen für typische Probleme.

📅17. Februar 2026
```html

Bei der Automatisierung von Bereitstellungen und Tests besteht häufig die Notwendigkeit, Proxys in CI/CD-Prozessen zu verwenden. Dies kann mit Unternehmenssicherheitsrichtlinien, dem Testen von Geolokalisierungsfunktionen oder dem Umgehen von Rate-Limiting beim Herunterladen von Abhängigkeiten zusammenhängen. In diesem Leitfaden werden wir die praktische Konfiguration von Proxys für beliebte CI/CD-Plattformen mit fertigen Konfigurationsbeispielen behandeln.

Warum Proxys in CI/CD-Prozessen benötigt werden

Der Einsatz von Proxys in automatisierten Bereitstellungsprozessen löst mehrere kritische Aufgaben. Erstens verlangen viele Unternehmensnetzwerke, dass der gesamte ausgehende Datenverkehr über Unternehmensproxys geleitet wird, um die Sicherheit zu kontrollieren und Protokolle zu führen. Ohne die richtige Konfiguration kann die CI/CD-Pipeline einfach keine Abhängigkeiten herunterladen oder sich mit externen Diensten verbinden.

Zweitens muss beim Testen von Anwendungen mit Geolokalisierungslogik die Funktionalität aus verschiedenen Ländern überprüft werden. Wenn Sie beispielsweise einen Dienst mit regionalem Inhalt oder Preisgestaltung entwickeln, müssen automatisierte Tests Benutzer aus verschiedenen Standorten simulieren. Hier helfen residential Proxys mit IP-Adressen aus den benötigten Regionen.

Der dritte Grund ist das Umgehen von Rate-Limiting und Blockierungen. Bei häufigen Pipeline-Ausführungen, insbesondere in großen Teams, können CI/CD-Server unter die API-Beschränkungen externer Dienste fallen. Beispielsweise können GitHub API oder Paketregister IPs vorübergehend blockieren, wenn das Anfrage-Limit überschritten wird. Die Rotation von Proxys hilft, die Last zu verteilen.

Wichtig: Für CI/CD-Prozesse ist die Stabilität der Verbindung entscheidend. Verwenden Sie Proxys mit einer Verfügbarkeit von mindestens 99,5 % und einer schnellen Reaktionszeit (unter 200 ms). Instabile Proxys führen zu zufälligen Build-Abbrüchen und zu einem Zeitverlust für das Team bei der Fehlersuche.

Proxy in GitHub Actions konfigurieren

GitHub Actions ist eine der beliebtesten Plattformen für CI/CD. Die Konfiguration von Proxys erfolgt hier über Umgebungsvariablen, die auf Workflow- oder Organisationsebene festgelegt werden können. Lassen Sie uns einige Integrationsmethoden betrachten.

Grundkonfiguration über Umgebungsvariablen

Der einfachste Weg ist, die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY zu Beginn des Jobs festzulegen. Die meisten Tools (curl, wget, npm, pip) verwenden diese Variablen automatisch:

name: CI mit Proxy

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    
    env:
      HTTP_PROXY: http://proxy.example.com:8080
      HTTPS_PROXY: http://proxy.example.com:8080
      NO_PROXY: localhost,127.0.0.1,.internal.domain
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Node.js einrichten
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      
      - name: Abhängigkeiten installieren
        run: npm install
      
      - name: Tests ausführen
        run: npm test

Die Variable NO_PROXY ist entscheidend — sie schließt lokale Adressen und interne Dienste vom Proxieren aus. Ohne sie können Probleme beim Verbinden mit localhost oder internen Docker-Containern auftreten.

Sichere Speicherung von Anmeldeinformationen über GitHub Secrets

Wenn der Proxy eine Authentifizierung erfordert, speichern Sie niemals Benutzernamen und Passwort im Klartext in der Workflow-Datei. Verwenden Sie GitHub Secrets:

name: CI mit authentifiziertem Proxy

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Proxy konfigurieren
        run: |
          echo "HTTP_PROXY=http://${{ secrets.PROXY_USER }}:${{ secrets.PROXY_PASS }}@${{ secrets.PROXY_HOST }}:${{ secrets.PROXY_PORT }}" >> $GITHUB_ENV
          echo "HTTPS_PROXY=http://${{ secrets.PROXY_USER }}:${{ secrets.PROXY_PASS }}@${{ secrets.PROXY_HOST }}:${{ secrets.PROXY_PORT }}" >> $GITHUB_ENV
          echo "NO_PROXY=localhost,127.0.0.1" >> $GITHUB_ENV
      
      - name: Proxy-Verbindung testen
        run: curl -I https://api.github.com
      
      - name: Abhängigkeiten installieren
        run: npm ci

Erstellen Sie Secrets in den Repository-Einstellungen: Einstellungen → Secrets und Variablen → Aktionen → Neues Repository-Secret. Fügen Sie PROXY_USER, PROXY_PASS, PROXY_HOST und PROXY_PORT hinzu. Diese Werte werden verschlüsselt und sind in den Protokollen nicht sichtbar.

Proxy für bestimmte Schritte konfigurieren

Manchmal müssen Proxys nur für bestimmte Operationen verwendet werden, z. B. nur für das Herunterladen von Abhängigkeiten, jedoch nicht für das Deployment. Setzen Sie die Variablen auf der Ebene des spezifischen Schrittes:

steps:
  - name: Abhängigkeiten über Proxy herunterladen
    env:
      HTTP_PROXY: http://proxy.example.com:8080
      HTTPS_PROXY: http://proxy.example.com:8080
    run: npm install
  
  - name: Ohne Proxy deployen
    run: ./deploy.sh

Integration von Proxys mit GitLab CI/CD

GitLab CI/CD bietet mehrere Ebenen zur Konfiguration von Proxys: auf Runner-Ebene, auf Projektebene und auf Ebene des spezifischen Jobs. Die Wahl hängt davon ab, ob der Proxy für alle Projekte oder nur für bestimmte benötigt wird.

Proxy auf GitLab Runner-Ebene konfigurieren

Wenn Sie einen selbst gehosteten GitLab Runner verwenden und alle Projekte über einen Proxy arbeiten sollen, konfigurieren Sie ihn in der Runner-Konfiguration. Bearbeiten Sie die Datei /etc/gitlab-runner/config.toml:

[[runners]]
  name = "docker-runner"
  url = "https://gitlab.com/"
  token = "YOUR_TOKEN"
  executor = "docker"
  
  [runners.docker]
    image = "alpine:latest"
    privileged = false
    
  [runners.docker.services_environment]
    HTTP_PROXY = "http://proxy.example.com:8080"
    HTTPS_PROXY = "http://proxy.example.com:8080"
    NO_PROXY = "localhost,127.0.0.1,.gitlab.com"

Nach der Änderung der Konfiguration starten Sie den Runner neu: sudo gitlab-runner restart. Jetzt verwenden alle Jobs auf diesem Runner automatisch den Proxy.

Konfiguration über .gitlab-ci.yml

Um den Proxy auf Projektebene zu konfigurieren, verwenden Sie Variablen in der Datei .gitlab-ci.yml. Dies ist ein flexiblerer Ansatz, der es verschiedenen Projekten ermöglicht, unterschiedliche Proxys zu verwenden:

variables:
  HTTP_PROXY: "http://proxy.example.com:8080"
  HTTPS_PROXY: "http://proxy.example.com:8080"
  NO_PROXY: "localhost,127.0.0.1,.internal"

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - echo "Proxy konfiguriert: $HTTP_PROXY"
    - npm install
    - npm run build
  artifacts:
    paths:
      - dist/

test:
  stage: test
  script:
    - npm test
  dependencies:
    - build

Verwendung von GitLab CI/CD-Variablen für Anmeldeinformationen

Zur Speicherung sensibler Daten verwenden Sie CI/CD-Variablen in den Projekteinstellungen: Einstellungen → CI/CD → Variablen. Erstellen Sie geschützte und maskierte Variablen:

  • PROXY_URL — vollständige URL mit Anmeldeinformationen (maskiert)
  • PROXY_HOST — Host des Proxy-Servers
  • PROXY_PORT — Port
  • PROXY_USER und PROXY_PASS — zur getrennten Speicherung

Verwenden Sie diese dann in .gitlab-ci.yml:

build:
  stage: build
  before_script:
    - export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}"
    - export HTTPS_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}"
  script:
    - npm install
    - npm run build

Proxy-Konfiguration in Jenkins

Jenkins bietet mehrere Möglichkeiten zur Konfiguration von Proxys, abhängig von der Architektur: globale Einstellungen für Jenkins Master, Einstellungen für bestimmte Agenten oder Einstellungen auf der Ebene einzelner Pipelines.

Globale Proxy-Einstellung für Jenkins

Um einen Proxy zu konfigurieren, der von Jenkins für Plugin-Updates und andere interne Vorgänge verwendet wird, gehen Sie zu Verwalten von Jenkins → Verwalten von Plugins → Erweitert. Geben Sie im Abschnitt HTTP-Proxy-Konfiguration Folgendes an:

  • Server: proxy.example.com
  • Port: 8080
  • Benutzername und Passwort (falls Authentifizierung erforderlich)
  • Kein Proxy-Host: localhost,127.0.0.1,.internal

Diese Einstellung betrifft nur Jenkins selbst, nicht die Jobs. Für Jobs ist eine separate Konfiguration erforderlich.

Proxy für Jenkins-Pipeline konfigurieren

In der Jenkinsfile können Umgebungsvariablen für die gesamte Pipeline oder für bestimmte Stufen festgelegt werden:

pipeline {
    agent any
    
    environment {
        HTTP_PROXY = 'http://proxy.example.com:8080'
        HTTPS_PROXY = 'http://proxy.example.com:8080'
        NO_PROXY = 'localhost,127.0.0.1,.internal'
    }
    
    stages {
        stage('Build') {
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }
        
        stage('Test') {
            steps {
                sh 'npm test'
            }
        }
    }
}

Verwendung von Jenkins-Anmeldeinformationen für Proxys

Zur sicheren Speicherung von Proxy-Anmeldeinformationen verwenden Sie den Jenkins Credentials Store. Erstellen Sie Anmeldeinformationen vom Typ "Benutzername mit Passwort" in Verwalten von Jenkins → Verwalten von Anmeldeinformationen und verwenden Sie diese dann in der Pipeline:

pipeline {
    agent any
    
    stages {
        stage('Build mit authentifiziertem Proxy') {
            steps {
                withCredentials([usernamePassword(
                    credentialsId: 'proxy-credentials',
                    usernameVariable: 'PROXY_USER',
                    passwordVariable: 'PROXY_PASS'
                )]) {
                    sh '''
                        export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@proxy.example.com:8080"
                        export HTTPS_PROXY="http://${PROXY_USER}:${PROXY_PASS}@proxy.example.com:8080"
                        npm install
                    '''
                }
            }
        }
    }
}

Proxy für Jenkins-Agenten konfigurieren

Wenn Sie separate Jenkins-Agenten (Nodes) verwenden, konfigurieren Sie den Proxy für jeden Agenten separat. Fügen Sie in der Agenten-Konfiguration (Verwalten von Jenkins → Verwalten von Nodes → Konfigurieren) Folgendes zu den Umgebungsvariablen hinzu:

HTTP_PROXY=http://proxy.example.com:8080
HTTPS_PROXY=http://proxy.example.com:8080
NO_PROXY=localhost,127.0.0.1

Proxys für Docker in CI/CD

Docker ist ein wesentlicher Bestandteil moderner CI/CD-Prozesse. Die Konfiguration von Proxys für Docker hat ihre eigenen Besonderheiten, da sowohl der Docker-Daemon als auch die Container konfiguriert werden müssen.

Proxy für Docker-Daemon konfigurieren

Damit der Docker-Daemon Images über einen Proxy herunterladen kann, erstellen Sie eine systemd-Drop-in-Datei. Erstellen Sie auf einem Linux-System ein Verzeichnis und eine Datei:

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

Fügen Sie den folgenden Inhalt hinzu:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.internal,docker.io"

Laden Sie die Konfiguration und Docker neu:

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl show --property=Environment docker

Proxy für Container während des Builds

Wenn Container während des Builds über einen Proxy zugreifen müssen (z. B. zum Installieren von Paketen), übergeben Sie die Variablen über Build-Argumente im Dockerfile:

FROM node:18-alpine

ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY

ENV HTTP_PROXY=${HTTP_PROXY}
ENV HTTPS_PROXY=${HTTPS_PROXY}
ENV NO_PROXY=${NO_PROXY}

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .

# Entfernen Sie die Proxy-Variablen für die Laufzeit
ENV HTTP_PROXY=
ENV HTTPS_PROXY=

CMD ["npm", "start"]

Übergeben Sie in der CI/CD-Pipeline die Build-Argumente:

# GitHub Actions
- name: Docker-Image mit Proxy bauen
  run: |
    docker build \
      --build-arg HTTP_PROXY=${{ secrets.PROXY_URL }} \
      --build-arg HTTPS_PROXY=${{ secrets.PROXY_URL }} \
      --build-arg NO_PROXY=localhost,127.0.0.1 \
      -t myapp:latest .

# GitLab CI
docker build:
  script:
    - docker build 
        --build-arg HTTP_PROXY="${PROXY_URL}"
        --build-arg HTTPS_PROXY="${PROXY_URL}"
        -t myapp:latest .

Docker Compose mit Proxy

Bei der Verwendung von Docker Compose in CI/CD konfigurieren Sie den Proxy über die Umgebungsvariablen in docker-compose.yml:

version: '3.8'

services:
  app:
    build:
      context: .
      args:
        - HTTP_PROXY=${HTTP_PROXY}
        - HTTPS_PROXY=${HTTPS_PROXY}
    environment:
      - HTTP_PROXY=${HTTP_PROXY}
      - HTTPS_PROXY=${HTTPS_PROXY}
      - NO_PROXY=localhost,127.0.0.1
    ports:
      - "3000:3000"

Proxy für Paketmanager konfigurieren

Paketmanager erfordern häufig eine zusätzliche Proxy-Konfiguration, insbesondere wenn sie eigene Konfigurationsdateien verwenden. Lassen Sie uns die Konfiguration für beliebte Paketmanager betrachten.

NPM und Yarn

NPM kann sowohl Umgebungsvariablen HTTP_PROXY/HTTPS_PROXY als auch seine eigene Konfiguration verwenden. Für eine explizite Konfiguration in CI/CD:

# In GitHub Actions oder GitLab CI
- name: NPM-Proxy konfigurieren
  run: |
    npm config set proxy http://proxy.example.com:8080
    npm config set https-proxy http://proxy.example.com:8080
    npm config set noproxy "localhost,127.0.0.1"

- name: Abhängigkeiten installieren
  run: npm install

# Für Yarn
- name: Yarn-Proxy konfigurieren
  run: |
    yarn config set proxy http://proxy.example.com:8080
    yarn config set https-proxy http://proxy.example.com:8080

Eine alternative Methode besteht darin, eine .npmrc-Datei im Stammverzeichnis des Projekts zu erstellen (aber keine Anmeldeinformationen einpflegen!):

# .npmrc (wird in CI generiert)
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
noproxy=localhost,127.0.0.1

Python pip und Poetry

Pip verwendet Umgebungsvariablen, kann aber auch über die Konfiguration eingerichtet werden:

# Über Umgebungsvariablen (empfohlen für CI)
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
pip install -r requirements.txt

# Oder über pip-Parameter
pip install --proxy http://proxy.example.com:8080 -r requirements.txt

# Für Poetry
poetry config http-basic.proxy http://proxy.example.com:8080
poetry install

Maven und Gradle

Für Java-Projekte erfordert die Proxy-Konfiguration die Erstellung von Konfigurationsdateien. Für Maven erstellen Sie settings.xml in der CI-Pipeline:

- name: Maven-Proxy konfigurieren
  run: |
    mkdir -p ~/.m2
    cat > ~/.m2/settings.xml << EOF
    <settings>
      <proxies>
        <proxy>
          <id>http-proxy</id>
          <active>true</active>
          <protocol>http</protocol>
          <host>proxy.example.com</host>
          <port>8080</port>
          <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
        </proxy>
      </proxies>
    </settings>
    EOF

- name: Mit Maven bauen
  run: mvn clean install

Für Gradle fügen Sie die Einstellungen in gradle.properties hinzu:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.http.nonProxyHosts=localhost|127.0.0.1

Sichere Speicherung von Proxy-Anmeldeinformationen

Die Speicherung von Proxy-Anmeldeinformationen ist ein kritischer Aspekt der Sicherheit in CI/CD. Ein Leck dieser Daten kann zu unbefugter Nutzung des Proxys und finanziellen Verlusten führen. Lassen Sie uns bewährte Praktiken für verschiedene Plattformen betrachten.

GitHub Actions Secrets

GitHub Actions bietet drei Ebenen von Secrets: Repository, Umgebung und Organisation. Verwenden Sie für Proxy-Anmeldeinformationen:

  • Repository-Secrets — für Projekte, bei denen der Proxy nur in einem Repository benötigt wird
  • Organisations-Secrets — wenn ein Proxy in allen Projekten der Organisation verwendet wird
  • Umgebungs-Secrets — für verschiedene Proxys in Staging-/Produktionsumgebungen

Wichtige Sicherheitsregeln:

  • Geben Sie Secrets niemals in Protokollen aus: GitHub maskiert sie automatisch, aber es ist besser, echo zu vermeiden
  • Verwenden Sie unterschiedliche Anmeldeinformationen für verschiedene Umgebungen
  • Rotieren Sie regelmäßig die Proxy-Passwörter (mindestens alle 90 Tage)
  • Beschränken Sie den Zugriff auf Secrets durch Branch-Schutzregeln

GitLab CI/CD-Variablen

GitLab bietet zusätzliche Schutzoptionen für Variablen:

  • Protected — die Variable ist nur in geschützten Branches (main, production) verfügbar
  • Masked — der Wert wird automatisch in Protokollen ausgeblendet
  • Umfang der Umgebung — Einschränkung der Verwendung auf bestimmte Umgebungen

Empfohlene Konfiguration für Proxy-Anmeldeinformationen:

# Einstellungen → CI/CD → Variablen
PROXY_USER: myuser (Protected: Ja, Masked: Ja)
PROXY_PASS: secret123 (Protected: Ja, Masked: Ja)
PROXY_HOST: proxy.example.com (Protected: Nein, Masked: Nein)
PROXY_PORT: 8080 (Protected: Nein, Masked: Nein)

Jenkins Credentials Store

Der Jenkins Credentials Store unterstützt mehrere Arten der Speicherung von Anmeldeinformationen. Für Proxys wird empfohlen:

  • "Benutzername mit Passwort" für die Proxy-Anmeldung/Passwort zu verwenden
  • Folder-Level-Credentials für verschiedene Teams/Projekte einzurichten
  • Credentials Binding Plugin aktivieren, um sie sicher in der Pipeline zu verwenden
  • Audit-Logging einrichten, um die Verwendung von Anmeldeinformationen zu verfolgen

Externe Systeme zur Verwaltung von Secrets

Für Unternehmensumgebungen wird empfohlen, spezialisierte Systeme zur Verwaltung von Secrets zu verwenden: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault oder Google Secret Manager. Beispiel für die Integration mit HashiCorp Vault in GitHub Actions:

- name: Secrets aus Vault importieren
  uses: hashicorp/vault-action@v2
  with:
    url: https://vault.example.com
    token: ${{ secrets.VAULT_TOKEN }}
    secrets: |
      secret/data/proxy proxy_user | PROXY_USER ;
      secret/data/proxy proxy_pass | PROXY_PASS ;
      secret/data/proxy proxy_host | PROXY_HOST

- name: Proxy konfigurieren
  run: |
    export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:8080"
    npm install

Lösung typischer Probleme

Bei der Integration von Proxys in CI/CD treten häufig die gleichen Probleme auf. Lassen Sie uns die häufigsten Probleme und deren Lösungen betrachten.

Problem: Verbindungstimeout beim Herunterladen von Abhängigkeiten

Symptome: npm install, pip install oder docker pull enden mit einem Timeout-Fehler nach 30-60 Sekunden.

Ursachen:

  • Der Proxy-Server ist nicht verfügbar oder überlastet
  • Falsches Format der Proxy-URL (http:// am Anfang vergessen)
  • Der Proxy erfordert eine Authentifizierung, aber die Anmeldeinformationen wurden nicht übergeben
  • Firewall blockiert die Verbindung vom CI/CD-Runner zum Proxy

Lösung:

# 1. Überprüfen Sie die Erreichbarkeit des Proxys
- name: Proxy-Konnektivität testen
  run: |
    curl -v -x http://proxy.example.com:8080 https://www.google.com
    echo "Proxy-Test abgeschlossen"

# 2. Erhöhen Sie das Timeout für npm
- name: Installation mit erhöhtem Timeout
  run: |
    npm config set fetch-timeout 300000
    npm install

# 3. Überprüfen Sie das URL-Format
- name: Debugging der Proxy-Konfiguration
  run: |
    echo "HTTP_PROXY: $HTTP_PROXY"
    echo "HTTPS_PROXY: $HTTPS_PROXY"
    # Sollte sein: http://user:pass@host:port

Problem: SSL-Zertifikatsüberprüfung fehlgeschlagen

Symptome: Fehler wie "SSL-Zertifikatproblem: Lokalen Ausstellerzertifikat nicht erhalten" oder "CERT_UNTRUSTED".

Ursache: Unternehmensproxys führen häufig eine SSL-Inspektion durch und ersetzen Zertifikate. Der CI/CD-Runner vertraut dem Unternehmens-CA nicht.

Lösung:

# Option 1: Fügen Sie das Unternehmens-CA-Zertifikat hinzu
- name: Unternehmens-CA-Zertifikat installieren
  run: |
    sudo cp corporate-ca.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates

# Option 2: Deaktivieren Sie die SSL-Überprüfung (NICHT für Produktion empfohlen!)
- name: Installation mit deaktivierter SSL-Überprüfung
  run: |
    npm config set strict-ssl false
    npm install
  env:
    NODE_TLS_REJECT_UNAUTHORIZED: 0

# Option 3: Verwenden Sie den Proxy nur für HTTP, HTTPS direkt
- name: Selektive Proxy-Nutzung
  run: npm install
  env:
    HTTP_PROXY: http://proxy.example.com:8080
    # HTTPS_PROXY nicht setzen

Warnung: Das Deaktivieren der Überprüfung von SSL-Zertifikaten birgt erhebliche Sicherheitsrisiken. Verwenden Sie diesen Ansatz nur für interne Unternehmensnetzwerke und fügen Sie unbedingt das Unternehmens-CA zu den vertrauenswürdigen hinzu.

Problem: Proxy funktioniert für einige Befehle, aber nicht für andere

Symptome: npm install funktioniert über den Proxy, aber git clone oder docker pull ignorieren die Proxy-Einstellungen.

Ursache: Verschiedene Tools verwenden unterschiedliche Mechanismen zur Proxy-Konfiguration. Git und Docker haben eigene Konfigurationsdateien.

Lösung:

# Git-Proxy konfigurieren
- name: Git-Proxy konfigurieren
  run: |
    git config --global http.proxy http://proxy.example.com:8080
    git config --global https.proxy http://proxy.example.com:8080

# Docker-Proxy konfigurieren (siehe Abschnitt Docker oben)
# Für wget/curl
- name: wget/curl konfigurieren
  run: |
    echo "use_proxy = on" >> ~/.wgetrc
    echo "http_proxy = http://proxy.example.com:8080" >> ~/.wgetrc
    echo "https_proxy = http://proxy.example.com:8080" >> ~/.wgetrc

Problem: Interne Dienste sind bei aktiviertem Proxy nicht erreichbar

Symptome: Nach der Proxy-Konfiguration funktionieren Verbindungen zu localhost, internen Docker-Containern oder Unternehmensdiensten nicht mehr.

Ursache: Die NO_PROXY-Variable ist falsch konfiguriert, alle Anfragen gehen über den Proxy, einschließlich lokaler.

Lösung:

# Richtige Konfiguration von NO_PROXY
env:
  HTTP_PROXY: http://proxy.example.com:8080
  HTTPS_PROXY: http://proxy.example.com:8080
  NO_PROXY: |
    localhost,
    127.0.0.1,
    0.0.0.0,
    .internal,
    .local,
    .corp.example.com,
    docker.internal,
    host.docker.internal

# Für Docker Compose fügen Sie auch hinzu
services:
  app:
    environment:
      - NO_PROXY=localhost,127.0.0.1,db,redis
      # db und redis sind die Namen anderer Dienste im Compose

Problem: Proxy-Anmeldeinformationen erscheinen in Protokollen

Symptome: In den CI/CD-Protokollen sind die Proxy-Passwörter im Klartext sichtbar.

Ursache: Ausgabe von Umgebungsvariablen über echo oder den ausführlichen Modus von Befehlen.

Lösung:

# ❌ SCHLECHT - Anmeldeinformationen in Protokollen
- name: Proxy debuggen
  run: |
    echo "Proxy: $HTTP_PROXY"  # Zeigt http://user:pass@host:port
    curl -v ...  # Ausführlicher Modus zeigt Anmeldeinformationen

# ✅ GUT - sichere Ausgabe
- name: Proxy debuggen (sicher)
  run: |
    echo "Proxy-Host konfiguriert: $(echo $HTTP_PROXY | cut -d'@' -f2)"
    # Zeigt nur host:port
    
# Verwenden Sie Secrets zur Maskierung
- name: Proxy konfigurieren
  env:
    PROXY_URL: ${{ secrets.PROXY_URL }}  # GitHub maskiert automatisch
  run: |
    export HTTP_PROXY="$PROXY_URL"

Fazit

Die Integration von Proxys in CI/CD-Pipelines ist ein wichtiger Aspekt der Automatisierung, der Sicherheit, die Einhaltung von Unternehmensrichtlinien und die Möglichkeit zur Prüfung von Geolokalisierungsfunktionen gewährleistet. In diesem Leitfaden haben wir praktische Möglichkeiten zur Konfiguration von Proxys für GitHub Actions, GitLab CI, Jenkins, Docker und beliebte Paketmanager behandelt.

Wichtige Punkte, die Sie bei der Konfiguration von Proxys in CI/CD beachten sollten: Verwenden Sie immer eine sichere Speicherung von Anmeldeinformationen über die integrierten Secrets-Mechanismen der Plattform, konfigurieren Sie NO_PROXY korrekt, um lokale und interne Dienste auszuschließen, testen Sie die Verbindung zum Proxy vor den Hauptoperationen und überwachen Sie die Protokolle auf mögliche Lecks sensibler Daten. Für kritische Produktionsumgebungen wird empfohlen, externe Systeme zur Verwaltung von Secrets wie HashiCorp Vault zu verwenden.

Die Wahl des Proxy-Typs hängt von Ihren Anforderungen ab: Für Unternehmensnetzwerke werden in der Regel bestehende HTTP/HTTPS-Proxys verwendet, für das Testen von Geolokalisierungsfunktionen sind residential Proxys mit IPs aus den gewünschten Ländern geeignet, und für den schnellen Download von Abhängigkeiten können Datacenter-Proxys verwendet werden. Es ist wichtig, eine hohe Verfügbarkeit der Proxy-Server sicherzustellen, da deren Nichterreichbarkeit zu Ausfällen aller Builds und zur Blockierung der Arbeit des Entwicklungsteams führen kann.

Bei Problemen beginnen Sie mit der Überprüfung der grundlegenden Erreichbarkeit des Proxys über curl oder wget, überprüfen Sie dann das richtige Format der URL und der Anmeldeinformationen und gehen Sie erst danach zu spezifischen Einstellungen der einzelnen Tools über. Die meisten Probleme lassen sich durch die richtige Konfiguration der Umgebungsvariablen HTTP_PROXY, HTTPS_PROXY und NO_PROXY lösen.

```