Jenkins untuk Android build menggunakan buruh pelabuhan

Halo semuanya!

Saya bekerja sebagai pengembang android, dan belum lama ini kami mengalami beberapa tugas rutin pada proyek kami yang ingin kamiotomatiskan. Misalnya, kami memiliki 5 rasa yang berbeda, untuk masing-masingnya kami perlu mengunggah build ke fabric, terkadang untuk gerobak yang berbeda beberapa kali sehari. Ya, tugas ini juga dapat dilakukan dengan menggunakan tugas gradle, tetapi saya ingin tidak memulai proses ini pada mesin pengembang, tetapi melakukannya entah bagaimana secara terpusat. Atau misalnya, secara otomatis unggah build in google play ke beta. Yah, saya hanya ingin memilih sistem CI. Apa yang terjadi dengan ini, dan bagaimana kita mengaturnya, mengapa ada Docker, kemudian di artikel ini.



Dalam pemahaman saya, seluruh tugas dibagi menjadi sekitar dua tahap:

  1. Instal dan konfigurasikan Jenkins sendiri dengan Android SDK
  2. Siapkan tugas yang sudah ada di dalam Jenkins

Pada artikel ini, saya ingin menyentuh pada poin pertama, dan jika itu akan menarik bagi siapa pun, maka pada artikel selanjutnya saya akan menjelaskan proses pengaturan tugas perakitan di Jenkins itu sendiri.

Jadi, poin pertama adalah instalasi dan konfigurasi sistem Jenkins


Habré sudah memiliki artikel yang bagus tentang topik ini, tetapi dia sudah beberapa tahun, dan beberapa hal di dalamnya sedikit ketinggalan jaman (misalnya sdkmanager), meskipun dia banyak membantu saya untuk mencari tahu apa dan bagaimana yang harus dilakukan pada tahap awal.

Jika Anda melihat dokumentasi resmi untuk menginstal Jenkins, maka kita akan melihat tiga cara berbeda untuk melakukan ini: luncurkan gambar buruh pelabuhan yang sudah jadi, unduh dan jalankan file perang, dan juga cukup instal jenkins dalam sistem dengan cara lama (misalnya, apt-get install jenkins menggunakan ubuntu sebagai contoh). Opsi pertama adalah yang paling benar, karena tidak membawa pengaturan dan dependensi yang tidak perlu ke sistem host kami, dan setiap saat bahkan jika terjadi kesalahan, mudah dan sederhana untuk menghapus semuanya dan mulai lagi. Tetapi gambar buruh pelabuhan standar untuk jenkins berisi beberapa data yang tidak kita butuhkan (misalnya, plugin blueocean) dan tidak berisi apa yang pasti akan kita butuhkan (misalnya, android sdk). Diputuskan untuk membuat gambar buruh pelabuhan kami sendiri yang di dalamnya akan mengunduh dan menjalankan file perang, mengunduh dan menginstal SDK Android, serta mengkonfigurasi semua pengaturan lain yang kita butuhkan. Untuk memulainya nanti, kita membutuhkan sistem host dengan buruh pelabuhan diinstal. Saya sarankan di sini untuk tidak menemukan kembali roda dan menggunakan DigitalOcean.

Buat dan konfigurasikan mesin virtual


Untuk memulainya, jika orang lain tidak terdaftar di sana, saya sarankan mendaftar (di sini pada saat menulis artikel ada tautan rujukan, tetapi setelah membaca aturan saya membuangnya). Setelah mendaftar, Anda dapat google satu atau kode promosi lain di Internet, dan mendapatkan sekitar 10 dolar untuk memulai.

Setelah itu kita perlu mendapatkan tetesan baru. Pilih item Tetesan, lalu Buat Tetesan .

gambar

Sistem host adalah Ubuntu 18.04. Anda dapat memilih gambar dengan Docker yang sudah diinstal dan dikonfigurasi, tetapi kami akan melakukan semuanya sendiri. Karena rakitan Android builds masih membutuhkan banyak sumber daya, kita perlu memilih konfigurasi untuk setidaknya 20 dolar sehingga build dikumpulkan secara normal dan relatif cepat.

gambar

Kami akan memilih lokasi yang lebih dekat (misalnya, di Jerman). Lalu ada dua opsi untuk bagaimana kita akan terhubung ke server virtual kita. Kita dapat menambahkan kunci ssh atau melakukannya tanpa itu. Jika di tempat ini kami tidak menunjukkan kunci mana yang digunakan, maka kata sandi untuk pengguna root akan dikirim ke email kami.

gambar

Di sini kita dapat mengubah nama server, dan menyelesaikan pembuatan dengan mengklik tombol Buat .

gambar

Sekarang kita masuk ke droplet yang dibuat, dan salin alamat ip untuk diri kita sendiri, untuk koneksi dan konfigurasi lebih lanjut.

gambar

Kami membutuhkan klien ssh. Jika Anda bekerja dari bawah poppy, maka Anda dapat menggunakan terminal standar, jika dari bawah Windows kita dapat menggunakan dempul untuk bekerja atau menggunakan subsistem Linux (hanya untuk Windows 10). Saya pribadi menggunakan opsi yang terakhir, dan itu sangat cocok untuk saya.

Terhubung ke server kami menggunakan perintah berikut

 ssh root@YOUR_IP_ADDRESS 

Konsol akan menawarkan Anda untuk menyimpan kunci, kami setuju dengan ini. Setelah terhubung, kami akan membuat pengguna baru untuk diri kami sendiri, menambahkannya ke pengguna super (dan memberinya kesempatan untuk menggunakan sudo tanpa kata sandi), menyalinnya kunci untuk akses melalui ssh dan mengatakan bahwa ia adalah pemilik file-file ini (jika tidak maka tidak akan berfungsi). Nama pengguna diubah menjadi nyaman untuk Anda.

 useradd -m -s /bin/bash username \ && echo 'username ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \ && mkdir /home/username/.ssh \ && cp /root/.ssh/authorized_keys /home/username/.ssh/authorized_keys \ && chown username:username -R /home/username/.ssh 

Putuskan koneksi dari root dengan perintah

 exit 

Dan kami akan terhubung kembali dengan bantuan pengguna baru yang dibuat

 ssh username@YOUR_IP_ADDRESS 

Setelah kami memperbarui sistem, dan reboot server kami (jika selama proses pembaruan, sistem akan menanyakan sesuatu kepada Anda, cukup untuk selalu memilih nilai default dalam kasus ini).

 sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo reboot 

Setup dasar selesai. Dari sudut pandang sistem pertempuran, itu tidak terlalu aman, tetapi dalam kerangka artikel ini sangat cocok.

Instal Docker.


Untuk menginstal Docker di sistem kami, kami akan menggunakan dokumentasi resmi . Karena kami memiliki sistem yang baru diinstal, kami akan melewati titik ini, dan jika Anda memiliki sistem tempat sesuatu telah berjalan lama, atas rekomendasi orang-orang dari Docker, hapus kemungkinan versi lama

 sudo apt-get remove docker docker-engine docker.io containerd runc 

Jangan lupa untuk terhubung kembali melalui ssh ke server kami. Instalasi Docker sendiri dijelaskan dengan sangat terperinci dalam dokumentasi, saya akan memberikan perintah umum untuk memudahkan Anda. Apa yang mereka lakukan dapat dibaca di sana. Pertama-tama tambahkan repositori.

 sudo apt update \ && sudo apt install -y apt-transport-https ca-certificates \ curl gnupg-agent software-properties-common \ && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - \ && sudo apt-key fingerprint 0EBFCD88 \ && sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 

Dan kemudian instal Docker sendiri:

 sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io 

Sehingga di masa depan kita bisa memanggil perintah buruh pelabuhan tanpa awalan sudo, jalankan perintah berikut (yang juga dijelaskan dengan seksama dalam instruksi ).

 sudo usermod -aG docker username 

Setelah itu, Anda harus masuk kembali (menggunakan perintah keluar dan menghubungkan kembali ke server) agar ini berfungsi.

Docker sendiri terinstal, yang bisa kita periksa dengan perintah

 docker run hello-world 

Dia mengunduh gambar uji, menjalankannya dalam wadah. Wadah, setelah memulai, mencetak pesan informasi dan keluar.

Selamat, kami telah menyelesaikan tahap mempersiapkan server untuk bekerja!

Membuat Gambar Docker Anda


Kami akan membuat gambar Docker dengan menulis Dockerfile kami sendiri. Contoh cara melakukan ini dengan benar di Internet gerobak dan gerobak kecil, saya akan menunjukkan versi saya yang sudah selesai, dan saya akan mencoba mengomentarinya sebanyak mungkin. Ada juga instruksi manual dari buruh pelabuhan itu sendiri dengan contoh pada ejaan dockerfile yang benar dan kanonik.

Buat dan buka Dockerfile Anda untuk diedit

 touch Dockerfile && nano Dockerfile 

Di dalamnya, misalnya, kami akan meletakkan konten Dockerfile saya

Seluruh buruh pelabuhan saya dengan komentar
 #    . FROM ubuntu:18.04 #      LABEL author="osipovaleks" LABEL maintainer="osipov.aleks.kr@gmail.com" LABEL version="1.0" LABEL description="Docker image for Jenkins with Android SDK" #  ,  Jenkins    ENV TZ=Europe/Kiev RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # i386    ia32-libs RUN dpkg --add-architecture i386 #      RUN apt-get update && apt-get install -y git \ wget \ unzip \ sudo \ tzdata \ locales\ openjdk-8-jdk \ libncurses5:i386 \ libstdc++6:i386 \ zlib1g:i386 #  ,       RUN apt-get clean && rm -rf /var/lib/apt/lists /var/cache/apt #  RUN locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 #   Android Sdk     ARG android_home_dir=/var/lib/android-sdk/ ARG sdk_tools_zip_file=sdk-tools-linux-4333796.zip RUN mkdir $android_home_dir RUN wget https://dl.google.com/android/repository/$sdk_tools_zip_file -P $android_home_dir -nv RUN unzip $android_home_dir$sdk_tools_zip_file -d $android_home_dir RUN rm $android_home_dir$sdk_tools_zip_file && chmod 777 -R $android_home_dir # environment    ENV ANDROID_HOME=$android_home_dir ENV PATH="${PATH}:$android_home_dir/tools/bin:$android_home_dir/platform-tools" ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ #   Android SDK RUN yes | sdkmanager --licenses #    Jenkins ENV JENKINS_HOME=/var/lib/jenkins RUN mkdir $JENKINS_HOME && chmod 777 $JENKINS_HOME #     jenkins,   ,         RUN useradd -m jenkins && echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers USER jenkins WORKDIR /home/jenkins #   war     Jenkins RUN wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -nv CMD java -jar jenkins.war #      EXPOSE 8080/tcp 


Beberapa klarifikasi:

  • Pada awalnya, ada keinginan untuk menggunakan alpine yang lebih ringan alih-alih ubuntu, tetapi ia tidak memiliki dukungan ia32-libs , yang diperlukan untuk membangun proyek menggunakan Android SDK.
  • Kami memasang openjdk-8-jdk, bukan yang lebih ringan openjdk-8-jdk-headless, karena beberapa fungsi Jenkins membutuhkan sistem yang lengkap (misalnya, menampilkan hasil tes unit).
  • Diperlukan untuk menginstal locales, karena pada beberapa proyek, tanpa mereka, assembly gradle crash tanpa kesalahan dan log yang jelas, dan saya menghabiskan beberapa hari untuk sampai ke dasar alasan ini (pada ubuntu reguler yang tidak di docker, semua lokal diisi secara default) .
  • Kita harus segera menerima semua lisensi untuk Android SDK, sehingga selama proses pembuatan Jenkins dapat secara mandiri menginstal komponen yang dibutuhkannya (misalnya, SDK yang dibutuhkan untuk versi api yang berbeda). Jika perlu, nanti di dalam wadah buruh pelabuhan akan mungkin untuk mengelola SDK menggunakan sdkmanager, misalnya sdkmanager --list memungkinkan sdkmanager --list untuk melihat semua komponen yang tersedia dan semua yang diinstal, dan sdkmanager --install "platforms;android-26" menginstal SDK untuk versi 26 dari api.
  • Secara umum, itu mungkin untuk tidak memulai pengguna jenkins, dan tetap dengan pengguna root, tapi entah bagaimana itu tidak benar, Anda juga tidak bisa memberinya hak pengguna super, tetapi ini dilakukan dalam hal kenyamanan, jika sesuatu perlu diinstal pada tahap pengaturan dan debug.
  • Ukuran dasar gambar ternyata agak besar (hampir 800 mb), tetapi secara keseluruhan saya sampai pada kesimpulan bahwa bagi saya ini tidak terlalu kritis, dan lebih mudah bagi saya untuk mengunduhnya dalam bentuk ini daripada menghabiskan waktu mencari dan menghapus paket yang tidak saya butuhkan.

Setelah menulis Dockerfile, kita perlu mengubahnya menjadi gambar yang siap pakai untuk Docker, berdasarkan wadah yang akan dibuat. Ini dilakukan hanya oleh tim

 docker build -t jenkins-image 

di mana parameter -t jenkins-image bertanggung jawab atas nama gambar Anda, dan titik di akhir perintah menunjukkan bahwa Anda perlu mencari Dockerfile untuk perakitan di dalam direktori ini. Proses perakitan itu sendiri membutuhkan waktu, dan setelah perakitan harus ada sesuatu seperti ini di konsol.
9fd8f5545c27 berhasil dibangun
Berhasil menandai tag-jenkins: terbaru
Yang memberitahu kita bahwa gambar kita telah berhasil dirangkai, dan kita dapat melanjutkan ke langkah selanjutnya, yaitu peluncuran wadah kita

Hub Docker dan gambar yang sudah jadi


Ya, tentu saja, kita dapat menggunakan gambar siap pakai kami untuk meluncurkan wadah, tetapi jika kita perlu melakukan ini di lebih dari beberapa perangkat, membuat Dockerfile setiap kali dan membangun gambar yang sudah jadi dari itu tidak akan sangat nyaman. Dan jika kita juga memperbarui konten Dockerfile kita, maka meluncurkan perubahan di semua node tidak akan nyaman sama sekali. Untuk tujuan ini, ada repositori publik dari gambar Docker Hub . Ini memungkinkan Anda untuk tidak mengumpulkan gambar setiap waktu, pada setiap node, tetapi cukup mengunduhnya ke diri Anda sendiri dari repositori publik, dan menggunakannya secara merata di semua mesin. Sebagai contoh, gambar yang berfungsi sebagai contoh untuk artikel ini tersedia di repositori bernama osipovaleks / docker-jenkins-android , dan nanti dalam artikel ini kita akan bekerja dengannya.

Artikel ini tidak menyiratkan studi terperinci tentang Docker Hub, kami tidak akan mengerti cara mengunggah gambar kami di sana (meskipun ini tidak terlalu sulit) dan apa yang dapat dilakukan dengan mereka di sana, kami tidak akan mengerti bahwa mungkin masih ada repositori publik atau pribadi Anda sendiri, Dalam hal ini semua dapat disortir secara mandiri jika perlu.

Peluncuran kontainer


Ada dua cara memulai wadah.

  1. Cara pertama, cukup menggunakan docker run , memungkinkan Anda melakukan ini dengan mudah dan cepat dengan cara berikut

     docker run --name jenkins -d -it -v jenkins-data:/var/lib/jenkins -v jenkins-home:/home/jenkins -p 8080:8080 --restart unless-stopped osipovaleks/docker-jenkins-android 

    di mana perintah run memiliki parameter berikut

    • --name jenkins - nama wadah masa depan
    • -d - mulai wadah di latar belakang
    • -it - flag untuk bekerja dengan STDIN dan tty
    • -v jenkins-data:/var/lib/jenkins dan -v jenkins-home:/home/jenkins - buat (jika tidak dibuat) dan petakan file volume khusus ke bagian internal wadah yang akan memungkinkan kita untuk menyimpan Jenkins yang telah dikonfigurasi bahkan setelah merekonstruksi. wadah
    • -p 8080:8080 - memetakan port host ke port container sehingga kita memiliki akses ke antarmuka web (ya ini adalah port yang kita tentukan di Dockerfile)
    • --restart unless-stopped - opsi menentukan kebijakan autorun wadah setelah --restart unless-stopped ulang host (dalam hal ini, autostart jika wadah tidak dimatikan secara manual)
    • osipovaleks/docker-jenkins-android - gambar untuk ditempatkan.

    Di pintu keluar ke konsol Docker, kita harus mendapatkan id dari wadah yang dibuat, dan juga menunjukkan informasi tentang bagaimana gambar dimuat ke dalam sistem (tentu saja, jika belum dimuat), sesuatu seperti ini
    Tidak dapat menemukan gambar 'osipovaleks / docker-jenkins-android: terbaru' secara lokal
    terbaru: Menarik dari osipovaleks / docker-jenkins-android
    6cf436f81810: Tarik selesai
    987088a85b96: Tarik selesai
    b4624b3efe06: Tarik selesai
    d42beb8ded59: Tarik selesai
    b3896048bb8c: Tarik selesai
    8eeace4c3d64: tarik selesai
    d9b74624442c: Tarik selesai
    36bb3b7da419: Tarik selesai
    31361bd508cb: Tarik selesai
    cee49ae4c825: tarik lengkap
    868ddf54d4c1: Tarik selesai
    361bd7573dd0: Tarik selesai
    bb7b15e36ae8: Tarik selesai
    97f19daace79: Tarik selesai
    1f5eb3850f3e: Tarik selesai
    651e7bbedad2: Tarik selesai
    a52705a2ded7: Tarik selesai
    Intisari: sha256: 321453e2f2142e433817cc9559443387e9f680bb091d6369bbcbc1e0201be1c5
    Status: Diunduh gambar yang lebih baru untuk osipovaleks / docker-jenkins-android: latest
    ef9e5512581da66d66103d9f6ea6ccd74e5bdb3776747441ce6a88a98a12b5a4
  2. Cara kedua untuk memulai melibatkan menulis file penulisan khusus, di mana perintah jalankan hanya dijelaskan menggunakan bahasa YAML , dan diluncurkan menggunakan Docker Compose.

    Untuk melakukan ini, kita perlu menginstalnya:

     sudo apt update && sudo apt install -y docker-compose 

    Selanjutnya, buat direktori untuk proyek (ini penting jika Anda peduli apa volume yang dibuat secara otomatis untuk wadah akan dipanggil) dan pergi ke sana

     mkdir jenkinsProject && cd jenkinsProject 

    dan di dalam kita membuat file menulis sendiri dan masuk ke mode edit

     touch docker-compose.yml && nano docker-compose.yml 

    dan letakkan konten berikut di dalamnya

     version: '3' services: jenkins: container_name: jenkins image: osipovaleks/docker-jenkins-android ports: - "8080:8080" restart: unless-stopped volumes: - "jenkins-data:/var/lib/jenkins" - "jenkins-home:/home/jenkins" volumes: jenkins-data: jenkins-home: 

    Di dalamnya, mungkin, hanya baris pertama yang memunculkan pertanyaan ( version: '3' ) yang menunjukkan versi kemampuan file penulisan, serta bagian dengan blok volumes yang mencantumkan daftar yang digunakan dalam wadah ini.

    Jalankan wadah Anda dengan perintah:

     docker-compose up -d 

    di mana flag -d juga menunjukkan bahwa kontainer akan dibuat dan diluncurkan di latar belakang. Akibatnya, Docker harus menunjukkan sesuatu seperti berikut:
    Membuat volume "jenkinsproject_jenkins-data" dengan driver default
    Membuat volume "jenkinsproject_jenkins-home" dengan driver default
    Menarik jenkins (osipovaleks / docker-jenkins-android: terbaru) ...
    terbaru: Menarik dari osipovaleks / docker-jenkins-android
    6cf436f81810: Tarik selesai
    987088a85b96: Tarik selesai
    b4624b3efe06: Tarik selesai
    d42beb8ded59: Tarik selesai
    b3896048bb8c: Tarik selesai
    8eeace4c3d64: tarik selesai
    d9b74624442c: Tarik selesai
    36bb3b7da419: Tarik selesai
    31361bd508cb: Tarik selesai
    cee49ae4c825: tarik lengkap
    868ddf54d4c1: Tarik selesai
    361bd7573dd0: Tarik selesai
    bb7b15e36ae8: Tarik selesai
    97f19daace79: Tarik selesai
    1f5eb3850f3e: Tarik selesai
    651e7bbedad2: Tarik selesai
    a52705a2ded7: Tarik selesai
    Intisari: sha256: 321453e2f2142e433817cc9559443387e9f680bb091d6369bbcbc1e0201be1c5
    Status: Diunduh gambar yang lebih baru untuk osipovaleks / docker-jenkins-android: latest
    Membuat jenkins ...
    Membuat jenkins ... selesai
    Ingat, saya mengatakan bahwa nama volume yang dibuat akan tergantung pada nama proyek? Jalankan perintah:

     docker volume ls 

    dan kami mendapatkan output seperti itu
    NAMA VOLUME DRIVER
    jenkinsproject_jenkins-data lokal
    jenkinsproject_jenkins-rumah lokal
    di mana kita akan melihat bahwa meskipun fakta bahwa nama untuk volume dipilih oleh jenkins-home , pada kenyataannya, awalan dari nama proyek menempel padanya dan volume nama ternyata jenkinsproject _jenkins-home


Opsi startup mana yang digunakan? Di sini Anda dapat memilih sendiri, diyakini bahwa Docker Compose lebih merupakan alat untuk meluncurkan beberapa kontainer sekaligus, yang terikat satu sama lain, dan jika Anda hanya perlu menjalankan satu kontainer, maka Anda dapat menggunakan docker run .

Sekarang setelah sub-langkah ini untuk memulai dan mengkonfigurasi server, serta memulai wadah dengan Jenkins, kita dapat melanjutkan ke konfigurasi awal

Penyiapan Jenkins awal


Ambil alamat ip dari server kami, tambahkan port 8080 yang ditunjukkan oleh kami kepadanya dan ikuti tautan ini di browser.

http://YOUR_IP_ADDRESS:8080/

Jika sebelumnya semuanya sudah dikonfigurasi dan dimulai dengan benar, maka di sini kita akan melihat gambar berikut



Untuk pengaturan pertama, kita perlu memasukkan kata sandi yang dihasilkan sistem saat instalasi. Untuk melakukan ini, kita hanya perlu melihat isi file /var/lib/jenkins/secrets/initialAdminPassword . Tetapi file ini ada di dalam wadah kami yang sedang berjalan, dan untuk membacanya, kita perlu terhubung ke wadah tersebut menggunakan perintah berikut:

 docker exec -it jenkins /bin/bash 

di mana opsi-itu mirip dengan menjalankan docker run , jenkins adalah nama kontainer kami, dan /bin/bash akan menjalankan /bin/bash untuk kita dalam wadah dan memberikannya akses. Setelah itu, kita dapat melihat kata sandi awal untuk Jenkins:

 cat /var/lib/jenkins/secrets/initialAdminPassword 

berikut ini muncul di konsol
91092b18d6ca4492a2759b1903241d2a
Ini kata sandinya.

Pengguna ALexhha menyarankan opsi yang lebih sederhana untuk membaca kata sandi ini, tanpa terhubung ke wadah itu sendiri. Faktanya adalah bahwa pada saat meluncurkan Jenkins sendiri, kata sandi ini ditampilkan di log. Ternyata yang kita butuhkan hanyalah membaca log kontainer. Dalam kasus kami, ini dilakukan dengan perintah berikut:

 docker logs jenkins 


di mana jenkins nama wadah kami, dan di log Anda dapat melihat yang berikut:

*************************************************** ***********
*************************************************** ***********
*************************************************** ***********

Diperlukan pengaturan awal Jenkins. Pengguna admin telah dibuat dan kata sandi dibuat.
Silakan gunakan kata sandi berikut untuk melanjutkan ke instalasi:

91092b18d6ca4492a2759b1903241d2a

Ini juga dapat ditemukan di: / var / lib / jenkins / secrets / initialAdminPassword

*************************************************** ***********
*************************************************** ***********

*************************************************** ***********

Opsi ini sedikit lebih sederhana dan lebih cepat.

Salin, tempel ke bidang kata sandi Administrator di antarmuka web dan klik Lanjutkan . Pada layar berikutnya, pilih Instal plugin yang disarankan dan instal satu set plugin default.





Setelah menginstal plugin, buat pengguna untuk kami sendiri dan klik Simpan dan Selesai



Kami setuju dengan bagian Konfigurasi Instans, di mana kami diminta untuk mengisi URL tempat Jenkins akan bekerja (dalam kasus kami, biarkan semuanya apa adanya)



Dan di layar berikutnya, klik Start yang disukai menggunakan Jenkins



Jadi, kami menginstal dan meluncurkan Jenkins!



Sudah cukup mungkin untuk bekerja dengannya, tetapi untuk mengumpulkan Android build kami, Anda perlu mengonfigurasi beberapa poin lagi. Pelokalan Jenkins terkait dengan bahasa yang dipilih pada peramban Anda, dan tentu saja terjemahan ke dalam bahasa Rusia belum sepenuhnya selesai, dan kami mendapatkan campuran yang sangat besar dari bahasa Rusia dan Inggris. Jika Anda berhasil dengan cara yang persis sama, dan itu membuat Anda marah, maka Anda dapat menggunakan plug-in khusus dan mengatur bahasa antarmuka default. Baik, atau alihkan browser Anda ke antarmuka bahasa Inggris.

Pergi ke pengaturan Jenkins dan pilih Konfigurasi Sistem.



Periksa variabel Lingkungan , dan masukkan nama ANDROID_HOME di bidang, dan tentukan / var / lib / android-sdk / di bidang (kami menentukan data ini di Dockerfile sebagai direktori home untuk Android SDK).



Klik pada tombol Simpan , keluar dari bagian pengaturan ini dan pergi ke bagian yang disebut Konfigurasi Alat Global .



Siapkan partisi JDK (di mana variabel JAVA_HOME juga diisi oleh kami di Dockerfile, dan kita dapat menggunakan nilainya / usr / lib / jvm / java-8-openjdk-amd64 / di sini ).



Juga di sini kita masih perlu mengisi bagian Gradle . Kami memilih dan menginstal versi Gradle yang digunakan dalam proyek-proyek yang akan Anda bangun menggunakan sistem CI ini.Anda dapat memiliki beberapa versi. Anda juga tidak bisa memulai variabel Gradle sama sekali jika Anda memiliki gradlew di repositori, misalnya, dan Anda bisa membuatnya dengan itu.



Dengan ini kita bisa mengakhiri tahap pertama kita. Sistem Jenkins sepenuhnya operasional dan kita dapat beralih ke menyesuaikan tugas membangun sendiri. Harap perhatikan bahwa sistem ini disesuaikan dengan kebutuhan kami dan mungkin tidak menyediakan apa yang Anda butuhkan - misalnya, tidak ada emulator Android untuk pengujian dan NDK.

Jika artikel ini menarik minat siapa pun, maka saya akan melanjutkan di bagian kedua dengan contoh satu atau dua kerepotan, saya akan menjelaskan integrasi Jenkins dan Bitbucket (dialah, bukan Github, karena ada lebih mudah dengan repositori pribadi gratis dan artikel di Internet tentang lebih kecil, tapi mungkin lebih menyenangkan), saya akan memberi tahu Anda cara berteman dengan kunci ssh dari wadah kami dengan repositori, tentang pemberitahuan email, serta beberapa keripik lainnya. Secara umum, tentang segala sesuatu yang kami konfigurasikan.

Saya meminta Anda untuk tidak terlalu banyak menendang, ini adalah artikel pertama saya tentang Habr. Baik untuk semua!

Source: https://habr.com/ru/post/id443606/


All Articles