continuous deployment ด้วย jenkins บน digitalocean
จริงๆอันนี้เป็นบันทึกระหว่างทำเฉยๆ จะไม่อธิบายละเอียดมากนะ
โดยเราจะมาทำ cd ผ่าน github กัน
ก่อนจะเริ่มกัน มาเตรียม droplet กันก่อน
เราจะเปิด droplet ไว้ 2 อัน สำหรับ deploy และ jenkins ตามรูป
มาเตรียม droplet deploy ให้สามารถรัน web ได้กัน
- ssh ไปยัง droplet deploy
- ติดตั้งโปรแกรมที่ต้องใช้
2. เตรียม project react ที่จะทำการ deploy ผ่าน docker ด้วยการ config 2 ไฟล์คือ
- Dockerfile
- docker-compose.yml
ตัวอย่างโค้ด ตาม link
3. ทำการ clone project react มาจาก git ด้วยคำสั่ง
git clone <url repository>
4. เข้าไปยัง โฟลเดอร์ที่ clone มา ด้วยคำสั่ง
cd <ชื่อโฟลเดอร์>
5. ทำการ build image และ container ด้วยคำสั่ง
docker-compose up -d — build
6. ทำการเปิด port ของ react ด้วยคำสั่ง
sudo ufw allow 3000
7. ลองเช็คว่าเข้า web ได้มั้ย โดยเราควรจะสามารถเข้า web ผ่าน http://<ip>:3000 ได้แล้ว
มาเตรียม droplet jenkins กัน
- ssh ไปยัง droplet jenkins
- ติดตั้ง jenkins ตาม link
- เปลี่ยนไปยัง user jenkins ด้วยคำสั่ง
su jenkins
3. สร้าง key ด้วยคำสั่ง
ssh-keygen -t rsa
โดย save ไปยังโฟลเดอร์ default คือ /var/lib/jenkins/.ssh/id_rsa
4. เปิดดู public key ด้วยคำสั่ง
cat ~/.ssh/id_rsa.pub
จากนั้นให้ copy เก็บเอาไว้
5. ssh ไปยัง droplet deploy
6. เปิดไฟล์สำหรับเก็บ public key ด้วยคำสั่ง
nano ~/.ssh/authorized_keys
7. ให้เอา public key ที่เรา copy จากข้อ 4 มาใส่ แล้ว save
8. จากนั้นเปลี่ยน permission ด้วยคำสั่ง
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
โอเค มาลองทำสอบกัน ให้ทำตามขั้นตอนดังนี้
- ssh ไปยัง droplet jenkins
- เปลี่ยนเป็น user jenkins ด้วยคำสั่ง su jenkins
- ssh กลับมายัง droplet deploy ด้วยคำสั่ง ssh root@<ip>
โดยจะต้องสามารถ ssh ในขั้นสุดท้ายได้เลย โดยไม่ต้องใส่ password เป็นอันเรียบร้อย
ต่อมา มา config การทำ cd กัน
- เข้าไปยัง web ของ jenkins ที่ลงไว้ โดย default url คือ <ip>:8080
- สร้าง job ใหม่ใน jenkins ตามรูป
4. ตั้งชื่อ job และเลือกเป็น free style project ตามรูป
5. ระบุ github repository และ branch ตามรูป
6. กำหนด build trigger เป็น github webhook ตามรูป
7. กำหนด build command ตามรูป
สุดท้าย มา config ให้ github ส่ง build command ไปยัง jenkins กัน
- เข้าไปยัง settings -> webhooks -> add webhook ตามรูป
2. เพิ่ม url ของ jenkins ตามด้วย /github-webhook ตามรูป
เอาละ มาทดสอบกัน
- push code ไปยัง branch main
- มาดู build history ใน web jenkins จะพบว่ามีการ run job deploy ตามรูป
เป็นอันที่เรียบร้อย
refs
How to set up CI/CD Pipeline for a node.js app with Jenkins | by Moshe Ezderman | Medium