İçeriğe geç
Guides 6 dk okuma 952 görüntülenme

GitHub Actions ve CI/CD'de Proxy Kurulumu

Bu rehber, GProxy ile GitHub Actions ve CI/CD hatlarınızda proxy yapılandırmasını nasıl etkin biçimde kuracağınızı ve yöneteceğinizi ayrıntılı anlatır.

GitHub Actions ve CI/CD'de Proxy Kurulumu

GitHub Actions ve CI/CD'de proxy kurulumu, HTTP_PROXY, HTTPS_PROXY ve NO_PROXY gibi standart proxy ortam değişkenlerinin workflow tanımınızda —genellikle job veya step seviyesinde— yapılandırılması anlamına gelir. Böylece CI/CD hattı içinde çalışan action'lar, script'ler ve araçlar ağ trafiklerini belirtilen bir proxy sunucusu üzerinden yönlendirir.

Kurumlar giden ağ erişimini denetlemek, güvenlik politikalarını uygulamak, içerik filtrelemek ve sık erişilen kaynakları önbelleğe almak için sıklıkla proxy sunucuları kullanır. Bu tür ortamlarda çalışan CI/CD hatlarında, build araçlarının, bağımlılık yöneticilerinin ve test script'lerinin dış servislere, paket depolarına veya API'lere ulaşabilmesi için proxy ayarları şarttır. GitHub Actions runner'ları, özellikle de self-hosted runner'lar, GitHub'ın kendisine veya diğer internet kaynaklarına erişmek için proxy yapılandırması gerektirebilir.

Proxy ortam değişkenlerini tanımlama

Linux tabanlı bir ortamda (GitHub tarafından barındırılan runner'lar ağırlıklı olarak bunu kullanır) proxy yapılandırmanın en yaygın ve evrensel olarak tanınan yöntemi ortam değişkenleridir.

  • HTTP_PROXY: HTTP istekleri için proxy sunucusunu belirtir.
  • HTTPS_PROXY: HTTPS istekleri için proxy sunucusunu belirtir.
  • NO_PROXY: Proxy'yi atlaması gereken host adlarının, alan adlarının veya IP adreslerinin virgülle ayrılmış listesi. Dahili kaynaklara doğrudan erişim için kritiktir.

HTTP_PROXY ve HTTPS_PROXY için biçim genellikle http://[user:password@]host:port şeklindedir.
Bu değişkenlerin hem büyük harfli (HTTP_PROXY) hem de küçük harfli (http_proxy) sürümleri çoğu araç tarafından dikkate alınır; ortam değişkenlerinde büyük harf kullanmak standart uygulamadır.

Workflow seviyesinde proxy yapılandırması

Proxy ayarlarını job seviyesinde uygulamak, o job içindeki tüm step'lerin yapılandırmayı devralmasını sağlar.

name: CI with Proxy
on: [push]

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.company.com,github.com
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install Node.js dependencies
        run: npm install

      - name: Download a file via curl
        run: curl -v https://api.example.com/data

      - name: Access internal service (bypasses proxy)
        run: curl -v http://internal-service.internal.company.com/status

Step seviyesinde proxy yapılandırması

Belirli step'ler için farklı proxy ayarları gerektiğinde veya job seviyesindeki ayarları geçersiz kılmak istediğinizde, ortam değişkenleri step seviyesinde tanımlanabilir.

name: CI with Specific Step Proxy
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    env: # Job için varsayılan proxy (varsa)
      HTTP_PROXY: http://default-proxy:8080
      HTTPS_PROXY: http://default-proxy:8080
      NO_PROXY: localhost,127.0.0.1
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Step using default proxy
        run: curl https://external-api.com/v1

      - name: Step using a different proxy
        env:
          HTTP_PROXY: http://special-proxy:3128
          HTTPS_PROXY: http://special-proxy:3128
          NO_PROXY: localhost,127.0.0.1,api.special-domain.com
        run: curl https://api.special-domain.com/v2

Secret'larla proxy kimlik doğrulaması

Proxy'niz kimlik doğrulama gerektiriyorsa kullanıcı adını ve parolayı doğrudan proxy URL'sine ekleyin. Güvenlik için kimlik bilgilerini GitHub Actions secret'ı olarak saklayın ve workflow içinde bunlara referans verin.

Önce GitHub depo ayarlarınızda depo secret'larını oluşturun (örneğin PROXY_USER, PROXY_PASS).

name: Authenticated Proxy Workflow
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      HTTP_PROXY: http://${{ secrets.PROXY_USER }}:${{ secrets.PROXY_PASS }}@proxy.example.com:8080
      HTTPS_PROXY: http://${{ secrets.PROXY_USER }}:${{ secrets.PROXY_PASS }}@proxy.example.com:8080
      NO_PROXY: localhost,127.0.0.1,.internal.company.com
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Perform network operation
        run: npm install # veya curl vb.

Yaygın araçlar ve proxy etkileşimi

HTTP_PROXY ve HTTPS_PROXY geniş ölçüde dikkate alınsa da bazı araçlar kendine özgü yapılandırma yöntemleri sunar.

git komutları

git, uzak işlemlerde genellikle HTTP_PROXY ve HTTPS_PROXY değişkenlerine uyar. Açık yapılandırma için veya ortam değişkenlerinin yetersiz kaldığı durumlarda git config kullanılabilir.

# HTTP ve HTTPS git işlemleri için proxy ayarla
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080

# Belirli bir remote için özel proxy yapılandır
git config http.https://github.com/.proxy http://github-proxy:8080

npm, yarn

npm ve yarn gibi Node.js paket yöneticileri HTTP_PROXY ve HTTPS_PROXY ortam değişkenlerine uyar. Ayrıca kalıcı ayarlar için kendi yapılandırma komutlarını da sunarlar.

# npm config ile
npm config set proxy http://proxy.example.com:8080
npm config set https-proxy http://proxy.example.com:8080
npm config set no-proxy localhost,127.0.0.1,.internal.com

# yarn config ile
yarn config set proxy http://proxy.example.com:8080
yarn config set httpsProxy http://proxy.example.com:8080
yarn config set no-proxy localhost,127.0.0.1,.internal.com

docker (imaj derleme ve konteyner çalışma zamanı)

Docker'da proxy ayarları hem imaj derleme hem de konteyner çalışma zamanı için ayrı ayrı ele alınmalıdır.

Docker derleme zamanı proxy'si

docker build sırasında çalışan komutlar için (örneğin RUN apk add, RUN apt-get update) proxy ayarlarının build argümanı olarak geçilmesi gerekir.

Dockerfile örneği:

FROM alpine:latest

# Proxy ayarları için build argümanlarını tanımla
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY

# Sonraki RUN komutları için ortam değişkenlerini ayarla
ENV HTTP_PROXY=$HTTP_PROXY
ENV HTTPS_PROXY=$HTTPS_PROXY
ENV NO_PROXY=$NO_PROXY

# Örnek: paket kurulumunda proxy kullanımı
RUN apk add --no-cache curl

# ... Dockerfile'ınızın geri kalanı

GitHub Actions workflow step'i:

- name: Build Docker image with proxy
  run: |
    docker build . \
      --build-arg HTTP_PROXY=${{ env.HTTP_PROXY }} \
      --build-arg HTTPS_PROXY=${{ env.HTTPS_PROXY }} \
      --build-arg NO_PROXY=${{ env.NO_PROXY }} \
      -t my-app:latest
Docker konteyner çalışma zamanı proxy'si

Workflow'unuz bir Docker konteyneri çalıştırıyorsa (örneğin container: anahtarı veya docker run ile), proxy ayarlarının konteynere ortam değişkeni olarak geçilmesi gerekir.

container: anahtarını kullanma:

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: my-custom-image:latest
      env:
        HTTP_PROXY: ${{ env.HTTP_PROXY }}
        HTTPS_PROXY: ${{ env.HTTPS_PROXY }}
        NO_PROXY: ${{ env.NO_PROXY }}
    steps:
      - name: Run command inside container
        run: curl https://external-api.com/data

Bir step'te docker run kullanma:

- name: Run Docker container with proxy
  run: |
    docker run \
      -e HTTP_PROXY=${{ env.HTTP_PROXY }} \
      -e HTTPS_PROXY=${{ env.HTTPS_PROXY }} \
      -e NO_PROXY=${{ env.NO_PROXY }} \
      my-app:latest /app/script.sh

Java uygulamaları (Maven, Gradle)

Maven ve Gradle gibi build araçları dahil olmak üzere Java uygulamaları, proxy ayarlarının Java sistem özellikleri olarak geçilmesini gerektirir. Bu genellikle MAVEN_OPTS veya _JAVA_OPTIONS ortam değişkenleriyle yapılır.

# Maven için
export MAVEN_OPTS="-Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts='localhost|127.0.0.1|*.internal.com'"

# Gradle için (JVM tabanlı diğer araçlar için de geçerlidir)
export JAVA_OPTS="-Dhttp.proxyHost=proxy.example.com -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.com -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts='localhost|127.0.0.1|*.internal.com'"

Alternatif olarak Maven ~/.m2/settings.xml ile, Gradle ise projedeki veya kullanıcının ana dizinindeki gradle.properties ile yapılandırılabilir.

Proxy sorunlarını giderme

  • Ortam değişkenlerini doğrulayın: Proxy ortam değişkenlerinin doğru ayarlandığını ve runner'ın shell'inden görülebildiğini teyit etmek için bir step'te run: env | grep -i proxy çalıştırın.
  • NO_PROXY'yi kontrol edin: Gereksiz proxy kullanımını veya yönlendirme sorunlarını önlemek için dahili host'ların ve GitHub alan adlarının NO_PROXY içinde doğru listelendiğinden emin olun.
  • Proxy sunucusu logları: Mümkünse proxy sunucusunun loglarında GitHub Actions runner'ının IP adresinden gelen bağlantı denemelerini inceleyin. Bu, isteğin proxy'ye ulaşıp ulaşmadığını ve neden reddedilmiş olabileceğini (kimlik doğrulama hatası, erişim reddi vb.) anlamaya yardımcı olur.
  • Ağ bağlantısı: Proxy üzerinden bilinen bir dış uç noktaya bağlantıyı açıkça test etmek için bir workflow step'i içinde curl -v --proxy <your-proxy-url> <target-url> kullanın.
  • SSL/TLS sertifika sorunları: HTTPS proxy kullanıyorsanız veya HTTP proxy üzerinden HTTPS sitelere erişiyorsanız ve proxy SSL denetimi yapıyorsa, runner sertifika doğrulama hatalarıyla karşılaşabilir. Bu durumda proxy'nin kök CA sertifikasının runner'ın güven deposuna eklenmesi gerekir. Bu, genellikle self-hosted runner kurulumlarında yönetilen karmaşık bir yapılandırmadır.

Proxy yapılandırma özeti

Araç/Bağlam Birincil proxy yapılandırma yöntemleri Notlar
Genel shell komutları HTTP_PROXY, HTTPS_PROXY, NO_PROXY ortam değişkenleri Standarttır ve curl, wget, apt, yum gibi araçlar tarafından geniş ölçüde dikkate alınır. http_proxy için büyük/küçük harf duyarsız destek yaygındır.
git HTTP_PROXY, HTTPS_PROXY ortam değişkenleri; git config git config kalıcı bir yapılandırma yazar; belirli git davranışları için veya ortam değişkenleri tutarlı biçimde uygulanmadığında kullanışlıdır.
npm, yarn HTTP_PROXY, HTTPS_PROXY ortam değişkenleri; npm config set Ortam değişkenleri çoğu zaman yeterlidir. Araca özgü yapılandırma komutları ayarları kalıcı kılar veya ortam değişkenlerini geçersiz kılar.
docker build docker build içinde --build-arg HTTP_PROXY bayrakları; Dockerfile içinde ARG/ENV Proxy ayarlarının Docker build bağlamında kullanılabilmesi için build argümanı olarak açıkça geçilmesi gerekir. ENV bunları sonraki RUN komutlarına sunar.
docker run (konteyner çalışma zamanı) docker run içinde -e HTTP_PROXY bayrakları; workflow container: tanımında env Proxy ortam değişkenlerini çalışan konteynere aktarır. Workflow'un job'ı veya step'i için bir konteyner çalıştırdığı durumlarda geçerlidir.
Java uygulamaları (Maven, Gradle) -Dhttp.proxyHost içeren _JAVA_OPTIONS, MAVEN_OPTS ortam değişkenleri Java uygulamaları HTTP istemcilerini yapılandırmak için özel sistem özelliklerine ihtiyaç duyar. Bunlar, JVM'in okuduğu ortam değişkenleriyle ayarlanabilir. Alternatif olarak araca özgü yapılandırma dosyaları kullanılabilir.
Güncellendi: 03.03.2026
Kategoriye dön

Bunları da okuyun

Guides 2 dk

Nike SNKRS için Proxy: Sınırlı Sürümler ve Çoklu Katılım

Nike SNKRS'ta birden fazla hesapla çekilişlere katılmak, IP limitlerini aşmak ve ban yemeden sınırlı sürümleri kapmak için residential veya mobil proxy kullanın. Hangi türü seçmeli ve nasıl kurmalı.

Guides 2 dk

iPhone'da Proxy Nasıl Kurulur (Wi-Fi ve SOCKS5)

iPhone'da proxy'yi yerleşik Wi-Fi ayarlarından (HTTP/HTTPS) veya SOCKS5 ile hücresel kapsama için Shadowrocket gibi bir uygulamayla kurun. Adım adım iOS kurulumu ve bilinmesi gereken kısıtlar.

Guides 3 dk

Tinder için proxy: çoklu hesap ve ban'lerden kaçınma

Birden fazla profil işletmek ve IP shadowban'lerinden kaçınmak için Tinder'da mobil veya residential proxy kullanın. Mobilin neden kazandığı, kurulumu ve proxy'nin şehri neden değiştirmediği.

Guides 2 dk

StockX için proxy: fiyat takibi ve hesap yönetimi

StockX'te fiyatları izlemek, birden fazla hesap çalıştırmak ve drop'ları yasaklanmadan kapmak için residential, ISP veya mobil proxy kullanın. Hangi türü seçeceğinizi ve nasıl kuracağınızı anlatıyoruz.

Guides 3 dk

OpenAI API için Proxy: Erişim, Hız Limitleri ve Kurulum

OpenAI API'yi residential veya ISP proxy üzerinden yönlendirerek desteklenen bölgelere erişin, 429 hız limitlerinden kaçının ve hesapları izole edin. Hangi proxy'yi seçmeli ve Python kurulum örnekleri.

Guides 1 dk

E2E testleri için Cypress'te proxy kurulumu

Cypress'te proxy kurulumu: HTTP_PROXY değişkenleri, cy-proxy-middleware ve coğrafi konuma bağlı içeriğin test edilmesi.

Proxy'lerimizi deneyin

100+ ülkede 20,000+ proxy

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.