การใช้ GitLab สำหรับแชร์ Configuration ให้คนในทีม โดยไม่ใช้แชท
Anuchit Prasertsang

Anuchit Prasertsang @anuchito

Location:
Thailand
Joined:
Jan 6, 2020

การใช้ GitLab สำหรับแชร์ Configuration ให้คนในทีม โดยไม่ใช้แชท

Publish Date: Oct 31 '24
1 0

ปัญหา

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

ใช้ GitLab Secure files ในการแชร์ Configuration

สร้างไฟล์ที่จะแชร์ นำไปไว้ที่ GitLab Repository

  1. สร้างไฟล์ที่จะเก็บ configuration ขึ้นมาในโปรเจคของเรา กรณีนี้เราจะสร้างไฟล์ชื่อ env.backend ขึ้นมา ซึ่งเป็น key-value ของ environment ของ backend ตัวอย่างเช่น
ENV_BACKEND=production
DATABASE_URL=postgres://user:password@host:port/dbname
Enter fullscreen mode Exit fullscreen mode
  1. ไปที่ GitLab โปรเจคของเรา แล้วไปที่ Settings > CI/CD > Secure files แล้วอัพโหลดไฟล์ env.backend ขึ้นไป

ใช้ Secure Files API ในการดึงไฟล์จาก GitLab ลงมาที่เครื่องของเรา

  1. สร้าง Personal Access Token ใน GitLab โดยไปที่ User Settings > Access Tokens แล้วสร้าง Token ขึ้นมา
  2. ใช้ Token ที่สร้างขึ้นมาในการดึงไฟล์จาก GitLab โดยใช้ Secure Files API โดยใช้คำสั่ง
    curl --header "PRIVATE-TOKEN: <GITLAB_ACCESS_TOKEN>" \
        "https://gitlab.com/api/v4/projects/<PROJECT_ID>/secure_files/<FILE_ID>/download" \
        --output <OUTPUT_FILE_NAME>
Enter fullscreen mode Exit fullscreen mode

โดยที่

  • <GITLAB_ACCESS_TOKEN> คือ Personal Access Token ที่สร้างขึ้นมา
  • <PROJECT_ID> คือ ID ของโปรเจคที่เรา (อยู่ใกล้ปุ่ม Fork ของโปรเจค หรือไปที่ Settings > General แล้วดูที่ Project ID)
  • <FILE_ID> คือ ID ของไฟล์ที่เราอยากดาวน์โหลด เราสามารถใช้ Secure Files API ในการดูรายละเอียดของไฟล์ทั้งหมดได้
  • <OUTPUT_FILE_NAME> คือ ชื่อไฟล์ที่เราอยากจะบันทึกไฟล์ที่ดาวน์โหลดลงมาในเครื่องของเรา

ดูรายละเอียดของ Secure Files ทั้งหมด

curl --header "PRIVATE-TOKEN: <GITLAB_ACCESS_TOKEN>" \
    "https://gitlab.com/api/v4/projects/<PROJECT_ID>/secure_files"
Enter fullscreen mode Exit fullscreen mode

ตัวอย่างผลลัพธ์

[
        {
                "id": 2233783, // FILE_ID
                "filename": "env.backend", // FILE_NAME
                "filesize": 30,
                "filetype": "text/plain",
                ... // รายละเอียดอื่นๆ
        }
]
Enter fullscreen mode Exit fullscreen mode

เพียงเท่านี้เราก็สามารถแชร์ configuration ระหว่างนักพัฒนาได้โดยไม่ต้องส่งผ่านทางแชทอีกต่อไป

อ้างอิง

Secure File API

Comments 0 total

    Add comment