×
Community Blog Continuous Integration dengan Jenkins dan Alibaba Cloud Container Registry

Continuous Integration dengan Jenkins dan Alibaba Cloud Container Registry

Post kali ini akan membahas cara melakukan integrasi Jenkins dengan Alibaba Cloud Container Registry untuk mempersingkat waktu pembuatan aplikasi.

ditulis oleh: Eggy, Solution Architect Alibaba Cloud Indonesia

Di era pengembangan aplikasi pada saat ini kita sering mendengar dan membaca mengenai Continuous Integration. Pada dasar nya Continuous Integration adalah proses otomatisasi di dalam sebuah pembuatan aplikasi yang bertujuan untuk mempersingkat waktu. Dalam post ini saya akan membahas bagaimana cara melakukan integrasi antara Jenkins dengan Alibaba Cloud Container Registry. Tanpa pikir panjang, yuk kita lihat arsitekturnya :

Picture1

Jadi kalau kita lihat dari arsitekturnya, ada beberapa tahapan yang harus kita siapkan, yaitu:

  1. ECS (Elastic Compute Service)
  2. Jenkins, sebagai motor penggerak untuk melakukan activity. Jenkins saya install di atas ECS yang sudah di buat.
  3. Github Personal Account, sebagai datasource code yang akan di upload. Sebenarnya tidak cuma github saja, Jenkins bisa di integrasi dengan beberapa SCM yang lain
  4. Alibaba Cloud Container Registry, berfungsi untuk menyimpan docker image sebelum di deploy ke Alibaba Cloud Kubernetes
  5. Alibaba Cloud Kubernetes (ACK), tempat untuk menjalankan pod yang berasal dari image yang telah di buat di container registry.

Untuk Prosesnya :

Alibaba Cloud Container Registry

1. Cari "Container Registry"

Picture2

2. Tekan tombol "Create Workspace"

Picture3

3. Di sini saya menggunakan nama "testdockerrepo" untuk namespace

Picture4

4. Pilih Tombol Repository

Picture5

5. Pilih Create Repository

Picture6

6. Di dalam pilihan ini bias memilih private atau public sesuai dengan kebutuhan.

Picture7

7. Pilih "Local Repository" dikarenakan kita hanya ingin melakukan penyimpanan image secara local. Setelah itu kita bisa pilih "Create Repository"

Catatan : Jika ingin langsung menghubungkan antara Github, Bitbucket dan Private Gitlab dapat memilih pilihan tersebut.

Picture8

8. Setelah pilih "Create Repository" kita akan lihat muncul seperti di bawah ini

Picture9

9. Jangan lupa untuk menset password "container registry" di "access credential"

Picture10

10. Setelah siap semua, kita bisa lakukan konfigurasi di Jenkins.

Jenkins

1. Setelah mempersiapkan semua di area Container Registry, maka perlu di sesi ini akan melakukan integrasi dengan credential dari github dan container

Masuk ke dalam Jenkins -> Credentials -> System

Kemudian pilih "Global Credentials"

Picture11

2. Kita akan membuat 2 credentials yang di buat di Git dan Container Registry

Picture12

3. Berikut contoh dari gitali dan container registry

Picture13

Picture14

4. Kita membuat 3 file yaitu Dockerfile, index.html dan Jenkinsfile

Picture15

Kemudian untuk Github

Picture16

5. Setelah kita buat semua credentials untuk github dan container registry maka kita bisa mulai dengan membuat file simple html (index.html):

<html>
<body>
<h1>TEST CICD</h1>
<p>Ini Tambahan 11:01</p>
<p>Ok 1111</p>
</body>
</html>

6. Setelah itu kita membuat Dockerfile, karena nanti di dalam Jenkins ini kita akan build docker image, sebagai contoh untuk Dockerfile sperti di bawah ini:

FROM centos:latest
MAINTAINER Eggy
RUN yum -y install httpd
COPY index.html /var/www/html/
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
EXPOSE 80

7. Untuk Jenkinsfile, akan seperti di bawah ini:

{
pipeline {
   agent any
      environment {
         registryCredential = 'gitali'
         registryCredentialAli = 'containerali'
         registry = 'registry-intl-vpc.ap-southeast-5.aliyuncs.com/testdockerrepo/blogrepo'
         registryUrl = 'https://registry-intl-vpc.ap-southeast-5.aliyuncs.com/testdockerrepo/blogrepo'
         dockerImage = ''
      }
   options {
      skipDefaultCheckout(true)
   }
   stages {
      stage('Checkout SCM') {
         steps {
            echo '> Checking out the source control ...'
            checkout scm
         }
      }
      stage('List Git Files') {
         steps {
            echo '> List the File ...'
            sh 'ls -l'    
         }
      }
      stage('Build') {
         steps {
           echo '> Build Image ...'
           script {
               dockerImage = docker.build registry + ":$BUILD_NUMBER"
           }
         }
      }
      stage('Deploy Image') {
         steps{
            script {
               docker.withRegistry( registryUrl, registryCredentialAli) {
               dockerImage.push()
               }
            }
         }
      }
      stage('Remove Unused docker image') {
         steps{
           sh "docker rmi -f $registry:$BUILD_NUMBER"
         }
      }
   }
}

8. Setelah kita siapkan semua file dan script, kita kembali ke portal Jenkins. Pilih "New Item"

9. Kemudian pilih pipeline, masukkan variable di "Enter an Item Name" Pilih "Ok"

Picture17

10. Setelah selesai masuk ke pipeline yang sudah di buat, pilih "configure"

Picture18

11. Pada blogtest pipeline, pilih tab "General"

Pada Repository URL pilih alamat url github

Pilih Credentials Github yang sudah di set sebelumnya

Tekan Simpan

Picture19

Picture20

12. Apabila telah selesai semua, bisa tekan tombol "Build Now" Apabila berhasil akan muncul "Stage View"

21_1

Picture21

13. Untuk melihat hasil dari docker image yang dibuat bisa langsung ke container registry yang sudah di buat sebelum nya di dalam Alibaba Cloud Console.

Pilih "blogrepo" kemudian pilih "tags"

Picture22

Di dalam page blog repo

Picture23

14. Setelah ini selesai maka bisa di lakukan pengetesan di dalam kubernetes

Install Docker Image dari Container Registry ke Alibaba Cloud Kubernetes

Pastikan sudah membuat Kubernetes di Alibaba Cloud, contoh yang saya akan gunakan adalah Alibaba Cloud Kubernetes Managed Service.

1. Masuk ke dalam console Alibaba Cloud Kubernetes, pilih Deployments

Picture24

2. Pilih Create From Image

Picture25

3. Masukkan Nama Pod

Kemudian Click "Next"

Picture26

4. Pilih Image Name dengan cara klik "Select Image"

Picture27

5. Pilih Blog Repo

Picture28

6. Masukkan Username Password Alibaba Cloud Container Registry

Picture29

7. Click tombol "Create" pada baris services

Setelah selesai tekan tombol "Create" di pojok kanan bawah

Picture30

Picture31

8. Nanti akan muncul status seperti ini

Picture32

9. Masuk ke dalam Services kemudian copy url tersebut dan paste di web browser

Picture33

Demikian tutorial integrasi dari Jenkins dengan Alibaba Cloud Container Registry.

0 0 0
Share on

Alibaba Cloud Indonesia

26 posts | 4 followers

You may also like

Comments

Alibaba Cloud Indonesia

26 posts | 4 followers

Related Products