Expressions - 2
1) Metin İşleme Fonksiyonları
contains(search, item)
Belirtilen
search
dizesindeitem
ifadesi geçip geçmediğini kontrol eder.Örnek:
if: ${{ contains('Hello world', 'llo') }}
→true
döner, çünkü “llo” “Hello world” içinde geçiyor.Bir YAML satırında:
if: ${{ contains(github.event.head_commit.message, '[deploy]') }}
Böylece commit mesajında [deploy]
geçiyorsa job ya da step çalışır.
startsWith(searchString, searchValue)
searchString
değeri,searchValue
ile başlıyor mu diye bakar.Gerçek senaryoda branch kontrolü:
if: ${{ startsWith(github.ref, 'refs/heads/feature-') }}
Eğer branch adı feature-
ile başlıyorsa step’i çalıştır.
endsWith(searchString, searchValue)
searchString
değeri,searchValue
ile bitiyor mu diye bakar.Örnek:
Tag kontrolü:
if: ${{ endsWith(github.ref, '/v1.0.0') }}
Branch ya da tag 'v1.0.0'
ile bitiyorsa çalıştır.
2) Dize Birleştirme ve Biçimlendirme
format(string, replaceValue0, replaceValue1, ...)
Metin içindeki
{0}
,{1}
,{2}
alanlarını sırasıyla girilen değerlerle değiştirir.Örnek:
format('Hello {0} {1}', 'Mona', 'Octocat')
→"Hello Mona Octocat"
.Bir “echo” komutunda kullanmak için:
run: echo "${{ format('Deploying version {0} to {1}', '1.2.3', 'production') }}"
join(array, optionalSeparator)
Array (dizi) elemanlarını birleştirir, istersen araya özel bir ayırıcı (separatör) koyar.
Örnek:
join(github.event.issue.labels.*.name, ', ')
→ Issue üzerindeki label isimlerini virgülle birleştirir.Ya da manuel array:
join(['apple','orange','banana'], ' | ')
→"apple | orange | banana"
.
3) JSON İşleme
toJSON(value)
Verilen değişkeni ya da nesneyi JSON formatına çevirir (string olarak).
Örnek:
if: ${{ toJSON(job) }}
→ O anki job nesnesini JSON’a döndürür (daha çok debug amaçlı).Step içinde:
run: echo '${{ toJSON(github.event) }}'
Bu şekilde event içeriğini JSON formatında görürsün.
fromJSON(value)
JSON formatındaki bir string’i GitHub Actions içinde bir nesneye dönüştürür.
Örnek:
fromJSON('{"name": "Mona", "role": "Octocat"}').role
→"Octocat"
.Eğer
client_payload
’da karmaşık bir JSON varsa bu fonksiyonla parse edebilirsin.
4) Dosya Hash Fonksiyonu
hashFiles(path)
Belirtilen dosya/dosyaların içeriğini hash’leyip tek bir hash döndürür.
Örnek:
hashFiles('**/package-lock.json', '**/Gemfile.lock')
→ Bu dosyaların toplu içeriğinin bir karmasını (hash) üretir.Genelde cache kullanırken “cache key” üretmek için kullanılır. Örnek:
- name: Cache dependencies
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
Last updated
Was this helpful?