Birden fazla grup projesi (frontend, backend vb.) ile çalışıyorsunuz ve tek bir Dockerfile'ı merkezi bir depoda yönetmek istiyorsunuz. Bu, tüm grup uygulamalarının aynı Dockerfile'ı kullanmasını ve buna bağlı olarak kod tekrarının önüne geçilmesini sağlayacaktır. Ancak, GitLab CI/CD'de include kullanarak bir başka depodan Dockerfile'ı almak istediğinizde,.pipeline sırasında docker build komutu çalıştırıldığında dosya bulunamadığı için hata alırsınız. Bunun nedeni, include sadece CI YAML dosyalarını içe aktarması, ancak depo dosyalarına erişim sağlamamasıdır.
CI_JOB_TOKEN ve GitLab Deposu Dosyaları API'sinin Kullanımı
GitLab CI/CD, bir işin çalıştırılması sırasında bir CI_JOB_TOKEN oluşturur ve bu token iş boyunca geçerli olur. İş bittikten sonra token erişimi iptal edilir. Bu, pipeline'nin başka bir proje中的 dosyaları güvenli bir şekilde almasını sağlar.
Uygulama Adımları
- Diğer Projelere Erişimi İzne Bağlama:
cicd-templatedeposundaSettings>CI/CD>Job token permissions>Fine-grained permissions>Addkelvyn-labs/nextjs-cicd-template - Dockerfile'ı Almak:
.build-jobişindeCICD_TEMPLATE_PROJECT_ID,CICD_TEMPLATE_REFveCICD_TEMPLATE_DOCKERFILE_PATHdeğişkenlerini ayarlayın. Ardından,curlkomutunu kullanarak Dockerfile'ı alın. - Docker Görüntüsünü Oluşturmak:
docker buildx buildkomutunu kullanarak Dockerfile'ı kullanarak bir görüntü oluşturun ve bunu kaydedin.
Neden Bu Yöntem Daha İyidir
- Merkezi Kontrol: Dockerfile tek bir depoda yönetilir ve platform ekibi derleme mantığını kontrol eder.
- Tekrarı Önleme: Dockerfile'ın kopyalanması önlenir.
- Güvenli: Erişim, allowlist ve kullanıcı izinleri aracılığıyla kontrol edilir.
- Esneklik: Herhangi bir hizmet için (FE/BE vb.) kullanılabilir.
İleri Düzey İpuçları
- Sürüm Sabitleme:
masteryerine belirli bir sürüm kullanın. - Tekrar Kullanılabilirlik: Değişkenleri ayarlayarak başka projelerde de kullanın.
- Ne Zaman Kullanılmamalıdır: Dockerfile birden fazla dosyaya bağımlıysa, o zaman
git cloneyerinecurlkullanmayın.
Gelecek için, CI/CD pipeline'larınızı daha etkili ve güvenli bir şekilde yönetmek için GitLab CI/CD'nin sunduğu olanakları keşfedin.
Yapay zeka özeti
Learn how to securely fetch and reuse Dockerfiles from a central GitLab repository using CI job tokens for scalable, duplication-free CI/CD pipelines.