GitLab リリースを公開するためのsemantic-releaseプラグイン。
ステップ | 説明 |
---|---|
verifyConditions | 認証の存在と有効性を確認します (環境変数によって設定されます)。 |
publish | GitLab リリースを公開します。 |
success | リリースによって解決された各 GitLab 問題またはマージ リクエストにコメントを追加します。 |
fail | リリースの失敗の原因となったエラーに関する情報を含む GitLab Issue を開くか更新します。 |
$ 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
スコープを使用して、プロジェクト アクセス トークン、グループ アクセス トークン、または個人用アクセス トークンを作成し、 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 環境変数、または GitLab CI/CD またはhttps://gitlab.com で実行している場合は CI が提供する環境変数。 |
gitlabApiPathPrefix | GitLab API プレフィックス。 | GL_PREFIX またはGITLAB_PREFIX 環境変数、または GitLab CI/CD または/api/v4 で実行している場合は CI が提供する環境変数。 |
assets | リリースにアップロードするファイルの配列。資産を参照してください。 | - |
milestones | リリースに関連付けるマイルストーン タイトルの配列。 「GitLab リリース API」を参照してください。 | - |
successComment | リリースによって解決された各問題およびマージ リクエストに追加するコメント。 success コメントを参照してください。 | ?この問題はバージョン ${nextRelease.version} で解決されましたか?nnこのリリースは GitLab リリースで利用可能です |
successCommentCondition | これを、いつ問題にコメントしたりリクエストをマージしたりするかという条件として使用します。 successCommentCondition を参照してください。 | - |
failComment | リリースが失敗したときに作成される問題の内容。 「failComment」を参照してください。 | セマンティック リリースのドキュメントとサポートへのリンク、リリースの失敗の原因となったエラーのリストを含むフレンドリーなメッセージ。 |
failTitle | リリースが失敗したときに作成される問題のタイトル。 | The automated release is failing |
failCommentCondition | これを、失敗の場合にコメントしたり問題を作成したりするときの条件として使用します。 「failCommentCondition」を参照してください。 | - |
labels | リリースが失敗したときに作成される問題に追加するラベル。ラベルを追加しない場合はfalse に設定します。ラベルは、公式ドキュメントに記載されているように、カンマで区切る必要があります (例: "semantic-release,bot" 。 | semantic-release |
assignee | リリースが失敗したときに作成される問題に追加する担当者。 | - |
グロブ、またはグロブのArray
、および次のプロパティを持つObject
を指定できます。
財産 | 説明 | デフォルト |
---|---|---|
path | url が設定されていない場合は必須です。アップロードするファイルを識別するグロブ。 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
内の各エントリは個別にグロブされます。グロブはString
( "dist/**/*.js"
または"dist/mylib.js"
)、またはまとめてグロブされるString
のArray
( ["dist/**", "!**/*.css"]
)。
ディレクトリが設定されている場合は、このディレクトリの下にあるすべてのファイルとその子が含まれます。
注: ファイルのassets
に一致がある場合、 .gitignore
にも一致がある場合でも、そのファイルは含まれます。
'dist/*.js'
: dist
ディレクトリ内のすべての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'}]
: include 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 | 公開された各リリースの release Object を含むArray 。 name やurl などのオプションのリリース データも含まれます。 |
issue | コメントが投稿される GitLab API Issue オブジェクト、またはマージ リクエストにコメントする場合はfalse 。 |
mergeRequest | コメントが投稿される GitLab API Merge Request オブジェクト、または問題にコメントする場合は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 | 公開された各リリースの release Object を含むArray 。 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 Merge Request オブジェクトまたは GitLab API Issue オブジェクトを確認してください。
課題内容のメッセージは Lodash テンプレートを使用して生成されます。次の変数が使用可能です。
パラメータ | 説明 |
---|---|
branch | リリースが失敗したブランチ。 |
errors | SemanticReleaseError のArray 。各エラーには、 message 、 code 、 pluginName 、およびdetails プロパティがあります。pluginName エラーをスローしたプラグインのパッケージ名が含まれます。details マークダウン形式でフォーマットされたエラーに関する情報が含まれます。 |
This release from branch ${branch.name} had failed due to the following errors:n- ${errors.map(err => err.message).join('\n- ')}
failComment
生成されます。コメント:
ブランチ マスターからのこのリリースは、次のエラーにより失敗しました。
- エラーメッセージ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 | 公開された各リリースの release Object を含むArray 。 name やurl などのオプションのリリース データも含まれます。 |
issue | コメントが投稿される GitLab API Issue オブジェクト。未解決の問題が存在する場合にのみ使用できます。 |
false
に設定するか、テンプレート化: "<% return false; %>"
"<% return branch.name === 'main' %>"
wip
のラベルが付いている場合はコメントしないようにできます: "<% return !issue.labels?.includes('wip') %>"
フィルターに使用できるプロパティについては、GitLab API Issue オブジェクトを確認してください。
このプラグインの最新バージョンは、現在サポートされているすべての GitLab バージョン (現在のメジャー バージョンと過去 2 つのメジャー バージョン) と互換性があります。このプラグインは、サポートされていないバージョンの GitLab での動作は保証されていません。
GitLab.com を使用している場合、またはセルフホスト型 GitLab インスタンスを 14.0 にアップグレードした場合は、このプラグインのバージョン>=6.0.7
を使用してください。
GitLab 14.0 では、タグ API を使用したリリースの作成は削除されました ( # 290311 を参照)。このプラグインは、#184 で代わりに Releases API を使用するように更新され、バージョン6.0.7
以降で使用できます。