ปลั๊กอิน semantic-release เพื่อเผยแพร่ GitLab release
ขั้นตอน | คำอธิบาย |
---|---|
verifyConditions | ตรวจสอบการมีอยู่และความถูกต้องของการรับรองความถูกต้อง (ตั้งค่าผ่านตัวแปรสภาพแวดล้อม) |
publish | เผยแพร่รุ่น GitLab |
success | เพิ่มความคิดเห็นให้กับแต่ละปัญหา GitLab หรือคำขอรวมที่ได้รับการแก้ไขโดยการเปิดตัว |
fail | เปิดหรืออัปเดตปัญหา GitLab พร้อมข้อมูลเกี่ยวกับข้อผิดพลาดที่ทำให้การเปิดตัวล้มเหลว |
$ npm install @semantic-release/gitlab -D
ปลั๊กอินสามารถกำหนดค่าได้ในไฟล์การกำหนดค่า semantic-release :
{
"branches" : [ " main " ],
"plugins" : [
" @semantic-release/commit-analyzer " ,
" @semantic-release/release-notes-generator " ,
[
" @semantic-release/gitlab " ,
{
"gitlabUrl" : " https://custom.gitlab.com " ,
"assets" : [
{ "path" : " dist/asset.min.css " , "label" : " CSS distribution " },
{ "path" : " dist/asset.min.js " , "label" : " JS distribution " , "target" : " generic_package " },
{ "path" : " dist/asset.min.js " , "label" : " v${nextRelease.version}.js " },
{ "url" : " https://gitlab.com/gitlab-org/gitlab/-/blob/master/README.md " }
]
}
]
]
}
จากตัวอย่างนี้ รุ่น GitLab จะถูกเผยแพร่ไปยังอินสแตนซ์ https://custom.gitlab.com
จำเป็นต้องมี การกำหนดค่าการตรวจสอบสิทธิ์ GitLab และสามารถตั้งค่าได้ผ่านตัวแปรสภาพแวดล้อม
สร้างโทเค็นการเข้าถึงโครงการ โทเค็นการเข้าถึงกลุ่ม หรือโทเค็นการเข้าถึงส่วนบุคคลที่มีบทบาท นักพัฒนา (หรือสูงกว่า) และขอบเขต api
และทำให้พร้อมใช้งานในสภาพแวดล้อม CI ของคุณผ่านตัวแปรสภาพแวดล้อม GL_TOKEN
หากคุณใช้ GL_TOKEN
เป็นการตรวจสอบสิทธิ์ที่เก็บ Git ระยะไกล ก็จะต้องมีขอบเขต write_repository
ด้วย
หมายเหตุ : เมื่อรันด้วย dryRun
ต้องใช้ขอบเขต read_repository
เท่านั้น
ตัวแปร | คำอธิบาย |
---|---|
GL_TOKEN หรือ GITLAB_TOKEN | ที่จำเป็น. โทเค็นที่ใช้ในการตรวจสอบสิทธิ์กับ GitLab |
GL_URL หรือ GITLAB_URL | จุดสิ้นสุด GitLab |
GL_PREFIX หรือ GITLAB_PREFIX | คำนำหน้า GitLab API |
HTTP_PROXY หรือ HTTPS_PROXY | พร็อกซี HTTP หรือ HTTPS ที่จะใช้ |
NO_PROXY | รูปแบบที่ควรละเว้นพร็อกซี ดูรายละเอียดด้านล่าง |
ปลั๊กอินรองรับการส่งคำขอผ่านพร็อกซีเซิร์ฟเวอร์
คุณสามารถกำหนดค่าพร็อกซีเซิร์ฟเวอร์ผ่านตัวแปรสภาพแวดล้อม HTTPS_PROXY
: HTTPS_PROXY=http://proxyurl.com:8080
หากพร็อกซีเซิร์ฟเวอร์ของคุณต้องการการรับรองความถูกต้องให้ฝังชื่อผู้ใช้และรหัสผ่านใน URL: HTTPS_PROXY=http://user:[email protected]:8080
หากอินสแตนซ์ GitLab ของคุณถูกเปิดเผยผ่าน HTTP ธรรมดา (ไม่แนะนำ!) ให้ใช้ HTTP_PROXY
แทน
หากคุณต้องการเลี่ยงผ่านพร็อกซีสำหรับบางโฮสต์ ให้กำหนดค่าตัวแปรสภาพแวดล้อม NO_PROXY
: NO_PROXY=*.host.com, host.com
ตัวเลือก | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
gitlabUrl | จุดสิ้นสุด GitLab | ตัวแปรสภาพแวดล้อม GL_URL หรือ GITLAB_URL หรือ CI จัดเตรียมตัวแปรสภาพแวดล้อมหากทำงานบน GitLab CI/CD หรือ https://gitlab.com |
gitlabApiPathPrefix | คำนำหน้า GitLab API | ตัวแปรสภาพแวดล้อม GL_PREFIX หรือ GITLAB_PREFIX หรือ CI จัดเตรียมตัวแปรสภาพแวดล้อมหากทำงานบน GitLab CI/CD หรือ /api/v4 |
assets | อาร์เรย์ของไฟล์ที่จะอัปโหลดไปยังรีลีส ดูสินทรัพย์ | - |
milestones | อาร์เรย์ของชื่อเหตุการณ์สำคัญที่จะเชื่อมโยงกับการเผยแพร่ ดู API การเปิดตัว GitLab | - |
successComment | ความคิดเห็นที่จะเพิ่มในแต่ละปัญหาและคำขอรวมได้รับการแก้ไขโดยการเปิดตัว ดูความสำเร็จ | - ปัญหานี้ได้รับการแก้ไขแล้วในเวอร์ชัน ${nextRelease.version} ?nnการเผยแพร่นี้มีอยู่ในรุ่น GitLab |
successCommentCondition | ใช้เงื่อนไขนี้เป็นเงื่อนไขเมื่อจะแสดงความคิดเห็นเกี่ยวกับปัญหาหรือรวมคำขอ ดูความสำเร็จความคิดเห็นเงื่อนไข | - |
failComment | เนื้อหาของปัญหาที่สร้างขึ้นเมื่อการเผยแพร่ล้มเหลว ดูความล้มเหลวความคิดเห็น | ข้อความที่เป็นมิตรพร้อมลิงก์ไปยังเอกสารประกอบและการสนับสนุน semantic-release พร้อมรายการข้อผิดพลาดที่ทำให้การเปิดตัวล้มเหลว |
failTitle | ชื่อของปัญหาที่สร้างขึ้นเมื่อการเผยแพร่ล้มเหลว | The automated release is failing |
failCommentCondition | ใช้สิ่งนี้เป็นเงื่อนไข เมื่อจะแสดงความคิดเห็นหรือสร้างปัญหาในกรณีที่เกิดความล้มเหลว ดูfailCommentCondition | - |
labels | ป้ายกำกับที่จะเพิ่มในปัญหาที่สร้างขึ้นเมื่อการเปิดตัวล้มเหลว ตั้งค่าเป็น false เพื่อไม่ให้เพิ่มป้ายกำกับใดๆ ป้ายกำกับควรคั่นด้วยเครื่องหมายจุลภาคตามที่อธิบายไว้ในเอกสารอย่างเป็นทางการ เช่น "semantic-release,bot" | semantic-release |
assignee | ผู้รับมอบหมายให้เพิ่มปัญหาที่สร้างขึ้นเมื่อการเปิดตัวล้มเหลว | - |
อาจเป็น glob หรือ Array
ของ globs และ Object
ที่มีคุณสมบัติดังต่อไปนี้:
คุณสมบัติ | คำอธิบาย | ค่าเริ่มต้น |
---|---|---|
path | จำเป็น เว้นแต่จะตั้งค่า url glob เพื่อระบุไฟล์ที่จะอัปโหลด รองรับการสร้างเทมเพลต Lodash | - |
url | ทางเลือกอื่นในการตั้ง path ซึ่งให้ความสามารถในการเพิ่มลิงก์ไปยังการเผยแพร่ เช่น URL ไปยังอิมเมจคอนเทนเนอร์ รองรับการสร้างเทมเพลต Lodash | - |
label | คำอธิบายสั้น ๆ ของไฟล์ที่แสดงในรุ่น GitLab ละเว้นหาก path ตรงกับมากกว่าหนึ่งไฟล์ รองรับการสร้างเทมเพลต Lodash | ชื่อไฟล์ที่แยกจาก path |
type | ประเภทเนื้อหาที่แสดงในรุ่น GitLab สามารถ runbook , package , image และ other (ดูเอกสารอย่างเป็นทางการเกี่ยวกับทรัพย์สินที่เผยแพร่) รองรับการสร้างเทมเพลต Lodash | other |
filepath | เส้นทางไฟล์สำหรับสร้างลิงก์ถาวรที่ชี้ไปที่เนื้อหา (ต้องใช้ GitLab 12.9+ ดูเอกสารอย่างเป็นทางการเกี่ยวกับลิงก์ถาวร) ละเว้นหาก path ตรงกับมากกว่าหนึ่งไฟล์ รองรับการสร้างเทมเพลต Lodash | - |
target | ควบคุมตำแหน่งที่จะอัพโหลดไฟล์ไป สามารถตั้งค่าเป็น project_upload สำหรับจัดเก็บไฟล์เป็นการอัพโหลดโครงการ หรือ generic_package สำหรับจัดเก็บไฟล์เป็นแพ็คเกจทั่วไป | project_upload |
status | สิ่งนี้จะใช้เฉพาะเมื่อ target ถูกตั้งค่าเป็น generic_package สถานะแพ็คเกจทั่วไป สามารถเป็น default และ hidden (ดูเอกสารอย่างเป็นทางการเกี่ยวกับแพ็คเกจทั่วไป) | default |
แต่ละรายการใน Array
assets
จะถูกรวมเป็นรายบุคคล glob อาจเป็น String
( "dist/**/*.js"
หรือ "dist/mylib.js"
) หรือ Array
of String
s ที่จะถูกรวมเข้าด้วยกัน ( ["dist/**", "!**/*.css"]
)
หากมีการกำหนดค่าไดเร็กทอรี ไฟล์ทั้งหมดภายใต้ไดเร็กทอรีนี้และลูก ๆ ของไดเร็กทอรีจะถูกรวมไว้ด้วย
หมายเหตุ : หากไฟล์มีรายการที่ตรงกันใน assets
นั้นจะรวมอยู่ด้วยแม้ว่าจะมีรายการที่ตรงกันใน .gitignore
ก็ตาม
'dist/*.js'
: รวมไฟล์ js
ทั้งหมดในไดเร็กทอรี dist
แต่ไม่ใช่ในไดเร็กทอรีย่อย
[['dist', '!**/*.css']]
: รวมไฟล์ทั้งหมดในไดเร็กทอรี dist
และไดเร็กทอรีย่อย ยกเว้นไฟล์ css
[{path: 'dist/MyLibrary.js', label: 'MyLibrary JS distribution'}, {path: 'dist/MyLibrary.css', label: 'MyLibrary CSS distribution'}]
: รวม dist/MyLibrary.js
และ dist/MyLibrary.css
และติดป้ายกำกับว่า MyLibrary JS distribution
และ MyLibrary CSS distribution
ในรุ่น GitLab
[['dist/**/*.{js,css}', '!**/*.min.*'], {path: 'build/MyLibrary.zip', label: 'MyLibrary'}]
: รวม ไฟล์ js
และ css
ทั้งหมดในไดเร็กทอรี dist
และไดเร็กทอรีย่อย ไม่รวมเวอร์ชันย่อส่วน รวมถึงไฟล์ build/MyLibrary.zip
และติดป้ายกำกับเป็น MyLibrary
ใน GitLab release
ข้อความสำหรับความคิดเห็นของปัญหาถูกสร้างขึ้นด้วยเทมเพลต Lodash มีตัวแปรต่อไปนี้:
พารามิเตอร์ | คำอธิบาย |
---|---|
branch | Object ที่มีคุณสมบัติ name , type , channel , range และ prerelease ของสาขาที่รีลีสเสร็จสิ้น |
lastRelease | Object ที่มี version , channel , gitTag และ gitHead ของรุ่นล่าสุด |
nextRelease | Object ที่มี version , channel , gitTag , gitHead และ notes ของการเปิดตัวที่กำลังดำเนินการอยู่ |
commits | Array ของคอมมิต Object ที่มี hash subject message body และ author |
releases | Array ที่มี Object ของ release สำหรับแต่ละ release ที่เผยแพร่ พร้อมด้วยข้อมูล release ที่เป็นตัวเลือก เช่น name และ url |
issue | ออบเจ็กต์ปัญหา GitLab API ที่ความคิดเห็นจะถูกโพสต์ไป หรือ false เมื่อแสดงความคิดเห็นคำขอรวม |
mergeRequest | ออบเจ็กต์คำขอรวม GitLab API ที่ความคิดเห็นจะถูกโพสต์ไป หรือ false เมื่อแสดงความคิดเห็นปัญหา |
เงื่อนไขความคิดเห็นเกี่ยวกับความสำเร็จถูกสร้างขึ้นด้วยเทมเพลต Lodash มีตัวแปรต่อไปนี้:
พารามิเตอร์ | คำอธิบาย |
---|---|
branch | Object ที่มีคุณสมบัติ name , type , channel , range และ prerelease ของสาขาที่รีลีสเสร็จสิ้น |
lastRelease | Object ที่มี version , channel , gitTag และ gitHead ของรุ่นล่าสุด |
nextRelease | Object ที่มี version , channel , gitTag , gitHead และ notes ของการเปิดตัวที่กำลังดำเนินการอยู่ |
commits | Array ของคอมมิต Object ที่มี hash subject message body และ author |
releases | Array ที่มี Object ของ release สำหรับแต่ละ release ที่เผยแพร่ พร้อมด้วยข้อมูล release ที่เป็นตัวเลือก เช่น name และ url |
issue | ออบเจ็กต์ปัญหา GitLab API ที่ความคิดเห็นจะถูกโพสต์ไป |
mergeRequest | ออบเจ็กต์คำขอรวม GitLab API ที่ความคิดเห็นจะถูกโพสต์ไป |
false
หรือเทมเพลต: "<% return false; %>"
"<% return issue %>"
"<% return mergeRequest %>"
"<% return issue.labels?.includes('semantic-release-relevant') %>"
ตรวจสอบวัตถุคำขอผสาน GitLab API หรือวัตถุปัญหา GitLab API เพื่อดูคุณสมบัติที่สามารถใช้สำหรับตัวกรอง
ข้อความสำหรับเนื้อหาปัญหาถูกสร้างขึ้นด้วยเทมเพลต Lodash มีตัวแปรต่อไปนี้:
พารามิเตอร์ | คำอธิบาย |
---|---|
branch | สาขาที่การเปิดตัวล้มเหลว |
errors | Array ของ SemanticReleaseError แต่ละข้อผิดพลาดมีคุณสมบัติ message , code , pluginName และ details pluginName มีชื่อแพ็คเกจของปลั๊กอินที่ทำให้เกิดข้อผิดพลาดdetails ประกอบด้วยข้อมูลเกี่ยวกับข้อผิดพลาดที่จัดรูปแบบในมาร์กดาวน์ |
failComment
This release from branch ${branch.name} had failed due to the following errors:n- ${errors.map(err => err.message).join('\n- ')}
จะสร้าง ความคิดเห็น:
รุ่นจากต้นแบบสาขานี้ล้มเหลวเนื่องจากข้อผิดพลาดต่อไปนี้:
- ข้อความแสดงข้อผิดพลาด 1
- ข้อความแสดงข้อผิดพลาด 2
เงื่อนไขความคิดเห็นที่ล้มเหลวจะถูกสร้างขึ้นด้วยเทมเพลต Lodash มีตัวแปรต่อไปนี้:
พารามิเตอร์ | คำอธิบาย |
---|---|
branch | Object ที่มีคุณสมบัติ name , type , channel , range และ prerelease ของสาขาที่รีลีสเสร็จสิ้น |
lastRelease | Object ที่มี version , channel , gitTag และ gitHead ของรุ่นล่าสุด |
nextRelease | Object ที่มี version , channel , gitTag , gitHead และ notes ของการเปิดตัวที่กำลังดำเนินการอยู่ |
commits | Array ของคอมมิต Object ที่มี hash subject message body และ author |
releases | Array ที่มี Object ของ release สำหรับแต่ละ release ที่เผยแพร่ พร้อมด้วยข้อมูล release ที่เป็นตัวเลือก เช่น name และ url |
issue | ออบเจ็กต์ปัญหา GitLab API ที่ความคิดเห็นจะถูกโพสต์ - ใช้ได้เฉพาะในกรณีที่มีปัญหาเปิดอยู่เท่านั้น |
false
หรือเทมเพลต: "<% return false; %>"
"<% return branch.name === 'main' %>"
wip
: "<% return !issue.labels?.includes('wip') %>"
ตรวจสอบออบเจ็กต์ปัญหา GitLab API เพื่อดูคุณสมบัติที่สามารถใช้สำหรับตัวกรอง
ปลั๊กอินเวอร์ชันล่าสุดนี้เข้ากันได้กับ GitLab เวอร์ชันที่รองรับในปัจจุบันทั้งหมด ซึ่งเป็นเวอร์ชันหลักในปัจจุบันและเวอร์ชันหลักสองเวอร์ชันก่อนหน้า ไม่รับประกันว่าปลั๊กอินนี้จะทำงานกับ GitLab เวอร์ชันที่ไม่รองรับได้
หากคุณใช้ GitLab.com หรืออัปเกรดอินสแตนซ์ GitLab ที่โฮสต์เองเป็น 14.0 โปรดใช้เวอร์ชัน >=6.0.7
ของปลั๊กอินนี้
ใน GitLab 14.0 การสร้างรุ่นโดยใช้แท็ก API ได้ถูกลบออกแล้ว (ดู # 290311) ปลั๊กอินนี้ได้รับการอัปเดตเพื่อใช้ Releases API แทนใน #184 ซึ่งมีให้ใช้งานในเวอร์ชัน 6.0.7
ขึ้นไป