GoCD เป็นโอเพ่นซอร์สการส่งต่อและระบบอัตโนมัติ ช่วยให้คุณสามารถสร้างแบบจำลองเวิร์กโฟลว์ที่ซับซ้อนโดยใช้การดำเนินการแบบขนานและต่อเนื่อง แผนที่กระแสค่าของมันช่วยให้คุณเห็นภาพเวิร์กโฟลว์ที่ซับซ้อนได้อย่างง่ายดาย GoCD ช่วยให้คุณสามารถเปรียบเทียบสองบิลด์และปรับใช้แอพพลิเคชั่นทุกรุ่นที่คุณต้องการ ระบบนิเวศ GoCD ประกอบด้วยเซิร์ฟเวอร์ GoCD และตัวแทน GoCD GoCD มีหน้าที่รับผิดชอบในการควบคุมทุกอย่างเช่นการใช้งานอินเทอร์เฟซผู้ใช้บนเว็บและการจัดการและการจัดหางานให้กับตัวแทน ตัวแทนไปมีหน้าที่รับผิดชอบในการทำงานและการปรับใช้
ข้อกำหนดเบื้องต้น
- อินสแตนซ์เซิร์ฟเวอร์ Vultr Ubuntu 16.04 ที่มี RAM อย่างน้อย 2GB
- sudo ผู้ใช้
- ชื่อโดเมนที่ชี้ไปยังเซิร์ฟเวอร์
สำหรับบทช่วยสอนนี้เราจะใช้192.168.1.1
เป็นที่อยู่ IP สาธารณะและ gocd.example.com
เป็นชื่อโดเมนที่ชี้ไปยังอินสแตนซ์ Vultr โปรดตรวจสอบให้แน่ใจว่าได้แทนที่ชื่อโดเมนและที่อยู่ IP ตัวอย่างทั้งหมดด้วยชื่อจริง
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง Ubuntu 16.04 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง Java
ติดตั้ง Java
GoCD ต้องการ Java เวอร์ชัน 8 และรองรับทั้ง Oracle Java และ OpenJDK เพิ่มที่เก็บ Ubuntu สำหรับ Oracle Java 8
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update
ติดตั้ง Oracle Java
sudo apt -y install oracle-java8-installer
ตรวจสอบเวอร์ชั่น
java -version
คุณจะเห็นผลลัพธ์ต่อไปนี้
user@vultr:~$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
ตั้งค่าพา ธ เริ่มต้นสำหรับ Java โดยการติดตั้งแพ็คเกจต่อไปนี้
sudo apt -y install oracle-java8-set-default
คุณสามารถตรวจสอบว่าJAVA_HOME
มีการตั้งค่าโดยการทำงาน
echo $JAVA_HOME
แล้วคุณจะได้เห็น.
user@vultr:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle
หากคุณไม่เห็นผลลัพธ์ใด ๆ เลยคุณจะต้องออกจากระบบเชลล์ปัจจุบันและกลับเข้าสู่ระบบ
ติดตั้ง GoCD
ติดตั้งที่เก็บข้อมูลอย่างเป็นทางการของ GoCD เข้าสู่ระบบ
echo "deb https://download.gocd.org /" | sudo tee /etc/apt/sources.list.d/gocd.list
curl https://download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
sudo apt update
ติดตั้งเซิร์ฟเวอร์ GoCD ในระบบของคุณ
sudo apt install -y go-server
เริ่ม GoCD และเปิดใช้งานโดยอัตโนมัติเมื่อเริ่มต้นระบบ
sudo systemctl start go-server
sudo systemctl enable go-server
ก่อนที่เราจะเข้าถึงแดชบอร์ด GoCD มาสร้างไดเรกทอรีใหม่เพื่อเก็บสิ่งประดิษฐ์ Artifact สามารถเก็บไว้ในดิสก์เดียวกับที่ติดตั้งระบบปฏิบัติการและแอปพลิเคชัน หรือคุณสามารถใช้ดิสก์เฉพาะหรือไดรฟ์จัดเก็บข้อมูลบล็อกเพื่อเก็บสิ่งประดิษฐ์
หากคุณต้องการใช้ดิสก์เดียวกันเพื่อจัดเก็บสิ่งประดิษฐ์เพียงแค่สร้างไดเรกทอรีใหม่และมอบสิทธิ์การเป็นเจ้าของแก่ผู้ใช้ GoCD
sudo mkdir /opt/artifacts
sudo chown -R go:go /opt/artifacts
ซอฟต์แวร์ GoCD แนะนำให้คุณใช้พาร์ติชันหรือไดรฟ์เพิ่มเติมเพื่อจัดเก็บสิ่งประดิษฐ์ ในแพลตฟอร์มการรวมและส่งมอบอย่างต่อเนื่องสิ่งประดิษฐ์จะถูกสร้างขึ้นบ่อยครั้งมาก พื้นที่ดิสก์ลดลงเมื่อเวลาผ่านไปเมื่อมีการสร้างสิ่งประดิษฐ์ใหม่อย่างต่อเนื่อง ในบางขั้นตอนระบบของคุณจะมีพื้นที่ว่างในดิสก์เหลือเพียงพอและบริการที่ทำงานบนระบบของคุณจะล้มเหลว เพื่อแก้ไขปัญหานี้คุณสามารถแนบไดรฟ์จัดเก็บข้อมูล Vultr บล็อกใหม่เพื่อจัดเก็บสิ่งประดิษฐ์ หากคุณยังต้องการเก็บข้อมูลสิ่งประดิษฐ์ในไดรฟ์เดียวกันให้ข้ามไปที่ส่วน "กำหนดค่า GoCD"
ปรับใช้ไดรฟ์จัดเก็บข้อมูลบล็อกใหม่ และแนบกับเซิร์ฟเวอร์ GoCD ของคุณ ตอนนี้สร้างพาร์ติชันใหม่บนอุปกรณ์จัดเก็บข้อมูลบล็อก
sudo parted -s /dev/vdb mklabel gpt
sudo parted -s /dev/vdb unit mib mkpart primary 0% 100%
สร้างระบบไฟล์บนดิสก์ใหม่
sudo mkfs.ext4 /dev/vdb1
เมานต์ไดรฟ์จัดเก็บข้อมูลบล็อก
sudo mkdir /mnt/artifacts
sudo cp /etc/fstab /etc/fstab.backup
echo "
/dev/vdb1 /mnt/artifacts ext4 defaults,noatime 0 0" | sudo tee -a /etc/fstab
sudo mount /mnt/artifacts
ตอนนี้ทำงานและคุณจะเห็นไดรฟ์จัดเก็บบล็อกใหม่ติดตั้งอยู่บนdf
/mnt/artifacts
[user@vultr ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 20616252 6313892 13237464 33% /
...
/dev/vdb1 10188052 36888 9610596 1% /mnt/artifacts
มอบความเป็นเจ้าของไดเรกทอรีให้กับผู้ใช้ GoCD
sudo chown -R go:go /mnt/artifacts
ตอนนี้คุณสามารถเข้าถึงแดชบอร์ดของ GoCD http://192.168.1.1:8153
ได้แล้ว ในการเข้าถึงแดชบอร์ด GoCD https://192.168.1.1:8154
ในการเชื่อมต่อการรักษาความปลอดภัยการเข้าถึง คุณจะได้รับข้อผิดพลาดแสดงว่าใบรับรองไม่ถูกต้อง คุณสามารถเพิกเฉยต่อข้อผิดพลาดได้อย่างปลอดภัยเนื่องจากใบรับรองนั้นลงชื่อด้วยตนเอง เพื่อความปลอดภัยคุณควรใช้แดชบอร์ดผ่านการเชื่อมต่อที่ปลอดภัย
ก่อนที่คุณจะตั้งค่าไพพ์ไลน์ใหม่ให้ไปที่ " Admin >> Server Configuration
" จากแถบการนำทางด้านบน
ป้อน URL ไปยังไซต์ที่ไม่ปลอดภัยของคุณในSite URL
ฟิลด์ "" และไซต์ที่ปลอดภัยในSecure Site URL
ฟิลด์ ""
จากนั้นระบุรายละเอียดเซิร์ฟเวอร์ SMTP ของคุณเพื่อส่งการแจ้งเตือนทางอีเมลจาก GoCD
ในที่สุดให้เส้นทางไปยังตำแหน่งที่คุณต้องการเก็บสิ่งประดิษฐ์ หากคุณเลือกที่จะเก็บสิ่งประดิษฐ์ไว้ในดิสก์เดียวกับระบบปฏิบัติการให้ป้อน /opt/artifacts
; /mnt/artifacts
ถ้าคุณเลือกที่จะแนบไดรฟ์เก็บบล็อกแล้วคุณสามารถป้อน
นอกจากนี้คุณยังสามารถกำหนดค่า GoCD เพื่อลบสิ่งประดิษฐ์เก่าโดยอัตโนมัติ กำหนดค่าตัวเลือกถัดไปตามขนาดดิสก์ของคุณ อย่างไรก็ตามตัวเลือกการลบอัตโนมัติไม่ได้ทำการสำรองสิ่งประดิษฐ์เก่าของคุณ หากต้องการสำรองข้อมูลด้วยตนเองแล้วลบสิ่งประดิษฐ์เก่าให้ปิดใช้งานการลบอัตโนมัติโดยเลือกNever
ตัวเลือก "" สำหรับตัวเลือก " Auto delete old artifacts
"
คุณจะต้องรีสตาร์ทเซิร์ฟเวอร์ GoCD เพื่อให้มีการเปลี่ยนแปลงใหม่
sudo systemctl restart go-server
ตั้งค่าการรับรองความถูกต้อง
ตามค่าเริ่มต้นแดชบอร์ด GoCD ไม่ได้รับการกำหนดค่าให้ใช้การรับรองความถูกต้องทุกประเภท แต่รองรับการตรวจสอบความถูกต้องโดยใช้ไฟล์รหัสผ่านและ LDAP ในบทช่วยสอนนี้เราจะตั้งค่าการรับรองความถูกต้องด้วยรหัสผ่าน
หมายเหตุ : การตั้งค่าการตรวจสอบความถูกต้องเป็นขั้นตอนเพิ่มเติม แต่แนะนำให้ใช้กับเซิร์ฟเวอร์สาธารณะเช่น Vultr
ติดตั้งเครื่องมือ Apache เพื่อให้เราสามารถใช้ htpasswd
คำสั่งเพื่อสร้างไฟล์รหัสผ่านที่เข้ารหัส
sudo apt -y install apache2-utils
สร้างไฟล์รหัสผ่านด้วย htpasswd
คำสั่งโดยใช้การเข้ารหัส Bcrypt
sudo htpasswd -B -c /etc/go/passwd_auth goadmin
ระบุรหัสผ่านสำหรับผู้ใช้สองครั้ง คุณจะเห็นผลลัพธ์ต่อไปนี้
[user@vultr ~]$ sudo htpasswd -B -c /etc/go/passwd_auth goadmin
New password:
Re-type new password:
Adding password for user goadmin
คุณสามารถเพิ่มผู้ใช้ได้มากเท่าที่คุณต้องการโดยใช้คำสั่งเดียวกันด้านบน แต่ลบ -c
ตัวเลือกออก -c
ตัวเลือกที่จะเข้ามาแทนที่ไฟล์ที่มีอยู่แทนผู้ใช้กับผู้ใช้ใหม่
sudo htpasswd -B /etc/go/passwd_auth gouser1
ตอนนี้เราได้สร้างไฟล์รหัสผ่านให้เข้าถึงแดชบอร์ด GoCD อีกครั้ง นำทางไปยัง " Admin >> Security >> Authorization Configurations
" จากแถบนำทางด้านบน คลิกที่ Add
ปุ่มและระบุ ID ใด ๆ เลือก " Password File Authentication Plugin for GoCD
" สำหรับ ID ปลั๊กอินและกำหนดพา ธ ไปยังไฟล์รหัสผ่าน ตอนนี้คลิกที่Check Connection
ปุ่ม "" เพื่อตรวจสอบว่า GoCD สามารถใช้ไฟล์รหัสผ่านสำหรับการตรวจสอบ
สุดท้ายให้บันทึกวิธีการตรวจสอบความถูกต้อง โหลดแดชบอร์ดใหม่และจะนำคุณออกจากระบบโดยอัตโนมัติ คุณจะเห็นหน้าจอเข้าสู่ระบบทันที เข้าสู่ระบบโดยใช้ข้อมูลรับรองที่สร้างขึ้นก่อนหน้านี้
คุณจะต้องส่งเสริมผู้ใช้ผู้ดูแลระบบด้วยตนเองมิฉะนั้นผู้ใช้ทั้งหมดจะมีสิทธิ์ผู้ดูแลระบบ นำทางไปยัง " Admin >> User Summary
" จากแถบนำทางด้านบน
ตอนนี้เลือกผู้ใช้ผู้ดูแลระบบที่คุณสร้างและคลิกที่ " Roles
" หล่นลง โปรโมตผู้ใช้ไปยังผู้ดูแลระบบเพียงคนเดียวโดยเลือกGo System Administrator
ช่องทำเครื่องหมาย ""
ในการเพิ่มผู้ใช้ใน GoCD ที่สร้างขึ้นในไฟล์รหัสผ่านให้คลิกที่ADD
ปุ่ม "" และค้นหาผู้ใช้เพื่อเพิ่มพวกเขา ผู้ใช้จะถูกเพิ่มไปยังแดชบอร์ด GoCD โดยอัตโนมัติในการเข้าสู่ระบบครั้งแรก เห็นได้ชัดว่าสำหรับผู้ใช้ในการเข้าสู่ระบบพวกเขาจะต้องเพิ่มลงในไฟล์รหัสผ่านที่เราได้สร้างไว้ก่อนหน้านี้
การรักษาความปลอดภัย GoCD ด้วย Let's Encrypt SSL
โดยค่าเริ่มต้น GoCD จะฟังพอร์ต 8153
และ 8154
การเชื่อมต่อที่ปลอดภัย แม้ว่าพอร์ต 8154
จะให้การเชื่อมต่อที่ปลอดภัยไปยังแอปพลิเคชัน แต่ก็ยังแสดงข้อผิดพลาดของเบราว์เซอร์เนื่องจากใช้ใบรับรองที่ลงชื่อด้วยตนเอง ในบทนี้เราจะทำการติดตั้งและรักษาความปลอดภัย Nginx ด้วยใบรับรอง SSL ฟรีของ Encrypt เว็บเซิร์ฟเวอร์ Nginx จะทำงานเป็น reverse proxy เพื่อส่งต่อคำร้องขอขาเข้าไปยังHTTP
ปลายทางของ GoCD
ติดตั้ง Nginx
sudo apt -y install nginx
เริ่ม Nginx และเปิดใช้งานให้เริ่มโดยอัตโนมัติในเวลาบูต
sudo systemctl start nginx
sudo systemctl enable nginx
เพิ่มที่เก็บ Certbot
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
ติดตั้ง Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA
sudo apt -y install certbot
หมายเหตุ : ในการรับใบรับรองจาก Let's Encrypt CA โดเมนที่จะสร้างใบรับรองนั้นจะต้องชี้ไปที่เซิร์ฟเวอร์ หากไม่มีให้ทำการเปลี่ยนแปลงที่จำเป็นกับระเบียน DNS ของโดเมนและรอให้ DNS เผยแพร่ก่อนทำการขอใบรับรองอีกครั้ง Certbot ตรวจสอบอำนาจโดเมนก่อนที่จะให้ใบรับรอง
สร้างใบรับรอง SSL
sudo certbot certonly --webroot -w /var/www/html -d gocd.example.com
/etc/letsencrypt/live/gocd.example.com/
ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน ใบรับรอง SSL จะถูกเก็บไว้เป็น และคีย์ส่วนตัวจะถูกเก็บไว้เป็นfullchain.pem
privkey.pem
ลองเข้ารหัสใบรับรองหมดอายุใน 90 วันดังนั้นขอแนะนำให้ตั้งค่าการต่ออายุใบรับรองโดยอัตโนมัติโดยใช้งาน cron
เปิดไฟล์งาน cron
sudo crontab -e
เพิ่มบรรทัดต่อไปนี้ในตอนท้ายของไฟล์
30 5 * * * /usr/bin/certbot renew --quiet
งาน cron ข้างต้นจะทำงานทุกวันเวลา 5.30 น. หากใบรับรองถึงกำหนดหมดอายุจะมีการต่ออายุโดยอัตโนมัติ
สร้างไฟล์การกำหนดค่าใหม่สำหรับเว็บอินเตอร์เฟสของ GoCD
sudo nano /etc/nginx/sites-available/gocd
เติมไฟล์
upstream gocd {
server 127.0.0.1:8153;
}
server {
listen 80;
server_name gocd.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name gocd.example.com;
ssl_certificate /etc/letsencrypt/live/gocd.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gocd.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/gocd.access.log;
location / {
proxy_pass http://gocd;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
}
location /go {
proxy_pass http://gocd/go;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection upgrade;
proxy_read_timeout 86400;
}
}
เปิดใช้งานไฟล์การกำหนดค่า
sudo ln -s /etc/nginx/sites-available/gocd /etc/nginx/sites-enabled/gocd
รีสตาร์ทเว็บเซิร์ฟเวอร์ Nginx เพื่อใช้การเปลี่ยนแปลงการกำหนดค่า
sudo systemctl restart nginx
https://gocd.example.com
ตอนนี้คุณสามารถเข้าถึงแดชบอร์ดที่ GoCD เข้าสู่แผงควบคุมของคุณโดยใช้ข้อมูลประจำตัวของผู้ดูแลระบบและไปที่ " Admin >> Server Configuration
" จากแถบการนำทางด้านบน
ตั้ง " Site URL
" และ " Secure Site URL
" https://gocd.example.com
เพื่อ
การติดตั้ง GoCD Agent
ในสภาพแวดล้อมการรวมอย่างต่อเนื่องของ GoCD ตัวแทนของ GoCD คือพนักงานที่รับผิดชอบในการดำเนินงานทั้งหมด เมื่อตรวจพบการเปลี่ยนแปลงในแหล่งที่มาไปป์ไลน์จะถูกทริกเกอร์และงานที่ได้รับมอบหมายให้คนงานที่มีอยู่สำหรับการดำเนินการ ตัวแทนจะดำเนินงานและรายงานสถานะสุดท้ายหลังจากดำเนินการ
ในการรันไปป์ไลน์ต้องมีการกำหนดค่าอย่างน้อยหนึ่งเอเจนต์ ดำเนินการติดตั้งเอเจนต์ GoCD บนเซิร์ฟเวอร์ GoCD
เนื่องจากเราได้นำเข้าที่เก็บ GoCD ไปยังเซิร์ฟเวอร์แล้วเราจึงสามารถติดตั้ง Go Agent ได้โดยตรง
sudo apt install -y go-agent
ตอนนี้เริ่มต้นเซิร์ฟเวอร์ GoCD และเปิดใช้งานให้เริ่มโดยอัตโนมัติในเวลาบูต
sudo systemctl start go-agent
sudo systemctl enable go-agent
เอเจนต์ GoCD ที่ทำงานบน localhost จะเปิดใช้งานโดยอัตโนมัติเมื่อตรวจพบ