Skip to content

Commit 76f45e3

Browse files
committed
feat(registry): add push images to gitlab registry
1 parent e8496fa commit 76f45e3

File tree

4 files changed

+59
-54
lines changed

4 files changed

+59
-54
lines changed

Diff for: README.md

+35-39
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,62 @@
1-
# semantic-release-docker
2-
3-
[![npm](https://img.shields.io/npm/v/semantic-release-docker.svg)](https://www.npmjs.com/package/felixfbecker/semantic-release-docker)
4-
[![build](https://img.shields.io/travis/felixfbecker/semantic-release-docker.svg)](https://travis-ci.org/felixfbecker/semantic-release-docker)
5-
[![downloads](https://img.shields.io/npm/dt/semantic-release-docker.svg)](https://www.npmjs.com/package/semantic-release-docker)
6-
[![dependencies](https://img.shields.io/david/felixfbecker/semantic-release-docker.svg)](https://david-dm.org/felixfbecker/semantic-release-docker)
7-
[![peerDependencies](https://david-dm.org/felixfbecker/semantic-release-docker/peer-status.svg)](https://david-dm.org/felixfbecker/semantic-release-docker?type=peer)
8-
[![Greenkeeper](https://badges.greenkeeper.io/felixfbecker/semantic-release-docker.svg)](https://greenkeeper.io/)
1+
# semantic-release-gitlab-registry
2+
3+
[![npm](https://img.shields.io/npm/v/semantic-release-gitlab-registry.svg)](https://www.npmjs.com/package/lgaticaq/semantic-release-gitlab-registry)
4+
[![build](https://img.shields.io/travis/lgaticaq/semantic-release-gitlab-registry.svg)](https://travis-ci.org/lgaticaq/semantic-release-gitlab-registry)
5+
[![downloads](https://img.shields.io/npm/dt/semantic-release-gitlab-registry.svg)](https://www.npmjs.com/package/semantic-release-gitlab-registry)
6+
[![dependencies](https://img.shields.io/david/lgaticaq/semantic-release-gitlab-registry.svg)](https://david-dm.org/lgaticaq/semantic-release-gitlab-registry)
7+
[![peerDependencies](https://david-dm.org/lgaticaq/semantic-release-gitlab-registry/peer-status.svg)](https://david-dm.org/lgaticaq/semantic-release-gitlab-registry?type=peer)
8+
[![Greenkeeper](https://badges.greenkeeper.io/lgaticaq/semantic-release-gitlab-registry.svg)](https://greenkeeper.io/)
99
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier)
1010
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
11-
[![license](https://img.shields.io/npm/l/semantic-release-docker.svg)](https://github.com/felixfbecker/semantic-release-docker/blob/master/LICENSE)
11+
[![license](https://img.shields.io/npm/l/semantic-release-gitlab-registry.svg)](https://github.com/lgaticaq/semantic-release-gitlab-registry/blob/master/LICENSE)
1212

13-
Set of [semantic-release](https://github.com/semantic-release/semantic-release) plugins for publishing a docker image to
14-
[Docker Hub](https://hub.docker.com/).
13+
Set of [semantic-release](https://github.com/semantic-release/semantic-release) plugins for publishing a docker image to [GitLab Container Registry](https://docs.gitlab.com/ce/user/project/container_registry.html).
1514

1615
```json
1716
{
1817
"release": {
19-
"verifyConditions": "semantic-release-docker",
18+
"verifyConditions": "semantic-release-gitlab-registry",
2019
"publish": {
21-
"path": "semantic-release-docker",
20+
"path": "semantic-release-gitlab-registry",
2221
"name": "username/imagename"
2322
}
2423
}
2524
}
2625
```
2726

28-
## Configuration
29-
30-
Your credentials have to be configured with the environment variables `DOCKER_USERNAME` and `DOCKER_PASSWORD`.
31-
32-
In addition, you need to specify the name of the image as the `name` setting.
33-
3427
## Plugins
3528

3629
### `verifyConditions`
3730

38-
Verify that all needed configuration is present and login to the Docker registry.
31+
Verify that all needed configuration is present and login to the GitLab Container Registry.
3932

4033
### `publish`
4134

42-
Tag the image specified by `name` with the new version, push it to Docker Hub and update the `latest` tag.
35+
Tag the image with the new version, push it to GitLab Container Registry and update the `latest` tag.
4336

44-
## Example .travis.yml
37+
## Example .gitlab-ci.yml
4538

4639
```yml
47-
jobs:
48-
include:
49-
- stage: release
50-
language: node_js
51-
node_js: '8'
52-
services:
53-
- docker
54-
script:
55-
- docker build -t username/imagename .
56-
- npm run semantic-release
57-
5840
stages:
5941
- test
60-
- name: release
61-
if: branch = master AND type = push AND fork = false
62-
63-
branches:
64-
except:
65-
- /^v\d+\.\d+\.\d+$/
42+
- release
43+
44+
test:
45+
image: node:alpine
46+
stage: test
47+
before_script:
48+
- npm i
49+
script:
50+
- npm t
51+
52+
release:
53+
image: node:alpine
54+
stage: release
55+
before_script:
56+
- npm i
57+
- docker build -t $CI_REGISTRY_IMAGE .
58+
script:
59+
- npx semantic-release
60+
only:
61+
- master
6662
```

Diff for: lib/publish.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
const execa = require('execa')
22

33
module.exports = async (pluginConfig, { nextRelease: { version }, logger }) => {
4-
logger.log(`Pushing version ${pluginConfig.name}:${version} to docker hub`)
4+
logger.log(`Pushing version ${process.env.CI_REGISTRY_IMAGE}:${version} to GitLab Container Registry`)
55

66
// Push both new version and latest
7-
execa('docker', ['tag', `${pluginConfig.name}:latest`, `${pluginConfig.name}:${version}`], { stdio: 'inherit' })
8-
execa('docker', ['push', `${pluginConfig.name}:${version}`], { stdio: 'inherit' })
9-
execa('docker', ['push', `${pluginConfig.name}:latest`], { stdio: 'inherit' })
7+
execa('docker', ['tag', `${process.env.CI_REGISTRY_IMAGE}:latest`, `${process.env.CI_REGISTRY_IMAGE}:${version}`], {
8+
stdio: 'inherit',
9+
})
10+
execa('docker', ['push', `${process.env.CI_REGISTRY_IMAGE}:${version}`], { stdio: 'inherit' })
11+
execa('docker', ['push', `${process.env.CI_REGISTRY_IMAGE}:latest`], { stdio: 'inherit' })
1012
}

Diff for: lib/verify.js

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
const execa = require('execa')
22

33
module.exports = async (pluginConfig, { logger }) => {
4-
for (const envVar of ['DOCKER_USERNAME', 'DOCKER_PASSWORD']) {
4+
for (const envVar of ['CI_REGISTRY_USER', 'CI_REGISTRY_PASSWORD', 'CI_REGISTRY']) {
55
if (!process.env[envVar]) {
66
throw new Error(`Environment variable ${envVar} is not set`)
77
}
88
}
99
try {
10-
await execa('docker', ['login', '-u=' + process.env.DOCKER_USERNAME, '-p=' + process.env.DOCKER_PASSWORD], {
11-
stdio: 'inherit',
12-
})
10+
await execa(
11+
'docker',
12+
[
13+
'login',
14+
'-u=' + process.env.CI_REGISTRY_USER,
15+
'-p=' + process.env.CI_REGISTRY_PASSWORD,
16+
process.env.CI_REGISTRY,
17+
],
18+
{ stdio: 'inherit' }
19+
)
1320
} catch (err) {
1421
throw new Error('docker login failed')
1522
}

Diff for: package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
{
2-
"name": "semantic-release-docker",
3-
"description": "Set of semantic-release plugins to publish to docker hub",
2+
"name": "semantic-release-gitlab-registry",
3+
"description": "Set of semantic-release plugins to publish to gitlab docker registry",
44
"version": "0.0.0-development",
55
"engines": {
66
"node": ">=8"
77
},
8-
"author": "Felix Becker",
8+
"author": "Leonardo Gatica <[email protected]> (https://about.me/lgatica)",
99
"repository": {
1010
"type": "git",
11-
"url": "https://github.com/felixfbecker/semantic-release-docker.git"
11+
"url": "https://github.com/lgaticaq/semantic-release-gitlab-registry.git"
1212
},
1313
"bugs": {
14-
"url": "https://github.com/felixfbecker/semantic-release-docker/issues"
14+
"url": "https://github.com/lgaticaq/semantic-release-gitlab-registry/issues"
1515
},
16-
"homepage": "https://github.com/felixfbecker/semantic-release-docker#readme",
16+
"homepage": "https://github.com/lgaticaq/semantic-release-gitlab-registry#readme",
1717
"keywords": [
1818
"docker",
19-
"hub",
19+
"gitlab",
2020
"publish",
2121
"push",
2222
"semantic-release",

0 commit comments

Comments
 (0)