Halo halo!
Saya ingin berbicara tentang pengalaman saya dalam mengatur integrasi GitLab dan AppCenter via BitBucket.
Perlunya integrasi seperti itu muncul selama pengaturan peluncuran otomatis tes UI untuk proyek lintas platform di Xamarin. Tutorial terperinci di bawah potongan!
* Pada otomatisasi pengujian UI dalam kondisi lintas platform, saya akan membuat artikel terpisah jika publik tertarik.
Materi seperti itu hanya menggali satu artikel . Karenanya, artikel saya dapat membantu seseorang.
Tugas : Siapkan peluncuran otomatis pengujian UI di AppCenter, sementara tim kami menggunakan GitLab sebagai sistem kontrol versi.
Masalahnya ternyata AppCenter tidak berintegrasi langsung dengan GitLab. Sebagai salah satu solusi, bypass melalui BitBucket dipilih.
Langkah-langkah
1. Buat repositori BitBucket kosong
Saya tidak melihat perlunya untuk menjelaskannya secara lebih rinci :)
2. Konfigurasikan GitLab
Kita perlu itu ketika mendorong / menggabungkan perubahan repositori dituangkan juga di BitBucket. Untuk melakukan ini, tambahkan pelari (atau edit file .gitlab-ci.yml yang ada).
Pertama, tambahkan perintah ke bagian before_scripts
- git config --global user.email "user@email" - git config --global user.name "username"
Kemudian tambahkan perintah berikut ke tahap yang diinginkan:
- git push --mirror https://username:password@bitbucket.org/username/projectname.git
Dalam kasus saya, saya mendapat file seperti itu
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
Kami meluncurkan build, memeriksa apakah perubahan / file kami didasarkan pada BitBucket.
* Seperti yang telah ditunjukkan oleh praktik, mengonfigurasi kunci SSH adalah opsional. Tapi, untuk berjaga-jaga, saya akan memberikan algoritma pengaturan koneksi melalui SSH di bawah ini
Koneksi SSHPertama, Anda perlu membuat kunci SSH. Banyak artikel telah ditulis tentang ini. Sebagai contoh, Anda dapat melihat di sini .
Kunci yang dihasilkan terlihat seperti ini:

Selanjutnya, kunci rahasia perlu ditambahkan sebagai variabel di GitLab. Untuk melakukan ini, buka Pengaturan> CI / CD> Variabel Lingkungan. Tambahkan SEMUA konten file di mana Anda menyimpan kunci pribadi. Beri nama variabel SSH_PRIVATE_KEY.
* file ini, tidak seperti file kunci publik, tidak akan memiliki ekstensi

Hebat, maka Anda perlu menambahkan kunci publik ke BitBucket. Untuk melakukan ini, buka repositori, buka Pengaturan> Kunci Akses.

Kemudian klik Tambah Kunci dan rekatkan isi file dengan kunci publik (file dengan ekstensi .pub).
Langkah selanjutnya adalah menggunakan kunci di gitlab-runner. Gunakan perintah ini, tetapi tentukan data Anda bukan tanda bintang
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 git@bitbucket.org mirror: stage: mirror script: - git push --mirror https://****:****@bitbucket.org/*****/*****.git
3. Konfigurasikan AppCenter
Kami membuat aplikasi baru di AppCenter.

Tentukan bahasa / platform

Selanjutnya, buka bagian Build dari aplikasi yang baru dibuat. Kami memilih BitBucket dan repositori yang dibuat pada langkah 1 di sana.
Oke, sekarang Anda perlu mengkonfigurasi build. Untuk melakukan ini, cari ikon gir

Pada prinsipnya, semuanya intuitif di sana. Kami memilih proyek dan konfigurasi. Jika perlu, aktifkan peluncuran tes setelah pembangunan. Mereka akan mulai secara otomatis.
Pada prinsipnya, itu saja. Kedengarannya mudah, tetapi secara alami, semuanya tidak akan berjalan lancar. Oleh karena itu, saya akan menjelaskan beberapa kesalahan yang saya temui saat bekerja:
'ssh-keygen' tidak dikenali sebagai perintah internal atau eksternal.Itu muncul karena jalan ke ssh-keygen.exe tidak ditambahkan ke variabel lingkungan.
Ada dua opsi: tambahkan C: \ Program Files \ Git \ usr \ bin ke Variabel Lingkungan (akan berlaku setelah me-reboot mesin), atau mulai konsol dari direktori ini.
AppCenter terhubung dengan akun BitBucket yang salah?Untuk mengatasi masalah ini, Anda harus membuka ikatan akun BitBucket dari AppCenter. Kami masuk ke akun BitBucket yang salah, buka profil pengguna.

Selanjutnya, buka Pengaturan> Manajemen Akses> OAuth

Klik Cabut untuk melepaskan ikatan akun.

Setelah itu, Anda harus masuk di bawah akun BitBucket yang diperlukan
* Dalam kasus ekstrim, hapus juga cache browser
Sekarang pergi ke AppCenter. pergi ke bagian Bangun, klik Putuskan sambungan akun BitBucket

Ketika akun lama dilepaskan, kami mengikat AppCenter lagi. Sekarang ke akun yang diinginkan.
'eval' tidak diakui sebagai perintah internal atau eksternalGunakan sebagai ganti perintah
- eval $(ssh-agent -s)
Perintah:
- ssh-agent
Dalam beberapa kasus, Anda harus menentukan path lengkap ke C: \ Program Files \ Git \ usr \ bin \ ssh-agent.exe, atau menambahkan path ini ke variabel sistem pada mesin tempat pelari menjalankan
AppCenter Build mencoba meluncurkan build untuk proyek dari repositori bitBucket yang tidak relevanDalam kasus saya, masalah muncul karena saya bekerja dengan beberapa akun. Saya memutuskan untuk menghapus cache.