Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 40a6bba338 | |||
| f98f490956 | |||
| 15714204a6 | |||
| 35c4963192 | |||
| b3c5db3ed9 | |||
| 0701429782 | |||
| 24dd9edcae | |||
| 3e1397e13f | |||
| ecb21a787f | |||
| 10233ffae0 | |||
| 4cea1d29d2 |
2
dist/mod_docker/mod.builddocker.d.ts
vendored
2
dist/mod_docker/mod.builddocker.d.ts
vendored
@@ -91,7 +91,7 @@ export declare let dockerBaseImage: (dockerfileContentArg: string) => string;
|
|||||||
/**
|
/**
|
||||||
* returns the docker tag
|
* returns the docker tag
|
||||||
*/
|
*/
|
||||||
export declare let dockerTag: (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string) => string;
|
export declare let getDockerTagString: (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string) => string;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|||||||
33
dist/mod_docker/mod.builddocker.js
vendored
33
dist/mod_docker/mod.builddocker.js
vendored
File diff suppressed because one or more lines are too long
13
dist/mod_prepare/index.js
vendored
13
dist/mod_prepare/index.js
vendored
@@ -36,7 +36,7 @@ let docker = () => __awaiter(this, void 0, void 0, function* () {
|
|||||||
env.setDockerRegistry('docker.io'); // TODO: checkup why we set this here
|
env.setDockerRegistry('docker.io'); // TODO: checkup why we set this here
|
||||||
// handle registries
|
// handle registries
|
||||||
plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_LOGIN_DOCKER*', (envString) => __awaiter(this, void 0, void 0, function* () {
|
plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_LOGIN_DOCKER*', (envString) => __awaiter(this, void 0, void 0, function* () {
|
||||||
let dockerRegexResultArray = process.env.NPMCI_LOGIN_DOCKER.split('|');
|
let dockerRegexResultArray = envString.split('|');
|
||||||
if (dockerRegexResultArray.length !== 3) {
|
if (dockerRegexResultArray.length !== 3) {
|
||||||
plugins.beautylog.error('malformed docker env var...');
|
plugins.beautylog.error('malformed docker env var...');
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
@@ -46,7 +46,8 @@ let docker = () => __awaiter(this, void 0, void 0, function* () {
|
|||||||
let username = dockerRegexResultArray[1];
|
let username = dockerRegexResultArray[1];
|
||||||
let password = dockerRegexResultArray[2];
|
let password = dockerRegexResultArray[2];
|
||||||
if (registry === 'docker.io') {
|
if (registry === 'docker.io') {
|
||||||
yield npmci_bash_1.bash('docker login -u ' + username + ' -p ' + password);
|
yield npmci_bash_1.bash(`docker login -u ${username} -p ${password}`);
|
||||||
|
plugins.beautylog.info('Logged in to standard docker hub');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
yield npmci_bash_1.bash(`docker login -u ${username} -p ${password} ${registry}`);
|
yield npmci_bash_1.bash(`docker login -u ${username} -p ${password} ${registry}`);
|
||||||
@@ -61,8 +62,12 @@ let docker = () => __awaiter(this, void 0, void 0, function* () {
|
|||||||
* prepare docker for gitlab registry
|
* prepare docker for gitlab registry
|
||||||
*/
|
*/
|
||||||
let dockerGitlab = () => __awaiter(this, void 0, void 0, function* () {
|
let dockerGitlab = () => __awaiter(this, void 0, void 0, function* () {
|
||||||
env.setDockerRegistry('registry.gitlab.com');
|
if (!process.env.CI_BUILD_TOKEN || process.env.CI_BUILD_TOKEN === '') {
|
||||||
|
plugins.beautylog.error('No registry token specified by gitlab!');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
yield npmci_bash_1.bash(`docker login -u gitlab-ci-token -p ${process.env.CI_BUILD_TOKEN} registry.gitlab.com`);
|
yield npmci_bash_1.bash(`docker login -u gitlab-ci-token -p ${process.env.CI_BUILD_TOKEN} registry.gitlab.com`);
|
||||||
|
plugins.beautylog.success(`docker authenticated for registry.gitlab.com!`);
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
/**
|
/**
|
||||||
@@ -90,4 +95,4 @@ exports.prepare = (serviceArg) => __awaiter(this, void 0, void 0, function* () {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfcHJlcGFyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEseUNBQXdDO0FBQ3hDLDhDQUFvQztBQUNwQyxvQ0FBbUM7QUFDbkMsMkNBQTBDO0FBUzFDOztHQUVHO0FBQ0gsSUFBSSxHQUFHLEdBQUc7SUFDUixJQUFJLFdBQVcsR0FBVyxtQ0FBbUMsQ0FBQTtJQUM3RCxJQUFJLFFBQVEsR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQTtJQUNsRCxJQUFJLGVBQWUsR0FBVyxXQUFXLEdBQUcsUUFBUSxDQUFBO0lBQ3BELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDYixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNsRSxNQUFNLENBQUE7QUFDUixDQUFDLENBQUEsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxNQUFNLEdBQUc7SUFDWCxHQUFHLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQyxxQ0FBcUM7SUFFeEUsb0JBQW9CO0lBQ3BCLE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxDQUFPLFNBQVM7UUFDdEYsSUFBSSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN0RSxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1lBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDZixNQUFNLENBQUE7UUFDUixDQUFDO1FBQ0QsSUFBSSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDeEMsSUFBSSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDeEMsSUFBSSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDeEMsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxpQkFBSSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUE7UUFDL0QsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxpQkFBSSxDQUFDLG1CQUFtQixRQUFRLE9BQU8sUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDdEUsQ0FBQztRQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUE0QixRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBRXBFLENBQUMsQ0FBQSxDQUFDLENBQUE7SUFFRixrQ0FBa0M7SUFDbEMsTUFBTSxZQUFZLEVBQUUsQ0FBQTtJQUNwQixNQUFNLENBQUE7QUFDUixDQUFDLENBQUEsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxZQUFZLEdBQUc7SUFDakIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDNUMsTUFBTSxpQkFBSSxDQUFDLHNDQUFzQyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsc0JBQXNCLENBQUMsQ0FBQTtJQUNsRyxNQUFNLENBQUE7QUFDUixDQUFDLENBQUEsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxHQUFHLEdBQUc7SUFDUixJQUFJLFNBQVMsR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0MsTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUE7QUFDdkIsQ0FBQyxDQUFBLENBQUE7QUFFRDs7O0dBR0c7QUFDUSxRQUFBLE9BQU8sR0FBRyxDQUFPLFVBQXdCO0lBQ2xELE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDbkIsS0FBSyxLQUFLO1lBQ1IsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDcEIsS0FBSyxRQUFRO1lBQ1gsTUFBTSxDQUFDLE1BQU0sTUFBTSxFQUFFLENBQUE7UUFDdkIsS0FBSyxlQUFlO1lBQ2xCLE1BQU0sQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFBO1FBQzdCLEtBQUssS0FBSztZQUNSLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ3BCO1lBQ0UsS0FBSyxDQUFBO0lBQ1QsQ0FBQztBQUNILENBQUMsQ0FBQSxDQUFBIn0=
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9tb2RfcHJlcGFyZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEseUNBQXdDO0FBQ3hDLDhDQUFvQztBQUNwQyxvQ0FBbUM7QUFDbkMsMkNBQTBDO0FBUzFDOztHQUVHO0FBQ0gsSUFBSSxHQUFHLEdBQUc7SUFDUixJQUFJLFdBQVcsR0FBVyxtQ0FBbUMsQ0FBQTtJQUM3RCxJQUFJLFFBQVEsR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQTtJQUNsRCxJQUFJLGVBQWUsR0FBVyxXQUFXLEdBQUcsUUFBUSxDQUFBO0lBQ3BELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDYixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUNsRSxNQUFNLENBQUE7QUFDUixDQUFDLENBQUEsQ0FBQTtBQUVEOztHQUVHO0FBQ0gsSUFBSSxNQUFNLEdBQUc7SUFDWCxHQUFHLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQyxxQ0FBcUM7SUFFeEUsb0JBQW9CO0lBQ3BCLE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxDQUFPLFNBQVM7UUFDdEYsSUFBSSxzQkFBc0IsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFB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
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "npmci",
|
"name": "npmci",
|
||||||
"version": "2.4.9",
|
"version": "2.4.14",
|
||||||
"description": "node and docker in gitlab ci on steroids",
|
"description": "node and docker in gitlab ci on steroids",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist/index.d.ts",
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ export let buildDockerfiles = async (sortedArrayArg: Dockerfile[]) => {
|
|||||||
export let pushDockerfiles = async (sortedArrayArg: Dockerfile[]) => {
|
export let pushDockerfiles = async (sortedArrayArg: Dockerfile[]) => {
|
||||||
let stageArg = (function () {
|
let stageArg = (function () {
|
||||||
if (modArgvArg._ && modArgvArg._.length >= 3) {
|
if (modArgvArg._ && modArgvArg._.length >= 3) {
|
||||||
return modArgvArg._[2]
|
return modArgvArg._[ 2 ]
|
||||||
} else {
|
} else {
|
||||||
return NpmciEnv.buildStage
|
return NpmciEnv.buildStage
|
||||||
}
|
}
|
||||||
@@ -167,9 +167,12 @@ export class Dockerfile {
|
|||||||
this.version = dockerFileVersion(plugins.path.parse(options.filePath).base)
|
this.version = dockerFileVersion(plugins.path.parse(options.filePath).base)
|
||||||
this.cleanTag = this.repo + ':' + this.version
|
this.cleanTag = this.repo + ':' + this.version
|
||||||
this.buildTag = this.cleanTag
|
this.buildTag = this.cleanTag
|
||||||
this.gitlabTestTag = dockerTag('registry.gitlab.com', this.repo, this.version, 'test')
|
this.gitlabTestTag = getDockerTagString('registry.gitlab.com', this.repo, this.version, 'test')
|
||||||
this.gitlabReleaseTag = dockerTag('registry.gitlab.com', this.repo, this.version)
|
this.gitlabReleaseTag = getDockerTagString('registry.gitlab.com', this.repo, this.version)
|
||||||
this.releaseTag = dockerTag(NpmciEnv.dockerRegistry, this.repo, this.version)
|
|
||||||
|
// the releaseTag determines where the image gets released
|
||||||
|
this.releaseTag = getDockerTagString('docker.io', this.repo, this.version)
|
||||||
|
|
||||||
this.containerName = 'dockerfile-' + this.version
|
this.containerName = 'dockerfile-' + this.version
|
||||||
if (options.filePath && options.read) {
|
if (options.filePath && options.read) {
|
||||||
this.content = plugins.smartfile.fs.toStringSync(plugins.path.resolve(options.filePath))
|
this.content = plugins.smartfile.fs.toStringSync(plugins.path.resolve(options.filePath))
|
||||||
@@ -193,20 +196,16 @@ export class Dockerfile {
|
|||||||
* pushes the Dockerfile to a registry
|
* pushes the Dockerfile to a registry
|
||||||
*/
|
*/
|
||||||
async push (stageArg) {
|
async push (stageArg) {
|
||||||
|
await bash(`docker tag ${this.buildTag} ${this.releaseTag}`)
|
||||||
|
await bash(`docker tag ${this.buildTag} ${this.gitlabReleaseTag}`)
|
||||||
|
await bash(`docker tag ${this.buildTag} ${this.gitlabTestTag}`)
|
||||||
switch (stageArg) {
|
switch (stageArg) {
|
||||||
case 'release':
|
case 'release':
|
||||||
await bash(`docker tag ${this.buildTag} ${this.releaseTag}`)
|
|
||||||
await bash(`docker push ${this.releaseTag}`)
|
|
||||||
|
|
||||||
// if release registry is different from gitlab
|
|
||||||
if (NpmciEnv.dockerRegistry !== 'registry.gitlab.com') {
|
|
||||||
await bash(`docker tag ${this.buildTag} ${this.gitlabReleaseTag}`)
|
|
||||||
await bash(`docker push ${this.gitlabReleaseTag}`)
|
await bash(`docker push ${this.gitlabReleaseTag}`)
|
||||||
}
|
await bash(`docker push ${this.releaseTag}`)
|
||||||
break
|
break
|
||||||
case 'test':
|
case 'test':
|
||||||
default:
|
default:
|
||||||
await bash(`docker tag ${this.buildTag} ${this.gitlabTestTag}`)
|
|
||||||
await bash(`docker push ${this.gitlabTestTag}`)
|
await bash(`docker push ${this.gitlabTestTag}`)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -216,9 +215,8 @@ export class Dockerfile {
|
|||||||
* pulls the Dockerfile from a registry
|
* pulls the Dockerfile from a registry
|
||||||
*/
|
*/
|
||||||
async pull (registryArg: string) {
|
async pull (registryArg: string) {
|
||||||
let pullTag = this.gitlabTestTag
|
await bash(`docker pull ${this.gitlabTestTag}`)
|
||||||
await bash('docker pull ' + pullTag)
|
await bash(`docker tag ${this.gitlabTestTag} ${this.buildTag}`)
|
||||||
await bash('docker tag ' + pullTag + ' ' + this.buildTag)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -258,7 +256,7 @@ export let dockerFileVersion = (dockerfileNameArg: string): string => {
|
|||||||
let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/
|
let versionRegex = /Dockerfile_([a-zA-Z0-9\.]*)$/
|
||||||
let regexResultArray = versionRegex.exec(dockerfileNameArg)
|
let regexResultArray = versionRegex.exec(dockerfileNameArg)
|
||||||
if (regexResultArray && regexResultArray.length === 2) {
|
if (regexResultArray && regexResultArray.length === 2) {
|
||||||
versionString = regexResultArray[1]
|
versionString = regexResultArray[ 1 ]
|
||||||
} else {
|
} else {
|
||||||
versionString = 'latest'
|
versionString = 'latest'
|
||||||
}
|
}
|
||||||
@@ -271,21 +269,19 @@ export let dockerFileVersion = (dockerfileNameArg: string): string => {
|
|||||||
export let dockerBaseImage = function (dockerfileContentArg: string) {
|
export let dockerBaseImage = function (dockerfileContentArg: string) {
|
||||||
let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n?/
|
let baseImageRegex = /FROM\s([a-zA-z0-9\/\-\:]*)\n?/
|
||||||
let regexResultArray = baseImageRegex.exec(dockerfileContentArg)
|
let regexResultArray = baseImageRegex.exec(dockerfileContentArg)
|
||||||
return regexResultArray[1]
|
return regexResultArray[ 1 ]
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns the docker tag
|
* returns the docker tag
|
||||||
*/
|
*/
|
||||||
export let dockerTag = function (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string): string {
|
export let getDockerTagString = function (registryArg: string, repoArg: string, versionArg: string, suffixArg?: string): string {
|
||||||
let tagString: string
|
// determine wether the suffix is needed
|
||||||
let registry = registryArg
|
|
||||||
let repo = repoArg
|
|
||||||
let version = versionArg
|
let version = versionArg
|
||||||
if (suffixArg) {
|
if (suffixArg) {
|
||||||
version = versionArg + '_' + suffixArg
|
version = versionArg + '_' + suffixArg
|
||||||
}
|
}
|
||||||
tagString = registry + '/' + repo + ':' + version
|
let tagString = `${registryArg}/${repoArg}:${version}`
|
||||||
return tagString
|
return tagString
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ let docker = async () => {
|
|||||||
|
|
||||||
// handle registries
|
// handle registries
|
||||||
plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_LOGIN_DOCKER*', async (envString) => {
|
plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_LOGIN_DOCKER*', async (envString) => {
|
||||||
let dockerRegexResultArray = process.env.NPMCI_LOGIN_DOCKER.split('|')
|
let dockerRegexResultArray = envString.split('|')
|
||||||
if (dockerRegexResultArray.length !== 3) {
|
if (dockerRegexResultArray.length !== 3) {
|
||||||
plugins.beautylog.error('malformed docker env var...')
|
plugins.beautylog.error('malformed docker env var...')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
@@ -45,12 +45,12 @@ let docker = async () => {
|
|||||||
let username = dockerRegexResultArray[1]
|
let username = dockerRegexResultArray[1]
|
||||||
let password = dockerRegexResultArray[2]
|
let password = dockerRegexResultArray[2]
|
||||||
if (registry === 'docker.io') {
|
if (registry === 'docker.io') {
|
||||||
await bash('docker login -u ' + username + ' -p ' + password)
|
await bash(`docker login -u ${username} -p ${password}`)
|
||||||
|
plugins.beautylog.info('Logged in to standard docker hub')
|
||||||
} else {
|
} else {
|
||||||
await bash(`docker login -u ${username} -p ${password} ${registry}`)
|
await bash(`docker login -u ${username} -p ${password} ${registry}`)
|
||||||
}
|
}
|
||||||
plugins.beautylog.success(`docker authenticated for ${registry}!`)
|
plugins.beautylog.success(`docker authenticated for ${registry}!`)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// Always login to GitLab Registry
|
// Always login to GitLab Registry
|
||||||
@@ -62,8 +62,12 @@ let docker = async () => {
|
|||||||
* prepare docker for gitlab registry
|
* prepare docker for gitlab registry
|
||||||
*/
|
*/
|
||||||
let dockerGitlab = async () => {
|
let dockerGitlab = async () => {
|
||||||
env.setDockerRegistry('registry.gitlab.com')
|
if (!process.env.CI_BUILD_TOKEN || process.env.CI_BUILD_TOKEN === '') {
|
||||||
|
plugins.beautylog.error('No registry token specified by gitlab!')
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
await bash(`docker login -u gitlab-ci-token -p ${process.env.CI_BUILD_TOKEN} registry.gitlab.com`)
|
await bash(`docker login -u gitlab-ci-token -p ${process.env.CI_BUILD_TOKEN} registry.gitlab.com`)
|
||||||
|
plugins.beautylog.success(`docker authenticated for registry.gitlab.com!`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user