Penyepaduan AppCenter dan GitLab

Tryam, hello!

Saya ingin bercakap tentang pengalaman saya dalam menyediakan GitLab dan integrasi AppCenter melalui BitBucket.

Keperluan untuk penyepaduan sedemikian timbul apabila menyediakan pelancaran automatik ujian UI untuk projek merentas platform pada Xamarin. Tutorial terperinci di bawah potongan!

* Saya akan membuat artikel berasingan tentang mengautomasikan ujian UI dalam keadaan merentas platform jika orang ramai berminat.

Saya hanya menggali satu bahan sedemikian artikel. Oleh itu, artikel saya boleh membantu seseorang.

Petugas: Sediakan pelancaran automatik ujian UI pada AppCenter, memandangkan pasukan kami menggunakan GitLab sebagai sistem kawalan versi.

masalah Ternyata AppCenter tidak berintegrasi secara langsung dengan GitLab. Bypass melalui BitBucket telah dipilih sebagai salah satu penyelesaian.

Π¨Π°Π³ΠΈ

1. Cipta repositori kosong pada BitBucket

Saya tidak nampak keperluan untuk menerangkan ini dengan lebih terperinci :)

2. Menyediakan GitLab

Kami memerlukannya apabila menolak/menggabungkan ke dalam repositori, perubahan juga dimuat naik ke BitBucket. Untuk melakukan ini, tambahkan pelari (atau edit fail .gitlab-ci.yml sedia ada).

Mula-mula kita tambah arahan pada bahagian before_scripts

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

Kemudian tambah arahan berikut ke peringkat yang dikehendaki:

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

Dalam kes saya, ini adalah fail yang saya dapat:

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 melancarkan binaan, pastikan perubahan/fail kami ada pada BitBucket.
* seperti yang ditunjukkan oleh amalan, menyediakan kunci SSH adalah pilihan. Tetapi, untuk berjaga-jaga, saya akan menyediakan algoritma untuk menyediakan sambungan melalui SSH di bawah

Sambungan melalui SSH

Mula-mula anda perlu menjana kunci SSH. Banyak artikel telah ditulis mengenai perkara ini. Sebagai contoh, anda boleh melihat di sini.
Kekunci yang dihasilkan kelihatan seperti ini:
Penyepaduan AppCenter dan GitLab

Seterusnya Kunci rahsia perlu ditambah sebagai pembolehubah kepada GitLab. Untuk melakukan ini, pergi ke Tetapan > CI/CD > Pembolehubah Persekitaran. Tambahkan SEMUA kandungan fail yang anda simpan kunci rahsia. Mari kita panggil pembolehubah SSH_PRIVATE_KEY.
* fail ini, tidak seperti fail kunci awam, tidak akan mempunyai sambungan
Penyepaduan AppCenter dan GitLab

Hebat, seterusnya anda perlu menambah kunci awam pada BitBucket. Untuk melakukan ini, buka repositori dan pergi ke Tetapan > Kekunci Akses.

Penyepaduan AppCenter dan GitLab

Di sini kita klik Tambah Kunci dan masukkan kandungan fail dengan kunci awam (fail dengan sambungan .pub).

Langkah seterusnya ialah menggunakan kekunci dalam gitlab-runner. Gunakan arahan ini, tetapi gantikan asterisk dengan butiran anda

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. Menyediakan AppCenter

Kami mencipta aplikasi baharu di AppCenter.

Penyepaduan AppCenter dan GitLab

Nyatakan bahasa/platform

Penyepaduan AppCenter dan GitLab

Seterusnya, pergi ke bahagian Bina pada aplikasi yang baru dibuat. Di sana kami memilih BitBucket dan repositori yang dibuat dalam langkah 1.

Bagus, sekarang kita perlu mengkonfigurasi binaan. Untuk melakukan ini, cari ikon gear

Penyepaduan AppCenter dan GitLab

Pada dasarnya, semua yang ada adalah intuitif. Pilih projek dan konfigurasi. Jika perlu, dayakan pelancaran ujian selepas binaan. Mereka akan bermula secara automatik.

Pada asasnya, itu sahaja. Kedengarannya mudah, tetapi, secara semula jadi, semuanya tidak akan berjalan lancar. Oleh itu, saya akan menerangkan beberapa ralat yang saya hadapi semasa bekerja:

'ssh-keygen' tidak diiktiraf sebagai perintah dalaman atau luaran.

Ia juga berlaku kerana laluan ke ssh-keygen.exe tidak ditambahkan pada pembolehubah persekitaran.
Terdapat dua pilihan: tambah C:Program FilesGitusrbin ke Environment Variables (akan digunakan selepas but semula mesin), atau lancarkan konsol dari direktori ini.

AppCenter disambungkan ke akaun BitBucket yang salah?

Untuk menyelesaikan masalah, anda perlu menyahpaut akaun BitBucket anda daripada AppCenter. Kami log masuk ke akaun BitBucket yang salah dan pergi ke profil pengguna.

Penyepaduan AppCenter dan GitLab

Seterusnya, pergi ke Tetapan > Pengurusan Akses > OAuth

Penyepaduan AppCenter dan GitLab

Klik Batal untuk menyahpaut akaun anda.

Penyepaduan AppCenter dan GitLab

Selepas ini, anda perlu log masuk dengan akaun BitBucket yang diperlukan.
* Sebagai pilihan terakhir, kosongkan juga cache penyemak imbas anda.

Sekarang mari pergi ke AppCenter. pergi ke bahagian Bina, klik Putuskan sambungan akaun BitBucket

Penyepaduan AppCenter dan GitLab

Apabila akaun lama dinyahpautkan, kami memautkan AppCenter sekali lagi. Sekarang ke akaun yang dikehendaki.

'eval' tidak diiktiraf sebagai perintah dalaman atau luaran

Kami menggunakannya dan bukannya arahan

  - eval $(ssh-agent -s)

Pasukan:

  - ssh-agent

Dalam sesetengah kes, anda perlu sama ada menentukan laluan penuh ke C:Program FilesGitusrbinssh-agent.exe, atau menambah laluan ini kepada pembolehubah sistem pada mesin tempat pelari sedang berjalan

AppCenter Build cuba melancarkan binaan untuk projek daripada repositori bitBucket yang sudah lapuk

Dalam kes saya, masalah timbul kerana saya bekerja dengan berbilang akaun. Saya memutuskan untuk mengosongkan cache.

Sumber: www.habr.com

Tambah komen