Compare commits

...

12 Commits

Author SHA1 Message Date
c696730e55 3.1.36 2019-07-17 17:57:21 +02:00
38d38ce246 fix(core): update 2019-07-17 17:57:20 +02:00
adfdf68c38 3.1.35 2019-07-17 17:55:03 +02:00
d4a4d69941 fix(core): update 2019-07-17 17:55:02 +02:00
c1fed2c758 3.1.34 2019-07-17 17:04:10 +02:00
9918d81f59 fix(core): update 2019-07-17 17:04:10 +02:00
59d8338f6e 3.1.33 2019-06-19 14:00:24 +02:00
a4f8bd3320 fix(core): update 2019-06-19 14:00:24 +02:00
7c2fdb7224 3.1.32 2019-06-19 11:36:05 +02:00
37384aeb57 fix(core): update 2019-06-19 11:36:04 +02:00
60efda263f 3.1.31 2019-06-19 11:35:19 +02:00
19831037ec fix(core): update 2019-06-19 11:35:19 +02:00
7 changed files with 1029 additions and 520 deletions

View File

@@ -1,5 +1,5 @@
# gitzone ci_default # gitzone ci_default
image: hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache: cache:
paths: paths:
@@ -50,13 +50,13 @@ testLTS:
- docker - docker
- notpriv - notpriv
testSTABLE: testBuild:
stage: test stage: test
script: script:
- npmci npm prepare - npmci npm prepare
- npmci node install stable - npmci node install lts
- npmci npm install - npmci npm install
- npmci npm test - npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@@ -65,7 +65,7 @@ testSTABLE:
release: release:
stage: release stage: release
script: script:
- npmci node install stable - npmci node install lts
- npmci npm publish - npmci npm publish
only: only:
- tags - tags

1432
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@shipzone/npmci", "name": "@shipzone/npmci",
"version": "3.1.30", "version": "3.1.36",
"private": false, "private": false,
"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",
@@ -40,6 +40,7 @@
"@pushrocks/smartcli": "^3.0.7", "@pushrocks/smartcli": "^3.0.7",
"@pushrocks/smartdelay": "^2.0.3", "@pushrocks/smartdelay": "^2.0.3",
"@pushrocks/smartfile": "^7.0.2", "@pushrocks/smartfile": "^7.0.2",
"@pushrocks/smartgit": "^1.0.9",
"@pushrocks/smartlog": "^2.0.19", "@pushrocks/smartlog": "^2.0.19",
"@pushrocks/smartlog-destination-local": "^8.0.2", "@pushrocks/smartlog-destination-local": "^8.0.2",
"@pushrocks/smartparam": "^1.0.4", "@pushrocks/smartparam": "^1.0.4",
@@ -58,6 +59,7 @@
"ts_web/*", "ts_web/*",
"dist/*", "dist/*",
"dist_web/*", "dist_web/*",
"dist_ts_web/*",
"assets/*", "assets/*",
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",

View File

@@ -24,7 +24,7 @@ export let modArgvArg; // will be set through the build command
* handle cli input * handle cli input
* @param argvArg * @param argvArg
*/ */
export let handleCli = async argvArg => { export const handleCli = async argvArg => {
modArgvArg = argvArg; modArgvArg = argvArg;
if (argvArg._.length >= 2) { if (argvArg._.length >= 2) {
const action: string = argvArg._[1]; const action: string = argvArg._[1];
@@ -59,7 +59,7 @@ export let handleCli = async argvArg => {
/** /**
* builds a cwd of Dockerfiles by triggering a promisechain * builds a cwd of Dockerfiles by triggering a promisechain
*/ */
export let build = async () => { export const build = async () => {
await prepare(); await prepare();
logger.log('info', 'now building Dockerfiles...'); logger.log('info', 'now building Dockerfiles...');
await helpers await helpers
@@ -72,7 +72,7 @@ export let build = async () => {
/** /**
* login to the DockerRegistries * login to the DockerRegistries
*/ */
export let login = async () => { export const login = async () => {
await prepare(); await prepare();
await npmciRegistryStorage.loginAll(); await npmciRegistryStorage.loginAll();
}; };
@@ -80,7 +80,7 @@ export let login = async () => {
/** /**
* logs in docker * logs in docker
*/ */
export let prepare = async () => { export const prepare = async () => {
// Always login to GitLab Registry // Always login to GitLab Registry
if (!process.env.CI_BUILD_TOKEN || process.env.CI_BUILD_TOKEN === '') { if (!process.env.CI_BUILD_TOKEN || process.env.CI_BUILD_TOKEN === '') {
logger.log('error', 'No registry token specified by gitlab!'); logger.log('error', 'No registry token specified by gitlab!');
@@ -112,7 +112,13 @@ export const push = async argvArg => {
// lets parse the input of cli and npmextra // lets parse the input of cli and npmextra
if (argvArg._.length >= 3 && argvArg._[2] !== 'npmextra') { if (argvArg._.length >= 3 && argvArg._[2] !== 'npmextra') {
dockerRegistryUrls.push(argvArg._[2]); dockerRegistryUrls.push(argvArg._[2]);
} else if (configObject.dockerRegistries) { } else {
if (configObject.dockerRegistries.length === 0) {
logger.log(
'warn',
`There are no docker registries listed in npmextra.json! This is strange!`
);
}
dockerRegistryUrls = dockerRegistryUrls.concat(configObject.dockerRegistries); dockerRegistryUrls = dockerRegistryUrls.concat(configObject.dockerRegistries);
} }
@@ -142,7 +148,7 @@ export const push = async argvArg => {
} }
}; };
export let pull = async argvArg => { export const pull = async argvArg => {
await prepare(); await prepare();
const registryUrlArg = argvArg._[2]; const registryUrlArg = argvArg._[2];
let suffix = null; let suffix = null;
@@ -159,7 +165,10 @@ export let pull = async argvArg => {
} }
}; };
export let test = async () => { /**
* tests docker files
*/
export const test = async () => {
await prepare(); await prepare();
return await helpers.readDockerfiles().then(helpers.testDockerfiles); return await helpers.readDockerfiles().then(helpers.testDockerfiles);
}; };

View File

@@ -41,6 +41,9 @@ export let mirror = async () => {
if (githubToken) { if (githubToken) {
logger.log('info', 'found github token.'); logger.log('info', 'found github token.');
logger.log('info', 'attempting the mirror the repository to GitHub'); logger.log('info', 'attempting the mirror the repository to GitHub');
plugins.smartgit.GitRepo;
// add the mirror // add the mirror
await bash( await bash(
`git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git` `git remote add mirror https://${githubToken}@github.com/${githubUser}/${githubRepo}.git`

View File

@@ -1 +1,5 @@
export * from '../npmci.plugins'; export * from '../npmci.plugins';
import * as smartgit from '@pushrocks/smartgit';
export { smartgit };

View File

@@ -66,18 +66,23 @@ const prepare = async () => {
* publish a package to npm * publish a package to npm
*/ */
const publish = async () => { const publish = async () => {
const buildPublishCommand = async () => {
let npmAccessCliString = ``; let npmAccessCliString = ``;
let npmRegistryCliString = ``; let npmRegistryCliString = ``;
let publishVerdaccioAsWell = false;
const config = await configModule.getConfig(); const config = await configModule.getConfig();
const availableRegistries: string[] = [];
await plugins.smartparam.forEachMinimatch(process.env, 'NPMCI_TOKEN_NPM*', npmEnvArg => {
availableRegistries.push(npmEnvArg.split('|')[0]);
});
// -> configure package access level // -> configure package access level
if ( if (config.npmAccessLevel) {
config.npmAccessLevel &&
(config.npmAccessLevel === 'public' || config.npmAccessLevel === 'private')
) {
npmAccessCliString = `--access=${config.npmAccessLevel}`; npmAccessCliString = `--access=${config.npmAccessLevel}`;
if (config.npmAccessLevel === 'public') {
publishVerdaccioAsWell = true;
}
} }
// -> configure registry url // -> configure registry url
if (config.npmRegistryUrl) { if (config.npmRegistryUrl) {
npmRegistryCliString = `--registry=https://${config.npmRegistryUrl}`; npmRegistryCliString = `--registry=https://${config.npmRegistryUrl}`;
@@ -86,6 +91,24 @@ const publish = async () => {
process.exit(1); process.exit(1);
} }
let publishCommand = `npm publish ${npmAccessCliString} ${npmRegistryCliString} `;
// publishEverywhere
if (publishVerdaccioAsWell) {
const verdaccioRegistry = availableRegistries.find(registryString =>
registryString.startsWith('verdaccio')
);
if (verdaccioRegistry) {
logger.log(
'info',
`package is public and verdaccio registry is specified. Also publishing to Verdaccio!`
);
publishCommand = `${publishCommand} && npm publish ${npmAccessCliString} --registry=https://${verdaccioRegistry}`;
}
}
return publishCommand;
};
// -> preparing // -> preparing
logger.log('info', `now preparing environment:`); logger.log('info', `now preparing environment:`);
prepare(); prepare();
@@ -105,7 +128,7 @@ const publish = async () => {
// -> publish it // -> publish it
logger.log('info', `now invoking npm to publish the package!`); logger.log('info', `now invoking npm to publish the package!`);
await bash(`npm publish ${npmAccessCliString} ${npmRegistryCliString}`); await bash(await buildPublishCommand());
logger.log('success', `Package was successfully published!`); logger.log('success', `Package was successfully published!`);
}; };