Compare commits

...

6 Commits

Author SHA1 Message Date
e51b2e28b9 4.1.2 2022-11-02 18:57:47 +01:00
f767140cc8 fix(core): update 2022-11-02 18:57:47 +01:00
0d4d69f072 4.1.1 2022-11-02 16:43:54 +01:00
a3e628c43f fix(core): update 2022-11-02 16:43:54 +01:00
a58fa135c1 4.1.0 2022-10-24 21:23:14 +02:00
93c7af6c91 feat(precheck): now includes a precheck for more generic runner execution 2022-10-24 21:23:14 +02:00
8 changed files with 43 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
{ {
"name": "@shipzone/npmci", "name": "@shipzone/npmci",
"version": "4.0.11", "version": "4.1.2",
"private": false, "private": false,
"description": "node and docker in gitlab ci on steroids", "description": "node and docker in gitlab ci on steroids",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@shipzone/npmci', name: '@shipzone/npmci',
version: '4.0.11', version: '4.1.2',
description: 'node and docker in gitlab ci on steroids' description: 'node and docker in gitlab ci on steroids'
} }

View File

@@ -177,14 +177,14 @@ export class Dockerfile {
): Promise<string> { ): Promise<string> {
logger.log('info', 'checking for env vars to be supplied to the docker build'); logger.log('info', 'checking for env vars to be supplied to the docker build');
let buildArgsString: string = ''; let buildArgsString: string = '';
for (const key of Object.keys( for (const dockerArgKey of Object.keys(
npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap
)) { )) {
const targetValue = const dockerArgOuterEnvVar =
process.env[ npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap[dockerArgKey];
npmciDockerManagerRef.npmciRef.npmciConfig.getConfig().dockerBuildargEnvMap[key] logger.log('note', `docker ARG "${dockerArgKey}" maps to outer env var "${dockerArgOuterEnvVar}"`);
]; const targetValue = process.env[dockerArgOuterEnvVar];
buildArgsString = `${buildArgsString} --build-arg ${key}="${targetValue}"`; buildArgsString = `${buildArgsString} --build-arg ${dockerArgKey}="${targetValue}"`;
} }
return buildArgsString; return buildArgsString;
} }

View File

@@ -59,6 +59,7 @@ export class NpmciNpmManager {
'NPMCI_TOKEN_NPM*', 'NPMCI_TOKEN_NPM*',
(npmEnvArg: string) => { (npmEnvArg: string) => {
const npmRegistryUrl = npmEnvArg.split('|')[0]; const npmRegistryUrl = npmEnvArg.split('|')[0];
logger.log('ok', `found token for ${npmRegistryUrl}`);
let npmToken = npmEnvArg.split('|')[1]; let npmToken = npmEnvArg.split('|')[1];
if (npmEnvArg.split('|')[2] && npmEnvArg.split('|')[2] === 'plain') { if (npmEnvArg.split('|')[2] && npmEnvArg.split('|')[2] === 'plain') {
logger.log('ok', 'npm token not base64 encoded.'); logger.log('ok', 'npm token not base64 encoded.');

24
ts/mod_precheck/index.ts Normal file
View File

@@ -0,0 +1,24 @@
import * as plugins from './plugins.js';
import * as paths from '../npmci.paths.js';
import { logger } from '../npmci.logging.js';
import { Npmci } from '../npmci.classes.npmci.js';
export const handleCli = async (npmciRefArg: Npmci, argvArg: any) => {
logger.log('info', 'checking execution context');
const presentRunnerTags = process.env.CI_RUNNER_TAGS.split(',').map((stringArg) =>
stringArg.trim()
);
let allDesiredGitlabRunnerTagsPresent = true;
for (const desiredRunnerTag of npmciRefArg.npmciConfig.getConfig().gitlabRunnerTags) {
if (!presentRunnerTags.includes(desiredRunnerTag)) {
allDesiredGitlabRunnerTagsPresent = false;
logger.log(
'error',
`Desired runnerRag ${desiredRunnerTag} is missing in current execution context.`
);
}
}
if (!allDesiredGitlabRunnerTagsPresent) {
process.exit(1);
}
};

View File

@@ -0,0 +1 @@
export * from '../npmci.plugins.js';

View File

@@ -79,15 +79,16 @@ export class NpmciCli {
} }
); );
this.smartcli.addCommand('precheck').subscribe(async (argvArg) => {
const modPrecheck = await import('./mod_precheck/index.js');
await modPrecheck.handleCli(this.npmciRef, argvArg);
})
// trigger // trigger
this.smartcli.addCommand('ssh').subscribe( this.smartcli.addCommand('ssh').subscribe(
async (argvArg) => { async (argvArg) => {
const modSsh = await import('./mod_ssh/index.js'); const modSsh = await import('./mod_ssh/index.js');
await modSsh.handleCli(argvArg); await modSsh.handleCli(argvArg);
},
(err) => {
console.log(err);
process.exit(1);
} }
); );

View File

@@ -20,6 +20,9 @@ export interface INpmciOptions {
dockerRegistryRepoMap: { [key: string]: string }; dockerRegistryRepoMap: { [key: string]: string };
dockerBuildargEnvMap: { [key: string]: string }; dockerBuildargEnvMap: { [key: string]: string };
// gitlab
gitlabRunnerTags: string[];
// urls // urls
urlCloudly: string; urlCloudly: string;
} }
@@ -57,6 +60,7 @@ export class NpmciConfig {
dockerRegistryRepoMap: {}, dockerRegistryRepoMap: {},
npmAccessLevel: 'private', npmAccessLevel: 'private',
npmRegistryUrl: 'registry.npmjs.org', npmRegistryUrl: 'registry.npmjs.org',
gitlabRunnerTags: [],
dockerBuildargEnvMap: {}, dockerBuildargEnvMap: {},
urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'), urlCloudly: this.npmciQenv.getEnvVarOnDemand('NPMCI_URL_CLOUDLY'),
}; };