AppCenter ve GitLab entegrasyonu

Merhaba!

BitBucket üzerinden GitLab ve AppCenter entegrasyonunu kurma deneyimimden bahsetmek istiyorum.

Bu tür bir entegrasyona duyulan ihtiyaç, Xamarin'de platformlar arası bir proje için kullanıcı arayüzü testlerinin otomatik başlatılmasını ayarlarken ortaya çıktı. Kesimin altında ayrıntılı eğitim!

* Kamuoyunun ilgisini çekerse platformlar arası koşullarda kullanıcı arayüzü testlerinin otomatikleştirilmesi hakkında ayrı bir makale hazırlayacağım.

Böyle bir materyali yalnızca bir kez kazdım Makale. Bu nedenle makalem birine yardımcı olabilir.

Görev: Ekibimizin sürüm kontrol sistemi olarak GitLab'ı kullanması koşuluyla, AppCenter'da kullanıcı arayüzü testlerinin otomatik başlatılmasını ayarlayın.

Sorun AppCenter'ın doğrudan GitLab ile entegre olmadığı ortaya çıktı. Çözümlerden biri olarak BitBucket üzerinden bypass seçildi.

Шаги

1. BitBucket'te boş bir depo oluşturun

Bunu daha detaylı anlatmaya gerek görmüyorum :)

2. GitLab'ı kurma

Depoya aktarırken/birleştirirken değişikliklerin BitBucket'e de yüklenmesine ihtiyacımız var. Bunu yapmak için bir çalıştırıcı ekleyin (veya mevcut .gitlab-ci.yml dosyasını düzenleyin).

Öncelikle before_scripts kısmına komutları ekliyoruz

 - git config --global user.email "user@email"
 - git config --global user.name "username"

Daha sonra istediğiniz aşamaya aşağıdaki komutu ekleyin:

- git push --mirror https://username:[email protected]/username/projectname.git

Benim durumumda, aldığım dosya bu:

before_script:
 - git config --global user.email "user@email"
 - git config --global user.name "username"

stages:
  - mirror
mirror:
  stage: mirror
  script:
    - git push --mirror https://****:*****@bitbucket.org/****/testapp.git

Derlemeyi başlatıyoruz, değişikliklerimizin/dosyalarımızın BitBucket üzerinde olup olmadığını kontrol ediyoruz.
* uygulamada görüldüğü gibi, SSH anahtarlarının ayarlanması isteğe bağlıdır. Ancak her ihtimale karşı aşağıda SSH aracılığıyla bağlantı kurmak için bir algoritma sunacağım.

SSH aracılığıyla bağlantı

Öncelikle bir SSH anahtarı oluşturmanız gerekiyor. Bu konuda birçok makale yazıldı. Örneğin, bakabilirsiniz burada.
Oluşturulan anahtarlar şuna benzer:
AppCenter ve GitLab entegrasyonu

İleri gizli anahtar GitLab'a değişken olarak eklenmesi gerekiyor. Bunu yapmak için Ayarlar > CI/CD > Ortam Değişkenleri'ne gidin. Gizli anahtarı kaydettiğiniz dosyanın TÜM içeriğini ekleyin. SSH_PRIVATE_KEY değişkenini çağıralım.
* bu dosya, genel anahtar dosyasından farklı olarak şu uzantıya sahip olmayacaktır:
AppCenter ve GitLab entegrasyonu

Harika, daha sonra genel anahtarı BitBucket'e eklemeniz gerekiyor. Bunu yapmak için depoyu açın ve Ayarlar > Erişim Anahtarları'na gidin.

AppCenter ve GitLab entegrasyonu

Burada Anahtar Ekle'ye tıklıyoruz ve ortak anahtarın bulunduğu dosyanın içeriğini (.pub uzantılı dosya) ekliyoruz.

Bir sonraki adım, gitlab-runner'daki tuşları kullanmaktır. Bu komutları kullanın, ancak yıldız işaretlerini ayrıntılarınızla değiştirin

image: timbru31/node-alpine-git:latest

stages:
  - mirror

before_script:
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh
  - ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
  - chmod 644 ~/.ssh/known_hosts
  - git config --global user.email "*****@***"
  - git config --global user.name "****"
  - ssh -T [email protected]

mirror:
  stage: mirror
  script:
    - git push --mirror https://****:****@bitbucket.org/*****/*****.git

3. AppCenter'ı Kurma

AppCenter üzerinde yeni bir uygulama oluşturuyoruz.

AppCenter ve GitLab entegrasyonu

Dili/platformu belirtin

AppCenter ve GitLab entegrasyonu

Daha sonra yeni oluşturulan uygulamanın Oluştur bölümüne gidin. Orada BitBucket'i ve 1. adımda oluşturulan depoyu seçiyoruz.

Harika, şimdi yapıyı yapılandırmamız gerekiyor. Bunu yapmak için dişli simgesini bulun

AppCenter ve GitLab entegrasyonu

Prensip olarak, oradaki her şey sezgiseldir. Bir proje ve konfigürasyon seçin. Gerekirse derlemeden sonra testlerin başlatılmasını etkinleştirin. Otomatik olarak başlayacaklar.

Temel olarak hepsi bu. Kulağa basit geliyor ama doğal olarak her şey yolunda gitmeyecek. Bu nedenle çalışırken karşılaştığım bazı hataları anlatacağım:

'ssh-keygen' dahili veya harici bir komut olarak tanınmıyor.

Ayrıca ssh-keygen.exe yolunun ortam değişkenlerine eklenmemesi nedeniyle de oluşur.
İki seçenek vardır: Ortam Değişkenlerine C:Program FilesGitusrbin ekleyin (makine yeniden başlatıldıktan sonra uygulanacaktır) veya konsolu bu dizinden başlatın.

AppCenter yanlış BitBucket hesabına mı bağlandı?

Sorunu çözmek için BitBucket hesabınızın AppCenter ile bağlantısını kaldırmanız gerekir. Yanlış BitBucket hesabına giriş yapıp kullanıcı profiline gidiyoruz.

AppCenter ve GitLab entegrasyonu

Ardından Ayarlar > Erişim Yönetimi > OAuth'a gidin

AppCenter ve GitLab entegrasyonu

Hesabınızın bağlantısını kaldırmak için İptal Et'i tıklayın.

AppCenter ve GitLab entegrasyonu

Bundan sonra gerekli BitBucket hesabıyla giriş yapmanız gerekir.
* Son çare olarak tarayıcınızın önbelleğini de temizleyin.

Şimdi AppCenter'a gidelim. Oluştur bölümüne gidin, BitBucket hesabının bağlantısını kes'i tıklayın

AppCenter ve GitLab entegrasyonu

Eski hesabın bağlantısı kaldırıldığında AppCenter'ı tekrar bağlarız. Şimdi istediğiniz hesaba geçin.

'eval' dahili veya harici bir komut olarak tanınmıyor

Komut yerine onu kullanıyoruz

  - eval $(ssh-agent -s)

Takım:

  - ssh-agent

Bazı durumlarda, C:Program FilesGitusrbinssh-agent.exe dosyasının tam yolunu belirtmeniz veya bu yolu, çalıştırıcının çalıştığı makinedeki sistem değişkenlerine eklemeniz gerekecektir.

AppCenter Build, eski bir bitBucket deposundan bir proje için derleme başlatmaya çalışıyor

Benim durumumda sorun birden fazla hesapla çalışmamdan kaynaklandı. Önbelleği temizlemeye karar verdim.

Kaynak: habr.com

Yorum ekle