GitLab 릴리스를 게시하기 위한 semantic-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
범위를 사용하여 프로젝트 액세스 토큰, 그룹 액세스 토큰 또는 개인 액세스 토큰을 생성하고 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 엔드포인트. | GitLab CI/CD 또는 https://gitlab.com 에서 실행 중인 경우 GL_URL 또는 GITLAB_URL 환경 변수 또는 CI가 환경 변수를 제공했습니다. |
gitlabApiPathPrefix | GitLab API 접두사. | GitLab CI/CD 또는 /api/v4 에서 실행 중인 경우 GL_PREFIX 또는 GITLAB_PREFIX 환경 변수 또는 CI가 환경 변수를 제공했습니다. |
assets | 릴리스에 업로드할 파일 배열입니다. 자산을 참조하세요. | - |
milestones | 릴리스와 연결할 일련의 마일스톤 제목입니다. GitLab 릴리스 API를 참조하세요. | - |
successComment | 릴리스에서 해결된 각 문제 및 병합 요청에 추가할 설명입니다. 성공댓글을 참조하세요. | ? 이 문제는 ${nextRelease.version} 버전에서 해결되었습니다. ?nn이 릴리스는 GitLab 릴리스에서 사용할 수 있습니다. |
successCommentCondition | 문제에 대해 의견을 제시하거나 병합 요청을 할 때 이를 조건으로 사용하세요. 성공댓글조건을 참조하세요. | - |
failComment | 릴리스가 실패할 때 생성되는 이슈의 내용입니다. 실패댓글을 참조하세요. | 릴리스 실패의 원인이 된 오류 목록과 함께 의미 릴리스 문서 및 지원에 대한 링크가 포함된 친숙한 메시지입니다. |
failTitle | 릴리스가 실패할 때 생성되는 이슈의 제목입니다. | The automated release is failing |
failCommentCondition | 실패 시 문제에 대해 의견을 제시하거나 생성할 때 이를 조건으로 사용하세요. failureCommentCondition을 참조하세요. | - |
labels | 릴리스가 실패할 때 생성된 이슈에 추가할 라벨입니다. 라벨을 추가하지 않으려면 false 로 설정하세요. 라벨은 공식 문서에 설명된 대로 쉼표로 구분되어야 합니다(예: "semantic-release,bot" . | semantic-release |
assignee | 릴리스가 실패할 때 생성된 이슈에 추가할 담당자입니다. | - |
다음 속성을 가진 glob 또는 glob 및 Object
Array
일 수 있습니다.
재산 | 설명 | 기본 |
---|---|---|
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
의 각 항목은 개별적으로 글로브됩니다. glob은 String
( "dist/**/*.js"
또는 "dist/mylib.js"
) 또는 함께 glob될 String
Array
( ["dist/**", "!**/*.css"]
).
디렉터리가 구성되면 이 디렉터리와 해당 하위 디렉터리 아래의 모든 파일이 포함됩니다.
참고 : 파일이 assets
에 일치하는 항목이 있으면 .gitignore
에도 일치하는 항목이 있더라도 포함됩니다.
'dist/*.js'
: dist
디렉터리에 모든 js
파일을 포함하지만 하위 디렉터리에는 포함하지 않습니다.
[['dist', '!**/*.css']]
: css
파일을 제외한 dist
디렉터리와 하위 디렉터리의 모든 파일을 포함합니다.
[{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 | name 및 url 과 같은 선택적 릴리스 데이터와 함께 게시된 각 릴리스에 대한 릴리스 Object 가 포함된 Array 입니다. |
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 | name 및 url 과 같은 선택적 릴리스 데이터와 함께 게시된 각 릴리스에 대한 릴리스 Object 가 포함된 Array 입니다. |
issue | 댓글이 게시될 GitLab API Issue 개체입니다. |
mergeRequest | 댓글이 게시될 GitLab API Merge Request 개체입니다. |
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 마크다운 형식의 오류에 대한 정보가 포함되어 있습니다. |
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 | name 및 url 과 같은 선택적 릴리스 데이터와 함께 게시된 각 릴리스에 대한 릴리스 Object 가 포함된 Array 입니다. |
issue | 댓글이 게시될 GitLab API 이슈 개체 - 미해결 이슈가 있는 경우에만 사용할 수 있습니다. |
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 참조). 이 플러그인은 버전 6.0.7
이상에서 사용 가능한 #184에서 대신 Releases API를 사용하도록 업데이트되었습니다.