เริ่มต้น Jenkins part 2: บนเครื่องตัวเอง

Phai Panda
4 min readDec 1, 2019

--

รู้จักและฝึกใช้เครื่องมือ CI/CD อย่าง Jenkins บนเครื่อง macOS ของตัวเอง (ใช้งานได้ฟรีตลอดชีพ)

ยินดีรับใช้ครับนายหัว

“The leading open source automation server”

“support building, deploying and automating any project”

เครื่องมือนี้ผมเรียกเขาว่าพ่อบ้าน เห็นใช้กันเยอะ มีคนเขียน config ให้ ผมก็ใช้เก่ง แต่ถ้าจะให้มาเขียน config เองนั้นผมยังทำไม่ได้ หลายคนบอกว่าง่าย แต่เท่าที่ผมทราบจากปัญหาที่เกิดขึ้นในงาน ผมจะไม่รู้เรื่อง config คงไม่ได้แล้ว

Google ค้นหาไปว่า

jenkins download

จะพบว่าสามารถติดตั้งได้กับหลายระบบปฏิบัติการและเทคโนโลยี ไม่ว่าจะเป็น

  • Docker
  • FreeBSD
  • Gentoo
  • macOS
  • OpenBSD
  • openSUSE
  • Red Hat/Fedora/CentOS
  • Ubuntu/Debian
  • Windows
  • Generic Java package (.war)

ที่ผมสนใจทั้งอยากรู้อยากลองนำ Jenkins ไปใช้ เช่น Docker, macOS, Red Hat และ Windows

ตอนนี้ใช้กับ macOS ก่อน (หรือ Mac) ดูว่าเราจะศึกษา เริ่มต้น และเข้าใจพ่อบ้านคนนี้ได้อย่างไรบ้าง

ติดตั้ง Jenkins บน Mac

ติดตั้งผ่านตัวจัดการ packages ชื่อ Homebrew งั้นเราไปชมดูก่อนว่าจะติดตั้งมันได้อย่างไร

Google ไปว่า

homebrew install

คัดลอกคำสั่งที่มันแนะนำไปแปะใน Terminal ได้เลย

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

ทีนี้ก็กลับมาติดตั้ง Jenkins

brew install jenkins-lts

ติดตั้ง Jenkins บน Windows

แต่เครื่องผมเป็น Windows ติดตั้งไงอะ? เข้าใจครับ แต่เราไม่ได้พูดเรื่องเครื่อง Windows ใน part นี้ เอาเป็นว่าไปส่องดูของชาวบ้านเขาก่อน ทำตามเขาไป

Jenkins ต้องการ JDK

อย่าลืมนะครับว่า Jenkins ต้องการเทคโนโลยีจาวา ดังนั้นเราจึงต้องติดตั้ง JDK และกำหนด JAVA_HOME ให้เรียบร้อย สำหรับเครื่องที่ผมใช้ ใช้ JDK 1.8 (แนะนำ) ทั้งยังกำหนด JAVA_HOME แล้วในไฟล์ .bash_profile

ตรงไปยัง home directory

cd ~

แก้ไข .bash_profile (ถ้ามี) ด้วยโปรแกรม vi

vi .bash_profile

ถ้าไม่มี .bash_profile มาก่อน ก็สร้างขึ้น

touch .bash_profile

โปรแกรม vi ใช้อย่างไร Google เลยจ้านาทีนี้ ส่วนเนื้อหาที่เพิ่มเข้าไปในไฟล์ .bash_profile คือเจ้านี่ (ตาม JDK เวอร์ชันที่ไปโหลดมาจาก Oracle)

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home"

background or foreground service?

จะรัน Jenkins แบบ background หรือ foreground ก็เลือกเอาครับ ความต่างที่จะเห็นได้ชัดเจนคือ foreground นี่พอเราปิด Terminal ไปเฉยๆ service ก็จะตายไปด้วยเลย

รันแบบ background ก็ว่า

brew services start jenkins-lts

รันแบบ foreground ก็ว่า

jenkins-lts

และ Jenkins กำหนด default port ที่ 8080 รันแล้วก็ให้เปิด browser ขึ้นมาชมดูครับ

อยากลบ Jenkins ทิ้งแบบ clean clean ทำไง?

บอกก่อนว่าไฟล์ config ของมันเก็บไว้ที่

<home>/.jenkins

เกิดอะไรขึ้นมาอยาก reset ทุกสิ่งอย่างเริ่มต้นใหม่ก็ให้ uninstall ก่อน จากนั้นก็ไปลบ .jenkins แล้วจึงลงใหม่อีกครั้ง เครนะ ถือว่าทำเป็น

ติดตั้ง Jenkins ครั้งแรก

และเมื่อเรารัน Jenkins ขึ้นมาครั้งแรก มันจะให้รหัสผ่านสำหรับหน้า Unlock Jenkins นี้มาให้

แต่ถ้าเกิดว่าไม่เห็นหรือเป็นการรันครั้งถัดๆไป แบบว่าข้าน้อยลืมไป ก็ให้เข้าไปแกะ password ได้ที่ไฟล์

/Users/<user-name>/.jenkins/secrets/initialAdminPassword

ถัดมาคือขั้นตอนการติดตั้ง plugin ซึ่งจะขอข้ามไปก่อน หากจำเป็นต้องใช้ตัวไหนค่อยมาติดตั้งเอาทีหลัง ดังนั้นกดปุ่ม x บนมุมขวาเลยครับ

แล้วจึงกดปุ่ม Start using Jenkins ได้เลย

ระบุ username เป็น admin และ password เดิมข้างต้น

จัดสดเสร็จกิจ

หมายเหตุ เพื่อนคนไหนที่ทำแล้วไม่บรรลุถึงขึ้นตอนนี้ให้ลอง restart Jenkins server ใหม่ หรือไม่ก็คิดดีๆว่า port 8080 เราถูกใช้ไปแล้วหรือเปล่า

เปลี่ยนรหัสผ่าน

ขอแนะนำให้เปลี่ยนรหัสผ่านจะได้ง่ายต่อการจดจำของเราเอง

ให้มองหาเมนู admin (มุมบนขวา) จากนั้นมองหาเมนู Configure แล้วก็ Password

บันทึกแล้วมันจะบังคับให้ login อีกครั้ง

กำหนด JAVA_HOME ให้ Jenkins

ไปยังหน้าแรกของ Jenkins ด้วยการกดที่ logo คุณลุงพ่อบ้าน (มุมบนซ้าย) เลือก Manage Jenkins เลือก Global Tool Configuration

พิมพ์ที่ Terminal ขอดู path ของ JAVA_HOME หน่อย

echo $JAVA_HOME

ผลลัพธ์

/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home

ดังนั้นที่หน้านี้ก็เขียน config ตามนี้ครับ

บันทึกเป็นอันเรียบร้อย

Hello Jenkins!

จินตนาการว่าเราเป็นมหาเศรษฐี มีบ้านหลังใหญ่ เราก็จะต้องจ้างพ่อบ้านไว้คนหนึ่ง คอยรับคำสั่งจากเราเพื่อไปจัดการงานทั้งหมดที่เกิดขึ้นภายในบ้าน พ่อบ้านจะทำสิ่งที่เรียกว่า job เราจึงต้องสร้าง job ให้กับพ่อบ้าน

job แรกนี้เอาง่ายๆก่อน เป็นว่า “Hello Jenkins”

กดที่ logo พ่อบ้าน แล้วเลือก New Item

  • Enter an item name คือชื่อโปรเจกต์
  • ในขณะนี้จะมีให้เลือกรูปแบบเดียวคือ Freestyle project ก็เลือกไปแล้วกด OK

แท็บ General

  • Source Code Management เลือกเป็น None (ตอนนี้มีเท่านี้)
  • Build Triggers ปล่อยว่างทั้งหมด
  • Build ก็เลือกที่ตรงกับ OS ของเรา อย่างของผมเป็น macOS จึงเลือก Execute shell แต่ถ้าของเพื่อนๆเป็น Windows ก็เลือก Execute Windows batch command
macOS เลือก Execute shell
echo เบาๆ

เสร็จแล้วก็บันทึก

ไม่รอช้าครับ กดเมนู Build Now ด้านซ้ายมือเลย

จะปรากฏรายการคำสั่ง build ทั้งหมด ณ Build History แต่ละรายการประกอบไปด้วยสัญลักษณ์กลมๆสีน้ำเงิน (success) กับครั้งที่ build ตามนี้

ผมลองกดลูกบอลสีน้ำเงินนั่น มันก็ลิงก์ไปยังเมนู Console Output บอกว่าได้ทำคำสั่งอะไรไป แล้วได้ผลลัพธ์เช่นไร

อธิบายผลที่เกิดใน Console Output ตามลำดับ

  • Started by user คือเรา admin
  • Running as ก็คือระบบของเรา System
  • Building in workspace คือโปรเจกต์ได้บันทึกไว้ที่ไหน
  • [ชื่อโปรเจกต์] ตามด้วยคำสั่งที่พ่อบ้านเรียกใช้ไฟล์ xxx.sh
  • คำสั่งที่เราเขียนใน Execute shell ที่ผ่านมา
  • ผลลัพธ์ของคำสั่ง Execute shell
  • สุดท้ายคือ สำเร็จ (success) หรือล้มเหลว (fail)

ก็ขอจบ part เริ่มต้น Jenkins บนเครื่องของตนเองไว้เท่านี้ก่อน part ถัดไปจะทำอย่างเดียวกันนี้บน Amazon EC2 พร้อมกับ Git ครับ

--

--

Responses (1)