
ที่มาภาพ: Unknown Source
วิธีตั้งค่าและใช้ GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวเพื่อทำอัตโนมัติการทดสอบและดีพลอยโค้ดอย่างปลอดภัย
⚡ สรุป 30 วิ
GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวช่วยให้คุณทำ **การทดสอบอัตโนมัติ** และ **ดีพลอยโค้ด** อย่างปลอดภัยโดยไม่ต้องพึ่งบริการคลาวด์สาธารณะ บทความนี้จะพาคุณตั้งค่า GitLab, Runner, และ pipeline ขั้นพื้นฐานจนพ…
Overview
GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวช่วยให้คุณทำ การทดสอบอัตโนมัติ และ ดีพลอยโค้ด อย่างปลอดภัยโดยไม่ต้องพึ่งบริการคลาวด์สาธารณะ บทความนี้จะพาคุณตั้งค่า GitLab, Runner, และ pipeline ขั้นพื้นฐานจนพร้อมใช้งาน
Prerequisites
ก่อนเริ่มต้องตรวจสอบสภาพแวดล้อมพื้นฐานเพื่อให้การติดตั้งราบรื่น
- เซิร์ฟเวอร์ Linux (Ubuntu 20.04 หรือ CentOS 8) มี CPU ≥ 2 core, RAM ≥ 4 GB, Disk ≥ 20 GB
- โดเมนหรือ IP ที่เข้าถึงได้จากภายนอก พร้อม TLS/SSL (Let’s Encrypt แนะนำ)
- Docker หรือ Shell runtime สำหรับ Runner (Docker แนะนำเพื่อความแยกจากระบบ)
- สิทธิ์ sudo หรือ root บนเซิร์ฟเวอร์
Install GitLab
ติดตั้ง GitLab แบบ Self‑Managed ตามขั้นตอนต่อไปนี้
- **ขั้นที่ 1: เพิ่ม repository ของ GitLab
```bash curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash ```
- **ขั้นที่ 2: ติดตั้งแพคเกจพร้อมระบุ URL ของเซิร์ฟเวอร์
```bash sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee ```
- **ขั้นที่ 3: รอให้ `gitlab-ctl reconfigure` เสร็จแล้วเปิดเว็บเพจเพื่อตั้งค่า admin password
Tip: ตรวจสอบไฟล์ `/etc/gitlab/gitlab.rb` เพื่อเปิดการบังคับใช้ HTTPS** เท่านั้นและปิดการเชื่อมต่อ HTTP
Configure Runner
Runner คือเอเจนต์ที่ทำงานตาม pipeline ต้องลงทะเบียนกับ GitLab ก่อน
- **ขั้นที่ 1: ติดตั้ง Runner บนเครื่องเดียวกันหรือเครื่องแยก (แนะนำใช้ Docker)
```bash curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-runner ```
- ขั้นที่ 2: ลงทะเบียน Runner ด้วย token ที่ได้จากหน้า Settings CI/CD Runners**
```bash sudo gitlab-runner register ```
- เลือก executor เป็น `docker` หรือ `shell` ตามความต้องการ
- ตั้ง tag เช่น `docker-runner` เพื่อระบุในไฟล์ `.gitlab-ci.yml`
- ขั้นที่ 3: ปรับแต่งไฟล์ `/etc/gitlab-runner/config.toml` ให้ใช้ Docker image ที่ปลอดภัย (เช่น `alpine:latest`) และเปิด protected** runner เพื่อให้เฉพาะ branch ที่ได้รับอนุญาตเท่านั้นที่ใช้ได้
Create .gitlab-ci.yml
ไฟล์นี้บรรยายขั้นตอนของ pipeline ทั้งหมด
```yaml stages:
- test
- build
- deploy
variables: NODE_ENV: "production"
test_job: stage: test image: node:18-alpine script:
- npm ci
- npm test
tags:
- docker-runner
build_job: stage: build image: node:18-alpine script:
- npm run build
artifacts: paths:
- dist/
tags:
- docker-runner
deploy_job: stage: deploy image: alpine:latest script:
- apk add --no-cache openssh-client
- ssh $DEPLOY_USER@$DEPLOY_HOST "mkdir -p /var/www/app && rsync -avz --delete dist/ $DEPLOY_USER@$DEPLOY_HOST:/var/www/app/"
only:
- main
tags:
- docker-runner
```
- stages กำหนดลำดับการทำงานจากซ้ายไปขวา
- variables ใช้เก็บค่าที่ทุก job สามารถเข้าถึงได้
- artifacts ส่งผลลัพธ์จากขั้น build ไปยังขั้น deploy
Secure Secrets
การเก็บข้อมูลลับต้องทำผ่าน CI/CD Variables ของ GitLab
- ไปที่ Settings CI/CD Variables แล้วเพิ่มค่า
- `DEPLOY_USER` – ชื่อผู้ใช้ SSH
- `DEPLOY_HOST` – IP หรือโดเมนของเซิร์ฟเวอร์ปลายทาง
- `DEPLOY_PRIVATE_KEY` – คีย์ส่วนตัว (เลือก Protected และ Masked)
**Warning: อย่าใส่คีย์ส่วนตัวลงใน `.gitlab-ci.yml` หรือรีโพสิทอรีโดยตรง
Pipeline Stages
การจัดสรรขั้นตอนทำให้ระบบทำงานอย่างมีประสิทธิภาพ
| Stage | จุดประสงค์ | ตัวอย่างเครื่องมือ |
|---|---|---|
| Test | ตรวจสอบโค้ดด้วย unit/integration test | `npm test`, `pytest` |
| Build | สร้าง artefact ที่พร้อมดีพลอย | `npm run build`, `docker build` |
| Deploy | ส่ง artefact ไปยังเซิร์ฟเวอร์ปลายทาง | `rsync`, `ssh`, `kubectl` |
- ทุก stage ควร run on protected runner เพื่อป้องกันการรันจาก fork หรือ merge request ที่ไม่ได้ตรวจสอบ
- ใช้ cache หากขั้นตอนบางอย่างต้องการไฟล์เดียวกันซ้ำหลายครั้ง (เช่น `node_modules`)
Common Tips & Pitfalls
- ใช้ Docker executor เสมอหากต้องการความแยกสภาพแวดล้อม ระวัง image ที่อาจมีช่องโหว่เก่า
- ตั้งค่า timeout ของ job ให้เหมาะสม (ค่าเริ่มต้น 1 hour) เพื่อหลีกเลี่ยง pipeline ค้างนานเกินไป
- ตรวจสอบ runner logs (`/var/log/gitlab-runner/`) หาก job ล้มเหลวบ่อยครั้ง
- หากต้องการ rolling deployment ให้เพิ่ม stage พิเศษที่ทำการตรวจสอบ health ของเซิร์ฟเวอร์หลัง deploy
Tip: ใช้ environment protection** ของ GitLab เพื่อบังคับให้การดีพลอยไปยัง production ต้องได้รับการอนุมัติจากผู้ดูแลระบบ
Summary
การตั้งค่า GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวต้องอาศัยการเตรียมสภาพแวดล้อม, การติดตั้ง GitLab, การตั้งค่า Runner, การเขียนไฟล์ `.gitlab-ci.yml`, และการจัดการความลับอย่างปลอดภัย
- ตรวจสอบสเปคเซิร์ฟเวอร์และเปิดใช้งาน HTTPS ก่อนติดตั้ง GitLab
- ลงทะเบียน Runner ด้วย tag ที่สอดคล้องกับไฟล์ CI
- ใช้ variables เพื่อเก็บคีย์และข้อมูลลับ
- แบ่ง pipeline เป็น test build deploy เพื่อความชัดเจนและปลอดภัย
- ปรับ runner ให้ใช้ Docker image ที่อัปเดตและตั้งค่า protected runner เพื่อจำกัดการเข้าถึง
ทำตามขั้นตอนเหล่านี้คุณจะได้ระบบ CI/CD ที่ทำงานอัตโนมัติอย่างมั่นคงและปลอดภัยบนเซิร์ฟเวอร์ส่วนตัวของคุณเอง.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธีตั้งค่าและใช้ GitLab CI/CD บนเซิร์ฟเวอร์ส่วนตัวเพื่อทำอัตโนมัติการทดสอบและดีพลอยโค้ดอย่างปลอดภัย
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 29 มิถุนายน 2569 เวลา 17:51
- URL ต้นฉบับ
- https://thaitech.news/articles/growth-690421



