Skip to content

Commit d630e59

Browse files
Revert "CR-17813 (#800)" (#803)
* Revert "CR-17813 (#800)" This reverts commit acbce01. * bump
1 parent acbce01 commit d630e59

File tree

10 files changed

+53
-196
lines changed

10 files changed

+53
-196
lines changed

docs/content/pipelines/Run Pipeline.md

+8-30
Original file line numberDiff line numberDiff line change
@@ -15,44 +15,22 @@ The pipeline will be triggered multiple times according to the array length.
1515

1616
#### Variable yaml file with 2 sets of variables
1717
```yaml
18-
- VARIABLE_A: value_a_for_the_first_build
19-
VARIABLE_B: value_b_for_the_first_build
20-
- VARIABLE_A: value_a_for_the_first_build
21-
VARIABLE_B: value_b_for_the_first_build
18+
- key: value
19+
key2: key1
20+
- key: value
21+
key2: key2
2222
```
2323
2424
#### Variable json file with 2 sets of variables
2525
```json
2626
[
2727
{
28-
"VARIABLE_A": "value_a_for_the_first_build",
29-
"VARIABLE_B": "value_b_for_the_first_build"
28+
"key": "value",
29+
"key2": "key1"
3030
},
3131
{
32-
"VARIABLE_A": "value_a_for_the_first_build",
33-
"VARIABLE_B": "value_b_for_the_first_build"
34-
}
35-
]
36-
```
37-
### Use encrypted variables in Codefresh build runs; supported from CLI version: 0.82.8
38-
#### Variable yaml file with single variable set with encrypted variables
39-
```yaml
40-
- key:
41-
val: value
42-
encrypted: true
43-
key2: key1
44-
45-
```
46-
47-
#### Variable json file single variable set with encrypted variables
48-
```json
49-
[
50-
{
51-
"key": {
52-
"val": "value",
53-
"encrypted": true
54-
},
55-
"key2": "key1"
32+
"key": "value",
33+
"key2": "key2"
5634
}
5735
]
5836
```

lib/interface/cli/commands/pipeline/pipeline.sdk.spec.js

+6-76
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
const yaml = require('js-yaml');
2-
const request = require('requestretry');
3-
const fs = require('fs');
41
const DEFAULTS = require('../../defaults');
52
const getCmd = require('./get.cmd').toCommand();
63
const deleteCmd = require('./delete.cmd').toCommand();
@@ -13,16 +10,18 @@ jest.mock('../../helpers/validation'); // eslint-disable-line
1310
jest.mock('../../../../../check-version');
1411
jest.mock('../../completion/helpers', () => { // eslint-disable-line
1512
return {
16-
authContextWrapper: (func) => func,
13+
authContextWrapper: func => func,
1714
};
1815
});
1916

2017
jest.mock('../../../../logic/entities/Pipeline', () => { // eslint-disable-line
2118
return {
22-
fromResponse: (res) => res,
19+
fromResponse: res => res,
2320
};
2421
});
2522

23+
const request = require('requestretry');
24+
2625
const DEFAULT_RESPONSE = request.__defaultResponse();
2726

2827
describe('pipeline', () => {
@@ -58,11 +57,11 @@ describe('pipeline', () => {
5857
});
5958

6059
it('should return default limit', async () => {
61-
expect(_getLimit(undefined, false)).toEqual(DEFAULTS.GET_LIMIT_RESULTS);
60+
expect(_getLimit(undefined,false)).toEqual(DEFAULTS.GET_LIMIT_RESULTS);
6261
});
6362

6463
it('should return `unlimited` value', async () => {
65-
expect(_getLimit(undefined, true)).toEqual(DEFAULTS.GET_ALL_PIPELINES_LIMIT);
64+
expect(_getLimit(undefined,true)).toEqual(DEFAULTS.GET_ALL_PIPELINES_LIMIT);
6665
});
6766
});
6867

@@ -85,75 +84,6 @@ describe('pipeline', () => {
8584
});
8685
});
8786

88-
describe('run', () => {
89-
it('should handle running pipeline with encrypted variables', async () => {
90-
const argv = { name: 'some name',
91-
detach: true,
92-
annotation: [],
93-
variable:
94-
[{
95-
key: 'secret',
96-
value: 'secret',
97-
},
98-
{
99-
key: 'VAR1',
100-
value: 'VAL1',
101-
},
102-
],
103-
encrypted: ['secret'],
104-
};
105-
const pip = new CfPipeline(argv);
106-
await pip.run();
107-
expect(pip.executionRequests[0].options.variables).toEqual([
108-
{
109-
key: 'secret',
110-
value: 'secret',
111-
encrypted: true,
112-
},
113-
{
114-
key: 'VAR1',
115-
value: 'VAL1',
116-
},
117-
]);
118-
await verifyResponsesReturned([DEFAULT_RESPONSE]); // eslint-disable-line
119-
});
120-
121-
it('should handle running pipeline with encrypted variables passing inside json file', async () => {
122-
const rawFile = fs.readFileSync('lib/interface/cli/commands/pipeline/var.json', 'utf8');
123-
124-
const argv = { name: 'some name',
125-
detach: true,
126-
annotation: [],
127-
'var-file': JSON.parse(rawFile),
128-
};
129-
const pip = new CfPipeline(argv);
130-
await pip.run();
131-
expect(pip.executionRequests[0].options.variables).toEqual(
132-
[{ key: 'help6', value: '85858' },
133-
{ key: 'should_be_encrepted', value: '0000' },
134-
{ encrypted: true, key: 'help7', value: 'test' }],
135-
);
136-
await verifyResponsesReturned([DEFAULT_RESPONSE]); // eslint-disable-line
137-
});
138-
139-
it('should handle running pipeline with encrypted variables passing inside yaml file', async () => {
140-
const rawFile = fs.readFileSync('lib/interface/cli/commands/pipeline/var.yml', 'utf8');
141-
142-
const argv = { name: 'some name',
143-
detach: true,
144-
annotation: [],
145-
'var-file': yaml.safeLoad(rawFile),
146-
};
147-
const pip = new CfPipeline(argv);
148-
await pip.run();
149-
expect(pip.executionRequests[0].options.variables).toEqual(
150-
[{ key: 'VAR1', value: 'VAL1' },
151-
{ encrypted: true, key: 'VAR2', value: 'VAL2' }],
152-
);
153-
await verifyResponsesReturned([DEFAULT_RESPONSE]); // eslint-disable-line
154-
});
155-
});
156-
15787
describe('runImpl', () => {
15888
it('should handle running pipeline', async () => {
15989
const argv = { name: 'some name', detach: true };

lib/interface/cli/commands/pipeline/run.base.js

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
const _ = require('lodash');
22
const Promise = require('bluebird');
3-
const CFError = require('cf-errors');
4-
const { prepareKeyValueFromCLIEnvOption,
5-
markEncryptedFlagOnRequestedVariables,
6-
prepareKeyValueObjectsFromEnvFileOption } = require('../../helpers/general');
3+
const { prepareKeyValueFromCLIEnvOption } = require('../../helpers/general');
74
const { validatePipelineYaml } = require('../../helpers/validation');
85
const { printResult } = require('../root/validate.cmd');
6+
const CFError = require('cf-errors');
97
const { sdk } = require('../../../../logic');
108

119
class RunBaseCommand {
@@ -61,18 +59,18 @@ class RunBaseCommand {
6159
if (variablesFromFile) {
6260
_.forEach(variablesFromFile, (variables) => {
6361
const request = _.cloneDeep(executionRequestTemplate);
64-
request.options.variables = prepareKeyValueObjectsFromEnvFileOption(variables);
62+
request.options.variables = variables;
6563
this.executionRequests.push(request);
6664
});
6765
} else {
68-
const variables = markEncryptedFlagOnRequestedVariables(this.argv.variable, this.argv.encrypted);
66+
const variables = prepareKeyValueFromCLIEnvOption(this.argv.variable);
6967
const request = _.cloneDeep(executionRequestTemplate);
7068
request.options.variables = variables;
7169
request.options.contexts = contexts;
7270
this.executionRequests.push(request);
7371
}
7472

75-
const results = await Promise.all(this.executionRequests.map((request) => this.runImpl(request)));
73+
const results = await Promise.all(this.executionRequests.map(request => this.runImpl(request)));
7674
const findMaxReducer = (accumulator, currentValue) => (currentValue > accumulator ? currentValue : accumulator);
7775
const exitCode = results.reduce(findMaxReducer);
7876
await this.postRunRequest();

lib/interface/cli/commands/pipeline/run.cmd.js

+2-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
const debug = require('debug')('codefresh:cli:run:pipeline');
12
const Command = require('../../Command');
2-
const { crudFilenameOption, prepareKeyValueObjectsFromCLIEnvOption } = require('../../helpers/general');
3+
const { crudFilenameOption } = require('../../helpers/general');
34
const RunLocalCommand = require('./run.local');
45
const RunExternalCommand = require('./run.cf');
56

@@ -84,13 +85,6 @@ const run = new Command({
8485
describe: 'Set build variables',
8586
default: [],
8687
alias: 'v',
87-
coerce: prepareKeyValueObjectsFromCLIEnvOption,
88-
})
89-
.option('encrypted', {
90-
array: true,
91-
alias: 'e',
92-
describe: 'Variable names to encrypt',
93-
default: [],
9488
})
9589
.option('detach', {
9690
alias: 'd',
@@ -132,7 +126,6 @@ const run = new Command({
132126
.example('codefresh run PIPELINE_ID | PIPELINE_NAME -b=master', 'Defining the source control context using a branch')
133127
.example('codefresh run PIPELINE_ID | PIPELINE_NAME -s=52b992e783d2f84dd0123c70ac8623b4f0f938d1', 'Defining the source control context using a commit')
134128
.example('codefresh run PIPELINE_ID | PIPELINE_NAME -b=master -v key1=value1 -v key2=value2', 'Setting variables through the command')
135-
.example('codefresh run PIPELINE_ID | PIPELINE_NAME -b=master -v key1=value1 -v key2=value2 -e key1', 'Setting variables through the command with encrypted option')
136129
.example('codefresh run PIPELINE_ID | PIPELINE_NAME -b=master --var-file ./var_file.yml', 'Settings variables through a yml file')
137130
.example('codefresh run PIPELINE_ID | PIPELINE_NAME -b=master --context context', 'Inject contexts to the pipeline execution')
138131
.example('codefresh run PIPELINE_ID | PIPELINE_NAME --skip step1 step2 step3', 'Skip specific steps');

lib/interface/cli/commands/pipeline/var.json

-12
This file was deleted.

lib/interface/cli/commands/pipeline/var.yml

-5
This file was deleted.

lib/interface/cli/commands/project/apply.cmd.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const _ = require('lodash');
44
const { sdk } = require('../../../../logic');
55

66
const applyRoot = require('../root/apply.cmd');
7-
const { prepareKeyValueObjectsFromCLIEnvOption, ignoreHttpError, markEncryptedFlagOnRequestedVariables } = require('../../helpers/general');
7+
const { prepareKeyValueObjectsFromCLIEnvOption, ignoreHttpError } = require('../../helpers/general');
88

99
const command = new Command({
1010
command: 'project [id|name]',
@@ -61,7 +61,14 @@ const command = new Command({
6161
encrypted,
6262
} = argv;
6363

64-
const requestedProjectVariables = markEncryptedFlagOnRequestedVariables(variables, encrypted);
64+
const variableMap = _.reduce(variables, (acc, v) => _.assign(acc, { [v.key]: v }), {});
65+
_.forEach(encrypted, (varName) => {
66+
const variable = variableMap[varName];
67+
if (!variable) {
68+
throw new CFError(`Variable is not provided: "${varName}"`);
69+
}
70+
variable.encrypted = true;
71+
});
6572

6673
let project = await sdk.projects.get({ id }).catch(ignoreHttpError);
6774
project = project || await sdk.projects.getByName({ name }).catch(ignoreHttpError);
@@ -74,7 +81,7 @@ const command = new Command({
7481
const updatePayload = _.pickBy({
7582
projectName,
7683
tags: tags || existingTags,
77-
variables: requestedProjectVariables || existingVariables,
84+
variables: variables || existingVariables,
7885
}, _.identity);
7986

8087
await sdk.projects.patch({ id: project.id }, updatePayload);

lib/interface/cli/commands/project/create.cmd.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
const Command = require('../../Command');
2+
const CFError = require('cf-errors');
3+
const _ = require('lodash');
24
const { sdk } = require('../../../../logic');
35
const createRoot = require('../root/create.cmd');
46
const { checkOrProjectExists } = require('../../helpers/validation');
5-
const { prepareKeyValueObjectsFromCLIEnvOption, markEncryptedFlagOnRequestedVariables } = require('../../helpers/general');
7+
const { prepareKeyValueObjectsFromCLIEnvOption } = require('../../helpers/general');
68

79
const command = new Command({
810
command: 'project <name>',
@@ -50,10 +52,17 @@ const command = new Command({
5052
encrypted,
5153
} = argv;
5254

53-
const requestedProjectVariables = markEncryptedFlagOnRequestedVariables(variables, encrypted);
55+
const variableMap = _.reduce(variables, (acc, v) => _.assign(acc, { [v.key]: v }), {});
56+
_.forEach(encrypted, (varName) => {
57+
const variable = variableMap[varName];
58+
if (!variable) {
59+
throw new CFError(`Variable is not provided: "${varName}"`);
60+
}
61+
variable.encrypted = true;
62+
});
5463

5564
await checkOrProjectExists(projectName);
56-
await sdk.projects.create({ projectName, tags, variables: requestedProjectVariables });
65+
await sdk.projects.create({ projectName, tags, variables });
5766
console.log(`Project: "${projectName}" created`);
5867
},
5968
});

0 commit comments

Comments
 (0)