แนะนำการใช้งาน GitLab Server เบื้องต้น

Saharat Sattee
SCB TechX
Published in
3 min readJan 7, 2022

ใช้งานเบื้องต้น

หลังจากที่เราติดตั้งกันเสร็จเรียบร้อยแล้วในบทความก่อนหน้า ต่อมาในบทความนี้เราจะมาลองดูกันว่ามีอะไรให้เราเล่นบ้างและมีอะไรเพิ่มเติมขึ้นมา จาก GitLab SaaS ที่เราใช้ ๆ กันอยู่ทุกวันนี้บ้าง ซึ่งสิ่งแรกที่เห็นได้ชัดเลยก็คือ User Interface ที่ไม่ต่างกับ GitLab SaaS ภาพรวมการใช้งานพื้นฐานยังคงไม่มีอะไรต่างกันและเรายังสามารถที่จะสร้าง Group และ Project ได้ทันทีรวมไปถึงการ Clone project ลงบนเครื่อง Local ของเราก็ยังทำได้ เรียกได้ว่าการใช้งานนั้นเหมือน GitLab SaaS แทบทุกประการ

แล้วสิ่งที่เพิ่มขึ้นมาคืออะไร ซึ่งถ้าหากเราสังเกตุดี ๆ ทางด้านมุมบนซ้ายมือที่ปุ่ม Menu เมื่อลองกดเข้าไปเราจะพบกับเมนู Admin (ปรากฎเฉพาะกับ Account ที่เป็น Admin เท่านั้น) ซึ่งเมื่อเราลองเข้าไปดูก็จะพบว่ามีส่วนของการตั้งค่าระบบทั้งหมด ซึ่งส่วนนี้คือสิ่งที่ผมได้กล่าวไปข้างต้นว่าเราสามารถที่จะเปลี่ยนข้อกำหนดการใช้งานในระบบ หรือกำหนดสิทธิ์การใช้งานของผู้ใช้ในระบบเราได้และยังรวมไปถึงการติดตั้ง Tools ต่าง ๆ ที่เกี่ยวข้องกับการพัฒนา Software และ Analytics DevOps Report ทีนี้เราจะมาดูกันคร่าว ๆ ว่าแต่ละส่วนสามารถทำอะไรได้บ้าง

Overview

เมื่อเราเข้ามาที่เมนู Admin แล้วสิ่งแรกที่จะเห็นคือในส่วนของ Instance overview ซึ่งก็จะเป็นส่วนที่รวบรวมข้อมูลที่สำคัญต่าง ๆ ในระบบเช่น Project, User, Group ทั้งหมดในระบบ และมี Features อะไรที่เราเปิดใช้งานอยู่บ้างในตอนนี้ ซึ่งในแต่ละส่วนก็จะมีเมนูย่อยเป็น Shortcut เพื่อให้เราเข้าไปดูรายละเอียดต่าง ๆ ที่แสดงอยู่บนหน้าจอของเราได้ เช่น เราอยากดู User ใหม่ที่เข้ามาใช้งานระบบ ก็สามารถกด View latest users เพื่อดูได้จากหน้านี้ทันที

รูปที่ 1 หน้าต่าง Admin dashboard overview

ซึ่งหากเราลองกดไปที่หน้าเมนู User เราก็จะเห็น User ทั้งหมดที่อยู่ในระบบและนอกจากนี้เรายังสามารถเข้าไปแก้ไขข้อมูลต่าง ๆ ของ User ได้อีกด้วยไม่ว่าจะเป็นการเปลี่ยน name, username, password และรวมไปถึงการเปลี่ยน Access ของ User ว่าเราจะให้เค้าสามารถสร้าง Project ได้เท่าไร สามารถที่จะสร้าง Group ได้หรือไม่ ซึ่งก็จะเหมือนกับที่ผมกล่าวไปก่อนหน้านี้ว่าเราสามารถจำกัดสิทธิ์การใช้งานของ User ในระบบเราได้

รูปที่ 2 หน้าต่างเปลี่ยนข้อมูลของ User ในระบบ

Analytics

ถัดมาเราจะมาดูในส่วนของ Analytics กันบ้างซึ่งหากเราลองเข้ามาดูเราก็จะพบกับเมนู 2 ส่วนซึ่งคือ DevOps Report และ Usage Trends โดยทั้ง 2 ส่วนนี้เราสามารถเข้ามาดูได้โดยไม่ต้องทำการติดตั้ง Tools เสริมอะไรเลย โดยเมื่อมีการใช้งานในระบบไปสักพักระบบจะทำการวิเคราะห์การใช้งานทั้งหมดที่เกิดขึ้นในระบบมาให้เอง ซึ่งถือว่าสะดวกมาก

รูปที่ 3 หน้า Analytics ในส่วนของ Usage Trends

Monitoring

ต่อมาในส่วนของ Monitoring ซึ่งแน่นอนว่าเราไม่ต้องทำการติดตั้ง Tools ใด ๆ เพิ่มก็สามารถเรียกใช้งานได้ทันที ซึ่งจะเป็นการแสดงข้อมูลภาพรวมของระบบเราว่ามีสภาพการใช้งานอย่างไร เช่น ใช้หน่วยความจำไปเท่าไร, ทรัพยากรในระบบเหลือเพียงพอต่อการใช้งานหรือไม่ และยังสามารถดู Health Check ได้อีกด้วย

รูปที่ 4 หน้า Monitoring ในส่วนของ Background Jobs

Settings

สุดท้ายผมขอพาข้ามในส่วนของ Settings ของระบบ ซึ่งหากเราเข้ามาดูก็จะพบกับเมนูการตั้งค่าพื้นฐานของระบบทั้งหมดไม่ว่าจะเป็น General, Repository, CI/CD และ Appearance เป็นต้น ซึ่งผมคงจะอธิบายไม่ครบทุกตัว (เยอะเกิน ฮ่า ๆ ) แต่จะแนะนำคร่าว ๆ ว่ามีส่วนการตั้งค่าอะไรบ้าง

General

  • Visibility and access controls ซึ่งเป็นการตั้งค่าเริ่มต้นและจำกัดสิทธิ์การใช้งาน รวมไปถึงกำหนดค่าแหล่งนำเข้าของโปรเจกต์ที่เอาไว้สำหรับ Import project จากที่อื่นมาใช้บนระบบ Git ของเราเอง
  • Account and limit กำหนดว่าผู้ใช้ในระบบจะสามารถสร้างโปรเจคได้กี่โปรเจกต์ และโปรเจกต์นึงมีขนาดได้ไม่เกินเท่าไร
  • Sign-up restrictions กำหนดการสร้างรหัสผ่านของผู้ใช้ เช่น รหัสผ่านต้องมีตัวอักษรขั้นต่ำกี่ตัว ต้องยืนยันอีเมล์ไหม เป็นต้น
  • Sign-in restrictions การเข้าใช้งานในระบบจะต้องมีข้อกำหนดอะไรบ้าง จำเป็นต้องทำ Two-factor authentication หรือเปล่า เป็นต้น

Repository

สำหรับในส่วนนี้ก็ไม่มีอะไรมากครับตามชื่อเลย จะเน้นเป็นการตั้งค่าเกี่ยวกับ Repository ทั้งหมด เช่น การตั้งชื่อให้ Branch หลักของแต่ละ Project ว่าจะให้ชื่อว่าอะไร เป็นต้น

Appearance

ในส่วนนี้จะเป็นการปรับแต่ง Text และ Icon ในระบบ เช่น เปลี่ยนรูป Icon จาก GitLab เป็น Icon ขององค์กรเรา หรือว่าเพิ่ม Icon องค์กรเราไว้ที่หน้า Login เป็นต้น ซึ่งเราสามารถจัดการได้หมด

รูปที่ 5 หน้า Setting ในส่วนของ Appearance ของระบบ

ลองปรับแต่งการ Login

อีกจุดเด่นนึงของการเลือกใช้ GitLab Self-Managed คือ มีความยืดหยุ่นในการปรับแต่งการใช้งานสูง เช่น การเพิ่มวิธีการ Login ทางเลือกแบบ SSO (Single Sign-On) ซึ่งสามารถทำได้โดยนำ Authentication Service ต่าง ๆ มาทำงานร่วมกับ GitLab ของเราได้ ซึ่งในบทความนี้จะสาธิตการใช้งานควบคู่กับ Auth0 ซึ่งก็เป็น Authentication Service ตัวหนึ่ง และหากเพื่อน ๆ คนใดสนใจก็สามารถตามไปอ่านได้ที่ลิงค์นี้

ป.ล. เราควรทำความเข้าใจและศึกษาเกี่ยวกับ Auth0 เบื้องต้นก่อนนะครับ

โดยขั้นแรกให้เพื่อน ๆ เชื่อมต่อ Instance ที่ติดตั้ง GitLab ผ่าน SSH หล้งจากนั้นให้เปิดไฟล์ /etc/gitlab/gitlab.rb เหมือนเดิมที่เราเคยเข้ามาและมองหาส่วนของ OmniAuth Setting หลังจากนั้นให้แก้ไข Config ต่อไปนี้

gitlab_rails[‘omniauth_allow_single_sing_on’] = [‘auth0’]

gitlab_rails[‘omniauth_auto_link_user’] = [‘auth0’]

gitlab_rails['omniauth_providers'] = [
{
"name" => "auth0",
"args" => { client_id: 'YOUR_CLIEND_ID,
client_secret: 'YOUR_CLIEND_ID ',
domain: 'YOUR_DOMAIN',
scope: 'SCOPE'
}
}
]
รูปที่ 6 การ Set OmniAuth Setting ที่ GitLab Config

หลังจากแก้ไขเสร็จแล้วก็ Save แล้วทำการ Reconfig 1 ครั้งด้วยคำสั่ง

$  sudo gitlab-ctl reconfigure

เท่านี้ก็เป็นอันเสร็จ และเมื่อเรากลับมาดูที่หน้าจอ Login ของเราก็จะพบว่ามีเมนู Login ด้วย Auth0 ขึ้นมา

รูปที่ 7 แสดงถึงหน้าจอ Login GitLab Self-Managed ที่มีการ Login ทางเลือกของ Auth0

เมื่อกดไปที่ Auth0 ก็จะมีหน้าต่างสำหรับ Login ของ Auth0 ขึ้นมาและเราสามารถเลือกได้ว่าจะ Authenticate โดยใช้ Email และ Password หรือ Login ด้วย Social Login อื่น ๆ ตามที่เราตั้งค่าไว้ที่ Auth0

รูปที่ 7 แสดงถึงหน้าจอ Login ของ Auth0 ที่มีการ Login ด้วย Facebook

สรุป

มาถึงตรงนี้แล้วเป็นยังไงกันบ้างครับ อย่างที่ผมบอกใช่ไหมว่าการติดตั้งเจ้า GitLab Self-Managed บน AWS ของเราเนี่ยไม่ยากเลยแถมการใช้งานเบื้องต้นก็ไม่ได้ต่างกับ GitLab SaaS ด้วย แต่ที่เพิ่มเติมมาคือความสามารถในการปรับแต่งที่สูงขึ้น เพื่อให้เหมาะสมกับการใช้งานของเรา รวมไปถึงการควบคุม การจำกัดสิทธิ์ต่าง ๆ ของผู้ของผู้ใช้ในระบบเรา และยังมี Tools ต่าง ๆ เพื่อเพิ่มความสะดวกให้แก่เรา ซึ่งหากเพื่อน ๆ คนไหนต้องการนำไปใช้งานในระบบองค์กรหรือทำงานร่วมกับเพื่อนร่วมทีมผมก็อยากฝากให้เพื่อน ๆ ลองพิจารณาเป็นตัวเลือกในการใช้งานนะครับ

สุดท้ายนี้ก่อนจากลากันไปหากในบทความนี้มีข้อผิดพลาดประการใดที่เกิดขึ้นผมต้องขออภัยไว้ล่วงหน้าด้วยนะครับและหวังเป็นอย่างยิ่งว่าบทความนี้จะเป็นประโยชน์แก่เพื่อน ๆ ที่เข้ามาอ่านทุกท่าน

--

--