Tutorial: Mengonfigurasi lingkungan Jenkins untuk mengaktifkan CI/CD untuk aplikasi Java pada Service Fabric

Tutorial ini adalah bagian kelima dari seri tutorial. Ini menunjukkan kepada Anda cara menggunakan Jenkins untuk menyebarkan peningkatan ke aplikasi Anda. Dalam tutorial ini, plugin Service Fabric Jenkins digunakan dalam kombinasi dengan repositori GitHub yang menghosting aplikasi Voting untuk menyebarkan aplikasi ke kluster.

Di bagian empat seri tutorial ini, Anda mempelajari cara:

  • Menyebarkan kontainer Service Fabric Jenkins pada komputer Anda
  • Menyiapkan lingkungan Jenkins untuk penyebaran ke Service Fabric
  • Meningkatkan aplikasi Anda

Dalam tutorial ini, Anda akan belajar cara:

Prasyarat

  • Pasang Git di komputer lokal Anda dari halaman unduhan Git. Untuk informasi selengkapnya tentang Git, baca dokumentasi Git.
  • Memiliki pengetahuan yang bekerja tentang Jenkins.
  • Buat akun GitHub dan mengetahui cara menggunakan GitHub.
  • Pasang Docker di komputer Anda.

Menarik dan menyebarkan gambar kontainer Service Fabric Jenkins pada komputer Anda

Anda dapat mengatur Jenkins baik di dalam atau di luar kluster Service Fabric. Instruksi berikut menunjukkan cara mengaturnya di luar kluster menggunakan gambar Docker yang disediakan. Namun, lingkungan build Jenkins yang telah dikonfigurasi sebelumnya juga dapat digunakan. Gambar kontainer berikut ini dilengkapi dengan plugin Service Fabric dan siap digunakan dengan Service Fabric segera.

Catatan

Contoh berikut menarik gambar kontainer publik dari Docker Hub. Sebaiknya autentikasi dengan akun Docker Hub Anda (docker login) terlebih dahulu alih-alih membuat permintaan pull anonim. Untuk meningkatkan keandalan saat menggunakan konten publik, impor dan kelola gambar dalam Azure container registry privat. Pelajari selengkapnya tentang bekerja dengan gambar umum.

  1. Tarik gambar kontainer Service Fabric Jenkins: docker pull rapatchi/jenkins:v10. Gambar ini dilengkapi dengan plugin Service Fabric Jenkins yang telah dipasang sebelumnya.

  2. Jalankan gambar kontainer dengan lokasi penyimpanan sertifikat Azure Anda di komputer lokal yang dipasang.

    docker run -itd -p 8080:8080 -v /service-fabric-java-quickstart/AzureCluster rapatchi/jenkins:v10
    
  3. Dapatkan ID instans gambar kontainer. Anda dapat mencantumkan semua kontainer Docker dengan perintah docker ps –a

  4. Ambil kata sandi instans Jenkins Anda dengan menjalankan perintah berikut:

    docker exec [first-four-digits-of-container-ID] cat /var/jenkins_home/secrets/initialAdminPassword
    

    Jika ID kontainer adalah 2d24a73b5964, gunakan 2d24.

    • Kata sandi ini diperlukan untuk masuk ke dasbor Jenkins dari portal, yang http://<HOST-IP>:8080
    • Setelah masuk untuk pertama kalinya, Anda dapat membuat akun pengguna Anda sendiri atau menggunakan akun admin.
  5. Siapkan GitHub untuk bekerja dengan Jenkins dengan menggunakan langkah-langkah yang disebutkan dalam Menghasilkan kunci SSH baru dan menambahkannya ke agen SSH. Karena perintah dijalankan dari kontainer Docker, ikuti instruksi untuk lingkungan Linux.

    • Gunakan instruksi yang diberikan oleh GitHub untuk menghasilkan kunci SSH. Selanjutnya, tambahkan kunci SSH ke akun GitHub yang menghosting repositori.

    • Jalankan perintah yang disebutkan dalam tautan sebelumnya di shell Jenkins Docker (dan bukan pada host Anda).

    • Untuk masuk ke shell Jenkins dari host Anda, gunakan perintah berikut:

      docker exec -t -i [first-four-digits-of-container-ID] /bin/bash
      

      Pastikan bahwa kluster atau komputer tempat gambar kontainer Jenkins dihosting memiliki IP yang menghadap publik. Memiliki IP yang menghadap publik memungkinkan instans Jenkins untuk menerima pemberitahuan dari GitHub.

Membuat dan mengonfigurasi pekerjaan Jenkins

  1. Pertama, jika Anda tidak memiliki repositori yang dapat Anda gunakan untuk menyelenggarakan proyek Voting di GitHub, buatlah. Repositori disebut dev_test untuk sisa tutorial ini.

  2. Buat item baru di pada dasbor Jenkins Anda di http://<HOST-IP>:8080.

  3. Masukkan nama item (misalnya, MyJob). Pilih proyek gaya bebas, dan klik OK.

  4. Buka halaman pekerjaan, dan klik Konfigurasikan.

    a. Di bagian umum, pilih kotak centang untuk proyek GitHub, dan tentukan URL proyek GitHub Anda. URL ini menghosting aplikasi Service Fabric Java yang ingin Anda integrasikan dengan integrasi berkelanjutan Jenkins, alur penyebaran berkelanjutan (CI/CD) (misalnya, https://github.com/testaccount/dev_test).

    b. Di bawah bagian Manajemen Kode Sumber, pilih Git. Tentukan URL repositori yang menghosting aplikasi Service Fabric Java yang ingin Anda integrasikan dengan alur Jenkins CI/CD (misalnya, https://github.com/testaccount/dev_test.git ). Selain itu, Anda dapat menentukan di sini cabang mana yang akan dibangun (misalnya, /master).

  5. Konfigurasikan GitHub Anda (yang menghosting repositori) sehingga dapat berbicara dengan Jenkins. Gunakan langkah-langkah berikut:

    a. Buka halaman repositori GitHub Anda. Buka Pengaturan>Integrasi dan Layanan.

    b. Pilih Tambahkan Layanan, ketik Jenkins,dan pilih plugin Jenkins-GitHub.

    c. Masukkan URL webhook Jenkins Anda (secara default, seharusnya http://<PublicIPorFQDN>:8081/github-webhook/). Klik layanan tambah/perbarui.

    d. Peristiwa pengujian dikirim ke instans Jenkins Anda. Anda akan melihat tanda centang hijau oleh webhook di GitHub, dan proyek Anda bangun.

    Konfigurasi Service Fabric Jenkins

  6. Di bawah bagian Pemicu Build, pilih opsi build mana yang Anda inginkan. Untuk contoh ini, Anda ingin memicu build setiap kali beberapa pendorongan ke repositori terjadi. Jadi Anda memilih pemicu hook GitHub untuk polling GITScm.

  7. Di bawah bagian Build, dari drop-down Tambahkan langkah build, pilih opsi Panggil Skrip Gradle. Di widget yang membuka menu tingkat lanjut, tentukan jalur ke skrip build Akar untuk aplikasi Anda. Jalur ini mengambil build.gradle dari jalur yang ditentukan dan berfungsi dengan tepat.

    Tindakan Buil Jenkins Service Fabric

  8. Dari drop-down Tindakan Pasca-Build, pilih Sebarkan Proyek Service Fabric. Di sini Anda perlu memberikan detail kluster di mana aplikasi Service Fabric yang dikompilasi Jenkins akan digunakan. Jalur ke sertifikat adalah tempat volume dipasang (/tmp/myCerts).

    Anda juga dapat memberikan detail tambahan yang digunakan untuk menyebarkan aplikasi. Lihat tangkapan layar berikut ini misalnya untuk detail aplikasi:

    Dialog Tindakan Pasca-build dengan opsi penyebaran proyek Service Fabric tambahan

    Catatan

    Kluster di sini bisa sama dengan yang menghosting aplikasi kontainer Jenkins, jika Anda menggunakan Service Fabric untuk menyebarkan gambar kontainer Jenkins.

  9. Klik Simpan.

Memperbarui aplikasi yang sudah ada

  1. Perbarui judul HTML dalam file VotingApplication/VotingWebPkg/Code/wwwroot/index.html dengan Service Fabric Voting Sampel V2.

    <div ng-app="VotingApp" ng-controller="VotingAppController" ng-init="refresh()">
        <div class="container-fluid">
            <div class="row">
                <div class="col-xs-8 col-xs-offset-2 text-center">
                    <h2>Service Fabric Voting Sample V2</h2>
                </div>
            </div>
        </div>
    </div>
    
  2. Perbarui versi ApplicationTypeVersion dan ServiceManifestVersion ke 2.0.0 di file Voting/VotingApplication/ApplicationManifest.xml.

    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <ApplicationManifest xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VotingApplicationType" ApplicationTypeVersion="2.0.0">
      <Description>Voting Application</Description>
      <ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="VotingWebPkg" ServiceManifestVersion="2.0.0"/>
      </ServiceManifestImport>
      <ServiceManifestImport>
            <ServiceManifestRef ServiceManifestName="VotingDataServicePkg" ServiceManifestVersion="1.0.0"/>
        </ServiceManifestImport>
        <DefaultServices>
          <Service Name="VotingWeb">
             <StatelessService InstanceCount="1" ServiceTypeName="VotingWebType">
                <SingletonPartition/>
             </StatelessService>
          </Service>
       <Service Name="VotingDataService">
                <StatefulService MinReplicaSetSize="3" ServiceTypeName="VotingDataServiceType" TargetReplicaSetSize="3">
                    <UniformInt64Partition HighKey="9223372036854775807" LowKey="-9223372036854775808" PartitionCount="1"/>
                </StatefulService>
            </Service>
        </DefaultServices>
    </ApplicationManifest>
    
  3. Perbarui bidang Versi di bidang ServiceManifest dan bidang Versi di tag CodePackage di file Voting/VotingApplication/VotingWebPkg/ServiceManifest.xmlke 2.0.0.

    <CodePackage Name="Code" Version="2.0.0">
    <EntryPoint>
        <ExeHost>
        <Program>entryPoint.sh</Program>
        </ExeHost>
    </EntryPoint>
    </CodePackage>
    
  4. Untuk menginisialisasi pekerjaan Jenkins yang melakukan peningkatan aplikasi, lakukan pendorongan perubahan baru Anda ke repositori GitHub Anda.

  5. Di Explorer Service Fabric, klik pada drop-down Aplikasi. Untuk melihat status peningkatan Anda, klik tab Peningkatan di Kemajuan.

    Peningkatan sedang berlangsung

  6. Jika Anda mengakses http://<Host-IP>:8080 aplikasi Voting dengan fungsionalitas penuh sekarang sedang berjalan.

    Aplikasi Voting Lokal

Langkah berikutnya

Dalam tutorial ini, Anda akan belajar cara:

  • Menyebarkan kontainer Service Fabric Jenkins pada komputer Anda
  • Menyiapkan lingkungan Jenkins untuk penyebaran ke Service Fabric
  • Meningkatkan aplikasi Anda