用於發布 GitLab 版本的語意發布外掛程式。
步 | 描述 |
---|---|
verifyConditions | 驗證身份驗證的存在和有效性(透過環境變數設定)。 |
publish | 發布 GitLab 版本。 |
success | 向該版本解決的每個 GitLab 問題或合併請求新增評論。 |
fail | 開啟或更新 GitLab 問題,其中包含導致發布失敗的錯誤的資訊。 |
$ npm install @semantic-release/gitlab -D
該插件可以在語義發布設定檔中配置:
{
"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
範圍建立專案存取權杖、群組存取權杖或個人存取權令牌,並透過GL_TOKEN
環境變數使其在 CI 環境中可用。如果您使用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 | 與版本關聯的一系列里程碑標題。請參閱 GitLab 發布 API。 | - |
successComment | 新增至該版本解決的每個問題和合併請求的註解。查看成功評論。 | ?此問題已在版本 ${nextRelease.version} 中解決? |
successCommentCondition | 使用此作為條件,何時評論問題或合併請求。請參閱 successCommentCondition。 | - |
failComment | 發布失敗時創建的問題的內容。請參閱失敗註釋。 | 友善的訊息,包含語義發布文件和支援的鏈接,以及導致發布失敗的錯誤列表。 |
failTitle | 發布失敗時創建的問題的標題。 | The automated release is failing |
failCommentCondition | 將此作為條件,在發生故障時發表評論或建立問題。請參閱failCommentCondition。 | - |
labels | 新增至發布失敗時所建立的問題的標籤。設定為false 不添加任何標籤。標籤應該按照官方文件中的描述以逗號分隔,例如"semantic-release,bot" 。 | semantic-release |
assignee | 新增到發布失敗時創建的問題的受讓人。 | - |
可以是 glob 或 glob 和Object
的Array
,具有以下屬性:
財產 | 描述 | 預設 |
---|---|---|
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 |
assets
Array
中的每個條目都是單獨通配的。 glob 可以是一個String
( "dist/**/*.js"
或"dist/mylib.js"
) 或將被組合在一起的String
Array
( ["dist/**", "!**/*.css"]
)。
如果配置了目錄,則將包含該目錄及其子目錄下的所有檔案。
注意:如果文件在assets
中具有匹配項,即使它在.gitignore
中也具有匹配項,該文件也會被包含在內。
'dist/*.js'
:包含dist
目錄中的所有js
文件,但不包含其子目錄中的所有 js 檔案。
[['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
文件,並在 GitLab 版本中將它們標記為MyLibrary JS distribution
和MyLibrary CSS distribution
。
[['dist/**/*.{js,css}', '!**/*.min.*'], {path: 'build/MyLibrary.zip', label: 'MyLibrary'}]
: 包含dist
目錄及其子目錄中的所有js
和css
文件(不包括縮小版),加上build/MyLibrary.zip
文件,並在 GitLab 版本中將其標記為MyLibrary
。
問題評論的訊息是使用 Lodash 模板產生的。以下變數可用:
範圍 | 描述 |
---|---|
branch | 具有name 、 type 、 channel 、 range 和發布完成的分支的prerelease 屬性的Object 。 |
lastRelease | 具有最新版本的version 、 channel 、 gitTag 和gitHead 的Object 。 |
nextRelease | 包含version 、 channel 、 gitTag 、 gitHead 和正在完成的發布的notes 的Object 。 |
commits | 包含hash 、 subject 、 body message 和author 的提交Object Array 。 |
releases | 包含發布Array 每個已發布的發布的Object ,以及可選的發布數據,例如name 和url 。 |
issue | 評論將發佈到的 GitLab API Issue 對象,或在評論合併請求時為false 。 |
mergeRequest | 評論將發佈到的 GitLab API 合併請求對象,或在評論問題時為false 。 |
成功評論條件是用Lodash模板產生的。以下變數可用:
範圍 | 描述 |
---|---|
branch | 具有name 、 type 、 channel 、 range 和發布完成的分支的prerelease 屬性的Object 。 |
lastRelease | 具有最新版本的version 、 channel 、 gitTag 和gitHead 的Object 。 |
nextRelease | 包含version 、 channel 、 gitTag 、 gitHead 和正在完成的發布的notes 的Object 。 |
commits | 包含hash 、 subject 、 body message 和author 的提交Object Array 。 |
releases | 包含發布Array 每個已發布的發布的Object ,以及可選的發布數據,例如name 和url 。 |
issue | 評論將發佈到的 GitLab API Issue 物件。 |
mergeRequest | 評論將發佈到的 GitLab API 合併請求物件。 |
false
或模板化: "<% return false; %>"
"<% return issue %>"
"<% return mergeRequest %>"
"<% return issue.labels?.includes('semantic-release-relevant') %>"
檢查 GitLab API 合併請求物件或 GitLab API 問題物件以取得可用於篩選器的屬性
問題內容的訊息是使用 Lodash 模板產生的。以下變數可用:
範圍 | 描述 |
---|---|
branch | 發布失敗的分支。 |
errors | SemanticReleaseError Array 。每個錯誤都有message 、 code 、 pluginName 和details 屬性。pluginName 包含引發錯誤的插件的套件名稱。details 包含有關 Markdown 格式的錯誤的資訊。 |
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 | 具有name 、 type 、 channel 、 range 和發布完成的分支的prerelease 屬性的Object 。 |
lastRelease | 具有最新版本的version 、 channel 、 gitTag 和gitHead 的Object 。 |
nextRelease | 包含version 、 channel 、 gitTag 、 gitHead 和正在完成的發布的notes 的Object 。 |
commits | 包含hash 、 subject 、 body message 和author 的提交Object Array 。 |
releases | 包含發布Array 每個已發布的發布的Object ,以及可選的發布數據,例如name 和url 。 |
issue | 評論將發佈到的 GitLab API Issue 物件 - 僅在存在未決問題時可用。 |
false
或模板化: "<% return false; %>"
"<% return branch.name === 'main' %>"
wip
,則不發表評論: "<% return !issue.labels?.includes('wip') %>"
檢查 GitLab API Issue 物件中可用於篩選器的屬性
該插件的最新版本與GitLab目前支援的所有版本相容,即當前的主要版本和之前的兩個主要版本。不保證此插件可以與不受支援的 GitLab 版本一起使用。
如果您使用的是 GitLab.com 或已將自架 GitLab 實例升級到 14.0,請使用此外掛程式的版本>=6.0.7
。
在 GitLab 14.0 中,使用 Tags API 建立版本已被刪除(請參閱# 290311)。該插件已更新為在 #184 中使用 Releases API,該插件在6.0.7
及更高版本中可用。