มาติดตั้ง Jenkins เพื่อทำ CI/CD สำหรับ Android กันเถอะ (Step 1)
Thanks to Theerapat Hataitam , Wisanu Choungsuwanish
บทความนี้ผู้เขียนจะนำเสนอเรื่องของการทำ CI (continuous integration) และ CD (continuous delivery) โดยใช้การ Develop บน Android และนำ Source code ขึ้นไปไว้ที่ Gitlab จากนั้น จึง integration ไปที่ Jenkins เพื่อทำ CI และ CD
โดยผู้เขียนจัดทำบทความนี้ขึ้นเพื่อศึกษาและประกอบความเข้าใจในการทำงานของเครื่องมือ เพื่อผู้เขียนจะนำไปใช้งานด้านอื่นๆ ซึ่งตัว Gitlab เองก็มี CI/CD ของตัวเองอยู่ ผู้อ่านสามารถศึกษาและใช้งานได้ไม่ยากที่ ทำ CI/CD ใน Android ด้วย Gitlab CI
โดยผู้เขียนจะขอแบ่งขั้นตอนออกเป็นส่วนๆ ดังนี้
Step 1 : Install และ Setup Jenkins บน CentOS Server
Step 2 : Integration Jenkins กับ Gitlab
Step 3 : Build และ Run Unit Test ของ Application
Step 1 : Install และ Setup Jenkins บน CentOS Server
เริ่มต้นด้วยผู้อ่านต้องมี Server สำหรับติดตั้ง Jenkins ก่อน ซึ่งสามารถหาใช้บริการ Cloud Server ได้หลากหลายผู้ให้บริการ โดยผู้เขียนจะใช้บริการของ Google Cloud ซึ่งทาง Google Cloud เองก็มี Plugin สำหรับ Jenkins ให้ด้วยนะ สามารถศึกษาได้ที่ Using Jenkins for Distributed Builds on Compute Engine หรือใครจะใช้ Docker เพื่อสร้าง Container Jenkins ก็สามารถข้าม Step นี้ไปได้เลย โดยในบทความนี้จะใช้ OS CentOS 7 และพิมพ์คำสั่ง Install เอง เป็นตัวอย่างนะครับ เอาละมาเริ่มกันเลย
Install และ Update คำสั่ง
สำหรับผู้ที่สร้าง VM ขึ้นมาครั้งแรกก็ต้อง install คำสั่งต่างๆก่อน
$ sudo yum install wget$ sudo yum install epel-release$ sudo yum update$ sudo yum git
แล้วสั่ง Reboot
$ sudo reboot
สำหรับผู้ที่ใช้ Google Cloud ต้องไป Allow Port สำหรับ Jenkins ชะก่อน โดยเข้าเมนูตามรูปภาพได้เลยครับ
เมื่อเข้ามาแล้วก็ให้สร้าง Firewall rules โดยในบทความนี้จะกำหนด Port เป็น 8080 นะครับ สามารถตั้งค่าได้ดังนี้
- Name > allow-8080
- Targets > All instances in the network
- Source IP ranges > 0.0.0.0/0
- Protocols and ports > เลือก Specified protocols and ports และใส่ค่า tcp:8080
จากนั้นกด Save เป็นอันเสร็จการ Allow Port
Intall Java
เริ่มขั้นตอนติดตั้ง java กันโดยพิมพ์คำสั่ง
$ sudo yum install java-1.8.0-openjdk.x86_64
เมื่อ install เรียบร้อย ให้กำหนด environment variables 2 ตัว โดย run คำสั่งตามลำดับได้เลยครับ
$ sudo cp /etc/profile /etc/profile_backup$ echo ‘export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk’ | sudo tee -a /etc/profile$ echo ‘export JRE_HOME=/usr/lib/jvm/jre’ | sudo tee -a /etc/profile$ source /etc/profile
ผู้อ่านสามารถตรวจสอบว่ากำหนด environment variables เรียบร้อยแล้วโดย run คำสั่ง
$ echo $JAVA_HOME
$ echo $JRE_HOME
ถ้าแสดง Path ที่เราได้กำหนดก็เป็นอันเสร็จขั้นตอนการ Install Java
Install และ Setup Jenkins
พิมพ์คำสั่งสำหรับ เพิ่ม Repository Key ใน Server ตามลำดับ
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo$ sudo rpm — import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
จากนั้นพิมพ์คำสั่งสำหรับ Install Jenkins
$ sudo yum install jenkins
จากนั้นสั่ง Start Service และ Set Post ของ Service เป็น 8080 โดย Run คำสั่งตามลำดับดังนี้
$ sudo systemctl start jenkins.service$ sudo systemctl enable jenkins.service$ sudo firewall-cmd — zone=public — permanent — add-port=8080/tcp$ sudo firewall-cmd — reload
รอสักพักเราก็จะได้ jenkins แล้ว โดยเข้า http://ipเครื่อง:8080/ หากติดตั้งสำเร็จจะแสดงหน้าจอตามรูป
ขั้นตอนนี้เราจะต้องไปเอา Admin Password ของ Jenkins จาก Path ที่หน้าจอแสดงขึ้นมาด้วยคำสั่ง
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
ก็จะได้ password นำมาใส่ที่หน้า Jenkins ได้เลยครับ รอสักพัก ถ้า Password ถูกต้อง Jenkins จะแสดงสำหรับ ติดตั้ง Plugin ซึ่งทางผู้เขียนก็แนะนำให้เลือกอันซ้ายนะครับ
เมื่อ Jenkins ติดตั้ง Plugin เรียบร้อยก็จะเป็นหน้าการตั้งค่า Username และ Password สำหรับ Admin เมื่อตั้งเสร็จเรียบร้อย ก็เป็นอันเสร็จ Step การติดตั้ง Jenkins แล้วนะครับ เราก็จะได้ Jenkins เป็นของตัวเองแล้วครับ
ในขั้นตอนถัดไปจะเป็นการทำให้ Jenkins และ Gitlab ติดต่อกันได้ สามารถเข้าได้ที่ลิงค์ด้านล่างเลยครับ
Step 2 : Integration Jenkins กับ Gitlab