Ortam değişkenleri, bir işlem hattını özelleştirmek için yaygın olarak kullanılan ve herhangi bir aşamada uygulanabilen bir yöntemdir. Bu konu; yerleşik, özel ve ortak değişken grupları olmak üzere ortam değişkeni türlerini açıklar ve bunların nasıl kullanılacağını gösterir.
Ortam değişkenlerinin kaynakları
Yerleşik değişkenler
Alibaba Cloud DevOps işlem hatları, temel bilgiler ve kod kaynaklarıyla ilgili yerleşik değişkenler sağlar. İş akışınızı özelleştirmek için bu değişkenleri kullanabilirsiniz.
|
Modül |
Parametre |
Açıklama |
|
Temel bilgiler |
PIPELINE_ID |
İşlem hattının ID değeridir. |
|
BUILD_NUMBER |
1'den başlayarak her çalıştırmada artan işlem hattı çalışma numarasıdır. |
|
|
PIPELINE_NAME |
İşlem hattının adıdır. Örnek: |
|
|
BUILD_REMARK |
İşlem hattı çalışmasına ilişkin notlardır. |
|
|
BUILD_EXECUTOR |
İşlem hattını tetikleyen kullanıcıdır. Örnek: |
|
|
BUILD_MESSAGE |
İşlem hattı için tetikleme bilgilerini içerir. Örnek: |
|
|
PROJECT_DIR |
Komutların çalıştırıldığı çalışma dizinidir. Örnek: |
|
|
DATETIME |
Geçerli saattir. Örnek: |
|
|
TIMESTAMP |
Geçerli zaman damgasıdır. Örnek: |
|
|
Kod kaynağı (tek) |
CI_SOURCE_NAME |
Kod kaynağının adıdır. |
|
CI_COMMIT_REF_NAME |
İşlem hattı çalışması sırasında seçilen kod kaynağının dal veya etiket adıdır. Örnek: |
|
|
CI_COMMIT_TITLE |
Son commit işleminin mesajıdır. |
|
|
CI_COMMIT_SHA |
Son commit işleminin tam commit ID değeridir. Örnek: |
|
|
CI_COMMIT_ID |
Son commit işleminin 8 karakterlik kısa commit ID değeridir (Git için). Son commit işleminin revizyon numarasıdır (SVN için). |
|
|
Kod kaynakları (çoklu) |
CI_SOURCE_NAME_n |
n'inci kod kaynağının adıdır. |
|
CI_COMMIT_REF_NAME_n |
İşlem hattı çalışması sırasında seçilen n'inci kod kaynağının dal veya etiket adıdır. Örnek: |
|
|
CI_COMMIT_TITLE_n |
n'inci kod kaynağı için son commit işleminin mesajıdır. |
|
|
CI_COMMIT_SHA_n |
n'inci kod kaynağı için son commit işleminin tam commit ID değeridir. Örnek: |
|
|
CI_COMMIT_ID_n |
n'inci kod kaynağı için son commit işleminin 8 karakterlik kısa commit ID değeridir. |
|
|
Yapıt kaynağı |
CI_SOURCE_NAME |
Yapıt kaynağının adıdır. |
|
CI_SOURCE_URL |
Yapıt kaynağının URL değeridir. Örnek: |
|
|
CI_VERSION_NAME |
İşlem hattı çalışması sırasında seçilen yapıt kaynağının sürüm adıdır. Örnek: |
Birden fazla kod veya yapıt kaynağı bulunduğunda belirli bir kaynağa ait bilgilere erişmek için değişken adına sayısal bir sonek ekleyin.
Örneğin, bir işlem hattında bir Git kod kaynağı (kaynak 1), bir yapıt kaynağı (kaynak 2) ve bir SVN kod kaynağı (kaynak 3) bulunabilir. İşlem hattı çalıştırıldıktan sonra tüm değişkenlerin gerçek değerlerini çalışma ayrıntılarında görüntüleyebilirsiniz. Birden fazla kaynağa ait değişkenleri ayırt etmek için CI_COMMIT_REF_NAME_1 ve CI_COMMIT_REF_NAME_2 gibi sayısal sonekler kullanılır.
CI_COMMIT_REF_NAME değişkeninin değeri, işlem hattını tetiklediğinizde seçtiğiniz belirli dala veya etikete bağlıdır. İşlem hattını manuel olarak tetikleyip master dalını seçerseniz CI_COMMIT_REF_NAME değişkeninin değeri master olur. V1.0 etiketini seçerseniz değer V1.0 olur. Bu çalışma zamanı seçimi, işlem hattını farklı dallarda veya etiketlerde çalıştırmanıza olanak tanır ve değişkenin değeri buna göre güncellenir.
Bir işlem hattı çalışmasını tetiklediğinizde, çalışma iletişim kutusunda belirli bir dal veya etiket seçebilirsiniz. Seçilen değer, CI_COMMIT_REF_NAME değişkeninin çalışma zamanı değeri haline gelir.
Yerleşik değişkenleri kullanırken aşağıdaki kısıtlamalara ve özel senaryolara dikkat edin:
Çok kaynaklı değişken belirsizliği — Bir işlem hattında birden fazla kod kaynağı bulunduğunda,
CI_COMMIT_REF_NAMEgibi indekslenmemiş değişkenleri doğrudan kullanmayın. Sistem varsayılan olarak ilk kaynağı kullanır ancak sonuç öngörülemez olabilir. Belirli bir kod kaynağına başvurmak için her zamanCI_COMMIT_REF_NAME_1veyaCI_COMMIT_REF_NAME_2gibi sayısal sonekli indekslenmiş değişkenler kullanın.Git değişkeni ön koşulları —
CI_COMMIT_TITLE,CI_COMMIT_SHAveCI_COMMIT_IDgibi Git ile ilgili yerleşik değişkenler yalnızca işlem hattında bir kod çekme (checkout) adımı çalıştırıldıktan sonra doldurulur. Kod çekilmezse bu değişkenler boş kalır.-
Değişken işleme kısıtlamaları — Alibaba Cloud DevOps Flow, yerleşik değişkenler üzerinde (örneğin
CI_COMMIT_ID) alt dize çıkarma veya düzenli ifade eşleştirme gibi doğrudan dize işlemlerini desteklemez. Yerleşik bir değişken değerini işlemek için bunu bir kabuk betiğinde özel bir değişkene atayın ve ardından işlemleri özel değişken üzerinde gerçekleştirin:# Assign a built-in variable to a custom variable for processing MY_SHORT_SHA=$(echo $CI_COMMIT_SHA | cut -c1-8) echo "MY_SHORT_SHA=$MY_SHORT_SHA" >> "$FLOW_ENV" CI_WORKSPACE kapsamı —
CI_WORKSPACEdeğişkeni yalnızca geçerli derleme ortamında geçerlidir. Ana bilgisayar dağıtımı (ECS) senaryolarında bu değişken boş olabilir veya beklenmeyen bir yolu işaret edebilir. ECS örneğindeki dosyaları konumlandırmak içinCI_WORKSPACEdeğişkenine güvenmeyin. Bunun yerine mutlak yollar kullanın veya hedef dizin yolunu içeren özel bir değişken yapılandırın.Eksik yerleşik değişkenler — Yerleşik değişkenler arasında geçerli depo proje adı veya tam Git URL'si bulunmaz. Bu bilgilere erişmek için manuel olarak özel bir değişken yapılandırın veya Codeup etki alanını depo yoluyla birleştirerek URL'yi oluşturun.
Özel değişkenler
Yerleşik değişkenlere ek olarak Alibaba Cloud DevOps Flow özel değişkenleri de destekler. Her özel değişken, tanımlandığı işlem hattıyla sınırlıdır. Özel bir değişken oluşturmak için bir işlem hattı seçin, Düzenle'yi tıklayın ve ardından Variables and Cache sekmesine gidin. Alibaba Cloud DevOps Flow dize ve numaralandırma değişkeni türlerini destekler.
Bu sekmede string variables ve runtime-selected variables için yapılandırma alanları bulunur.
Dize değişkenleri
Variables and Cache sekmesinde, String Variables bölümünde New Variable öğesini tıklayın.
-
Bir Variable Name ve bir Default Value girin. Ayrıca private mode ve runtime settings seçeneklerini yapılandırabilirsiniz.
Variable Name: Ad tire (-) karakteri içermemelidir.
private mode: Etkinleştirildiğinde bu mod değeri gizleyerek yürütme günlüklerinde görünmesini engeller. Kullanıcı adları ve parolalar gibi hassas bilgiler için bu modu kullanın.
runtime settings: Değişkenin değerinin çalışma zamanında zorunlu olup olmadığını kontrol eder. Etkinleştirildiğinde, işlem hattını her çalıştırdığınızda bir değer sağlamanız gerekir.
Daha fazla değişken ekleyebilir veya mevcut olanları silebilirsiniz.
Add düğmesini tıklayın ve ardından işlem hattını kaydedin. Artık değişkeni Ortam değişkenlerini kullanma bölümünde açıklandığı gibi kullanabilirsiniz.
Çalışma zamanında seçilen değişkenler
Variables and Cache sekmesinde, Runtime-Selected Variables bölümünde New Variable öğesini tıklayın.
-
Bir Variable Name girin ve Options değerlerini tanımlayın.
Değişkenin değeri için birden çok seçenek eklemek üzere Add Option öğesini tıklayın.
Bir seçeneği varsayılan seçim yapmak için Default Value seçeneğini etkinleştirin.
Add düğmesini tıklayın ve ardından işlem hattını kaydedin. Artık değişkeni Ortam değişkenlerini kullanma bölümünde açıklandığı gibi kullanabilirsiniz.
İşlem hattını çalıştırdığınızda bu değişken için bir değer seçmeniz istenir.
Özel değişkenler için en iyi uygulamalar
Adlandırma çakışmalarından kaçının — Özel değişken adları,
image,tagveyaversiongibi sistem ayrılmış sözcükleriyle veya yerleşik parametrelerle çakışmamalıdır. Çakışmalar, görüntü derleme veya dağıtım adımlarında beklenmeyen hatalara neden olabilir. Değişken adları bir harfle başlamalı, yalnızca harf, rakam ve alt çizgi içermeli ve 1 ila 64 karakter uzunluğunda olmalıdır.Değişken değerlerindeki özel karakterleri yönetin — Parola gibi bir değişken değeri
@gibi özel karakterler içeriyorsa, değerin doğrudan bir URL'ye eklenmesi biçim hatalarına neden olur. Özel karakterleri URL kodlamasına tabi tutun (örneğin@karakterini%40ile değiştirin) veya kimlik doğrulamayı sistemin otomatik olarak yönetmesine izin vermek için private mode değişkenlerini kullanın.Dinamik kod kaynağı izinleri — Dinamik olarak yapılandırılmış bir kod deposuna erişirken işlem hattı yürütücünün kimliğiyle otomatik olarak kimlik doğrulaması yapmaz. Özel bir depoya erişmek için Git kullanıcı adını ve erişim belirtecini özel değişkenler olarak yapılandırın veya erişim izinlerini devralmak için depoyu bir işlem hattı kaynağı olarak ekleyin.
YAML dosyalarında değişken başvurularını kaçış karakterleriyle koruyun —
kubectl applygibi senaryolarda YAML dosyalarındaki${}sözdizimi yanlışlıkla işlem hattı değişkeni başvurusu olarak yorumlanabilir. Bunu önlemek için otomatik değişken ayrıştırmayı devre dışı bırakmak amacıyla Variable Validation seçeneğini etkinleştirin veya orijinal dizeyi korumak için$${}kaçış sözdizimini kullanın. Örneğin,${2}yerine$${2}yazın.
Ortak değişken grupları
Ortak değişken grubu, kuruluşunuzun merkezi olarak yönettiği ortam değişkenlerinden oluşan bir koleksiyondur. Değişkenlerini kullanmak için bir işlem hattını bir grupla ilişkilendirebilirsiniz.
Variables and Cache sekmesinde, Common Variable Group bölümünde Associate Variable Group öğesini tıklayın. Açılan listeden bir değişken grubu seçin ve işlem hattıyla bağlantı kurmak için OK düğmesini tıklayın.
Bu bölümde ilişkili değişken gruplarının ayrıntılarını görüntüleyebilir veya bağlantılarını kaldırabilirsiniz. İşlem hattını kaydettikten sonra değişkenleri Ortam değişkenlerini kullanma bölümünde açıklandığı gibi kullanabilirsiniz.
Ortam değişkenlerini kullanma
Değişkenleri tanımladıktan sonra, bunlara işlem hattının herhangi bir yerinden ${XXX} sözdizimini kullanarak başvurabilirsiniz. Sistem değişkenleri aşağıdaki öncelik sırasına göre çözümler:
Adım çıktı değişkenleri > İşlem hattı çalışma zamanı giriş değişkenleri > İşlem hattı değişkenleri > Ortak değişken grubu değişkenleri.
Bir işlem hattını aynı ada sahip bir değişken içeren birden fazla ortak değişken grubuyla ilişkilendirirseniz en son ilişkilendirilen gruptaki değer öncelik kazanır.
Aşağıdaki bölümlerde komut yürütme, ana bilgisayar dağıtımları, görüntü derleme bağımsız değişkenleri, yapılandırma dosyaları ve veri aktarımı dahil olmak üzere ortam değişkenlerinin yaygın kullanım örnekleri sunulmaktadır.
Komutlarda değişken kullanma
Bir yapılandırma dosyasındaki parametreyi değiştirmek için değişken kullanabilirsiniz. Örneğin, a.conf dosyasındaki key parametresinin değerini 123 değerinden abc adlı bir ortam değişkeninin değerine değiştirmek isteyebilirsiniz.
Bir kabuk betiği adımında sed komutunu kullanarak parametre değerini ortam değişkeninin değeriyle değiştirin. $ cat a.conf key=123 $ sed -i "s/key=123/key=${abc}/g" a.conf $ cat a.conf key=abc_value

İşlem hattı Variables and Cache alanında abc değişkeninin varsayılan değerini abc_value olarak ayarlayın.
Ana bilgisayar dağıtımında değişkenler
Ana bilgisayar dağıtım mantığını kontrol etmek için dağıtım betiğinizde doğrudan ${XXX} sözdizimini kullanarak ortam değişkenlerine başvurabilirsiniz. İşlem hattı çalıştırıldıktan sonra ana bilgisayar dağıtım adımının günlüklerini kontrol ederek sistemin değişkenin değerini doğru şekilde ilettiğini doğrulayabilirsiniz.
Görüntü derleme bağımsız değişkeni olarak değişkenler
Bir görüntü derleme sırasında işlem hattı ortam değişkenlerini bağımsız değişken olarak kullanmanız gerekiyorsa bunları aşağıdaki gibi yapılandırın.
Görüntü derleme adımında belirtilen bir konteyner ortamı kullanın. Derleme bağımsız değişkenlerine özel bir bağımsız değişken ekleyin ve
${XXX}biçimini kullanarak ortam değişkenini buna atayın. Sistem bağımsız değişkeni derleme komutuna--build-argbayrağını kullanarak iletir.
Görüntü derleme adımının Build Parameters bölümünde abc=${abc} gibi özel bir bağımsız değişken ekleyin. Bu bağımsız değişken Docker derleme komutuna bir --build-arg olarak iletilir.

Dockerfile dosyanızda bağımsız değişkene
ARG argNamekullanarak başvurun.
FROM <base-image>
ARG argName
RUN echo $argName
Yapılandırma dosyalarında değişken kullanma
Bir yapılandırma dosyasındaki parametreyi ortam değişkeni kullanarak değiştirmeniz gerekiyorsa şu adımları izleyin. Örneğin, a.conf dosyasındaki username parametresini bir işlem hattı değişkeniyle değiştirmek için:
a.conf dosyasında satırı
username = ${abc}olarak değiştirin.İşlem hattının ortam değişkenlerinde
abcdeğişkenini yapılandırın ve varsayılan değerinimy_name_is_hanmeimeiolarak ayarlayın.İşlem hattına bir iş ekleyin. Utilities bölümünden Replace EnvVar in File adımını ekleyin. Source File Path alanına yapılandırma dosyasının yolunu girin. Target File Path isteğe bağlıdır. Hedef yol belirtirseniz adım yeni bir dosya oluşturur. Aksi takdirde özgün dosyayı değiştirir.
Bu örnekte Source File Path değeri a.conf ve Target File Path değeri b.conf olarak ayarlanmıştır.
Sonucu kontrol edin. Adım,
a.confdosyasındakiusernameyer tutucusunu yenib.confdosyasındaki değişkenin değeriyle değiştirir ve dosya artıkmy_name_is_hanmeimeideğerini içerir. Not: Adımlar yalnızca aynı iş içinde olduklarında bir çalışma alanını paylaşır.
Değişken aktarma
İşlem hattı yapılandırma sayfasında tanımlanan ortam değişkenleri statiktir. Ancak çalışan bir adımın çıktısından bir ortam değişkeni oluşturup bunu sonraki adımlara veya işlere aktarmanız gerekebilir. Bunu iki şekilde yapabilirsiniz:
Bir iş içinde değişken aktarma: 1. Adım özel bir ortam değişkeni oluşturur ve 2. Adım bunu kullanır.
İşler arasında değişken aktarma: 1. İş bir ortam değişkeni oluşturur ve 2. İş bunu kullanır.
Önemli: Farklı derleme ortamları için farklı sözdizimleri kullanmanız gerekir. Ortam değişkenlerini enjekte etme sözdizimi şöyledir: default environment içinde echo 'USER_abc=123' > .env kullanın (değişken adı USER_ ile başlamalıdır); specified container environment or default VM environment içinde echo "yaojia_Test=myParam" >> "$FLOW_ENV" kullanın.

1. İş'te ortam değişkenini işlem hattı düzeyine yükseltmek için Add Step > Utilities > Set Variables yolunu izleyerek bir adım ekleyebilirsiniz.
Konteyner veya VM ortamı
Bir iş içinde değişken aktarma
Bu senaryoda tek bir iş içinde ortam değişkenlerini paylaşırsınız. Örneğin, 1. Adım bir yaojia_Test=myParam değişkeni oluşturur ve 2. Adım buna ${yaojia_Test} kullanarak başvurur.
Önceki bir adımda değişkeni $FLOW_ENV dosyasına eklemek için echo "yaojia_Test=myParam" >> "$FLOW_ENV" komutunu çalıştırarak ortam değişkenini enjekte edebilirsiniz.
# Execution log of Step 2
echo $yaojia_Test
myParam
# [Success]
İşler arasında değişken aktarma
Bu senaryoda bir işlem hattındaki birden fazla iş arasında ortam değişkenlerini paylaşırsınız. Örneğin, 1. İş yaojia_Test=myParam değişkenini oluşturur ve 2. İş buna ${yaojia_Test} kullanarak başvurur.
İş'teki bir adımda değişkeni
$FLOW_ENVdosyasına ekleyerek ortam değişkenini enjekte edin.İş'te ortam değişkenini işlem hattı düzeyine yükseltmek için yolunu izleyerek başka bir adım ekleyin.
İş'te daha sonra değişkene başvurmak için ${yaojia_Test} kullanabilirsiniz.
1. İş değişkeni enjekte edip yükselttikten sonra 2. İş buna ${yaojia_Test} kullanarak başvurabilir. # Execution log of Job 2 echo $yaojia_Test myParam # [Success]
Konteyner veya VM ortamı için kullanım notları
-
Üzerine yazmayı önlemek için ekleme modunu kullanın — Değişkenleri
$FLOW_ENVdosyasına yazarken ekleme operatörünü (>>) kullanın. Önceki tüm değişkenleri değiştirdiği için üzerine yazma operatörünü (>) kullanmayın.# Correct: append mode preserves existing variables echo "VAR_A=value1" >> "$FLOW_ENV" echo "VAR_B=value2" >> "$FLOW_ENV" # Incorrect: overwrite mode — VAR_A is lost echo "VAR_A=value1" > "$FLOW_ENV" echo "VAR_B=value2" > "$FLOW_ENV" Aynı adımda okuma kısıtlaması —
echokullanarak bir değişkeni$FLOW_ENVdosyasına yazdıktan sonra$KEYreferansını kullanarak aynı adımda hemen değişkeni okuyamazsınız. Değişkenler yalnızca geçerli adım tamamlandıktan sonra çalışma zamanı bağlamına yüklenir. Bir değişken değerini doğrulamak için bunu sonraki bir adımda okuyun.Kubernetes dağıtımı için geçici çözüm — Kabuk betiği adımında tanımlanan bir değişken Kubernetes dağıtım adımında kullanılamıyorsa veya varsayılan bir değer döndürüyorsa kabuk adımından sonra bir Set Variables adımı ekleyin ( yolunu izleyin). Bu adımda değişkeni açıkça Kubernetes adımının başvurabileceği yeni bir değişken adına atayın.
-
Sürüm numarasını dinamik olarak çıkarın —
pom.xmlgibi bir derleme yapıtından bir sürüm numarası çıkarmak ve bunu aşağı akış Docker görüntüsü derleme adımlarına aktarmak için:# Extract the version from pom.xml VERSION=$(grep -m1 '<version>' pom.xml | sed 's/.*<version>\(.*\)<\/version>.*/\1/') echo "IMAGE_VERSION=$VERSION" >> "$FLOW_ENV" -
Değişken ayarlama sorunlarını giderin — Değişkenler bir konteyner ortamında etkili olmuyorsa veya hatalara neden oluyorsa aşağıdakileri doğrulayın:
Değişkeni işlem hattı düzeyine yükseltmek için bir Set Variables adımı eklediniz.
Sözdizimi hedef ortamla eşleşiyor. Konteyner veya VM ortamı için
echo "KEY=VALUE" >> "$FLOW_ENV"kullanın. Yalnızca varsayılan ortam için geçerli olanecho 'USER_KEY=VALUE' > .envsözdizimini kullanmayın.
SSS
Çok ortamlı dağıtımlar için veya derleme hedeflerini dinamik olarak seçmek için ortam değişkenlerini nasıl kullanırım?
Çok ortamlı dağıtım — Geliştirme, test ve üretim gibi farklı aşamalar için ayrı işlem hatları oluşturun. Her işlem hattında hedef ortama özgü değerlere (ortam tanımlayıcıları veya yapılandırma dosyası yolları gibi) sahip özel değişkenler yapılandırın. Bu yaklaşım, derleme betiklerinizi değiştirmeden farklılaştırılmış dağıtımlar yapmanızı sağlar.
Dinamik derleme hedefi seçimi — Alibaba Cloud DevOps Flow, işlem hattı kullanıcı arabiriminden belirli derleme hedeflerini (belirli bir JAR dosyası veya hizmet modülü gibi) seçmeyi desteklemez. Geçici çözüm olarak hedef hizmet dizini yolunu belirtmek için bir runtime-selected variable tanımlayın. Derleme komutlarınızda bu değişkene başvurarak derleme hedefini dinamik olarak seçin ve yapıt yükleme yolunu yalnızca seçilen değişken değerine karşılık gelen dizini içerecek şekilde yapılandırın.