Space
The intelligent code collaboration platform
Space is pivoting to SpaceCode, focused on Git hosting and code reviews. Learn more →
Space Automation’da Çoklu Depo Derlemeleri için Destek
Space Automation (CI/CD’den sorumlu JetBrains Space bölümü), yakın zamanda, Automation betiklerinizin çeşitli Git depolarıyla çalışmasına izin veren birkaç harika yeni özellik kazandı.
Değişiklikleri aşağıda kısaca sunuyoruz:
-
Bir iş (job) artık bir projedeki her depoya göz atabilir (sadece çalışan Otomasyon betiğini içerene değil).
-
Otomasyon artık belirli bir havuz, dal, dizin veya dosyadaki değişiklikler üzerinde çalıştırılan bir işi tetikleyebilir.
Bu nerede yararlı olabilir? Örneğin, mikro hizmetlere (her biri ayrı bir depoda) dayalı bir projeniz var ve bir bütün olarak proje karşısında çalışan entegrasyon testleri içeren ayrı bir deponuz var. Başka bir gerçek hayat örneği: Bir proje birden fazla depo içeriyor ve her deponun dokümantasyon içeren kendi doc/
klasörü var. Automation’ı kullanarak, tüm bu depoların doc/
klasörlerindeki değişiklikleri izleyen ve dahili bir dokümantasyon web sitesi oluşturup dağıtan bir iş ayarlayabilirsiniz.
Daha fazla ayrıntıyı okuyun!
Kaynak kodunu kontrol etme
Normalde, Space Automation’da "kaynak kodunu kontrol etme" adımını düşünmenize gerek yoktur. Bir iş her başlatıldığında, Automation geçerli dalı mevcut depodan (çalışan betiği içeren) klonlar.
Şimdi, bir iş bir proje içindeki başka bir deponun içeriğini gerektiriyorsa, ana depoya ek olarak bu depoyu da kontrol edebilirsiniz. Tek yapmanız gereken git
bloğunda ikinci deponun adını belirtmektir:
job("check out second repo") {
// check out second-repo to /mnt/space/work/repo-2
git("second-repository") {
// the default path is /mnt/space/work/$repoName
// but you can change it with cloneDir
cloneDir = "repo-2"
}
container("ubuntu") {
shellScript {
content = """
echo Directory structure
ls -R /mnt
echo Working dir is
pwd
"""
}
}
}
// the /mnt/space/work dir will contain the current and the second repo
// /mnt/space/work/main-repo ; /mnt/space/work/repo-2
// Working dir is /mnt/space/work/main-repo
Hepsi bu kadar da değil! Artık, depodan hangi verileri getirmek istediğinizi de seçebilirsiniz: etiketleri, belirli dalları veya revizyonları getirebilirsiniz. Automation belgelerinde daha fazlasını öğrenin
Bir dal, dizin veya dosyadaki değişikliklerle çalıştırılan bir işi tetikleme
Varsayılan olarak, bir deponun belirli bir dalına bir commit işlemi yapıldığında, Automation bu dalda bir betik yürütmesini tetikler. Elbette, bu işlem depodaki tüm dallarda çalışır. Betiği yalnızca belirli depolarda çalıştırmak için, gitPush
bloğunun içindeki branchFilter
parametresini kullanın.
Örneğin, sadece my-feature
dalında işler tetiklemek için:
job("Run on git push") {
startOn {
gitPush {
branchFilter {
+"refs/heads/my-feature"
}
}
}
}
branchFilter
‘ın Regex, dahil etme ve dışında bırakma kuralları ve joker karakter (wildcard) desteklediğini unutmayın.
Dizinlerde ve dosyalarda değişikliklerle çalışan bir işi tetiklemek için,pathFilter
bloğunu kullanın (branсhFilter
, ile birlikte; karmaşık filtreler yaratmayı destekler):
job("Run on git push") {
startOn {
gitPush {
pathFilter {
// include all from 'targets' directory
+"targets/**"
// exclude 'targets/main' directory
-"targets/main/**"
// include all 'Main.kt' files in the project
// As this rule is more specific,
// 'Main.kt' will be included even if
// it's located in 'targets/main'
+"**/Main.kt"
}
}
}
}
Başka bir depodaki değişikliklerle çalıştırılan bir işi tetikleme
Bazen, birkaç proje deposundan kaynak kodu kullanan bir derleme yapılandırmanız gerekebilir. Örneğin, diğer depolarda hiçbir .space.kts
dosyası bulunmazken, tüm proje için derleme betiğini içeren ayrı bir depo oluşturabilirsiniz.
Mümkün olan en basit örneğe bir göz atalım. Diyelim ki iki depolu bir projeniz var: first-repository
ve second-repository
. Şu .space.kts
dosyasını first-repository
‘ye eklersiniz:
job("Run on change in second-repository") {
startOn {
gitPush {
repository = "second-repository"
}
}
// don't forget to check out
// the content of second-repo
git("second-repository")
container("alpine") {
shellScript {
content = "ls /mnt/space/work"
}
}
}
Arayüzde nasıl görünüyor? Eğer first-repository
için İşler (Jobs) sayfasını açarsanız, yeni bir şey görmezsiniz, sadece normal bir iş çalışması:
Ancak şimdi eğer sayfayı second-repository
için iş listesine değiştirirseniz, şu anda seçili olan depoya referansları bulunan diğer depolardan işlerin olduğu çapraz referanslı işleri içerdiğini göreceksiniz. Bizim durumumuzda, tek iş, first-repository
‘den gelen işimizdir:
Elbette, daha derine inebilir ve depo tetikleyicisine bir seviye daha ekleyebilirsiniz: bir dala veya veri yoluna göre filtreleme. Automation belgelerinde. daha fazlasını bulabilirsiniz.
Böylece küçük duyurumuzun sonuna geldik. Yorumlarınızı aşağıya bırakmanızı ve bu yeni özellikleri denemenizi rica ederiz!