Skip to content

Commit a06c944

Browse files
committed
fix: artifacts upload works now
Signed-off-by: seven <[email protected]>
1 parent 1ab60eb commit a06c944

File tree

4 files changed

+40
-25
lines changed

4 files changed

+40
-25
lines changed

src/stack/deploy.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ export const generateRosStackTemplate = (
2525
rootPath: assembly.directory,
2626
...JSON.parse(assetsFileBody.toString('utf-8').trim()),
2727
};
28-
console.log('Assets:', {
29-
assembly: assembly,
30-
assetFolderPath,
31-
});
28+
3229
return { template, assets };
3330
};
3431

src/stack/rosStack/function.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ export const resolveFunctions = (
3535
// creat oss to store code
3636
destinationBucket = new oss.Bucket(
3737
scope,
38-
replaceReference(`${service}_artifacts_bucket_testb`, context),
38+
replaceReference(`${service}_artifacts_bucket`, context),
3939
{
40-
bucketName: `${service}-artifacts-bucket-testb`,
40+
bucketName: `${service}-artifacts-bucket`,
4141
serverSideEncryptionConfiguration: { sseAlgorithm: 'KMS' },
4242
},
4343
true,
@@ -49,25 +49,24 @@ export const resolveFunctions = (
4949
sources: fileSources!.map(({ source }) => source),
5050
destinationBucket,
5151
timeout: 3000,
52-
logMonitoring: false, // 是否开启日志监控,设为false则不开启
52+
logMonitoring: false,
5353
},
5454
true,
5555
);
5656
artifactsDeployment.addDependency(destinationBucket);
5757
}
5858
functions?.forEach((fnc) => {
5959
const storeInBucket = readCodeSize(fnc.code) > CODE_ZIP_SIZE_LIMIT;
60-
const zipcode: fc.RosFunction.CodeProperty = {
61-
zipFile: resolveCode('artifacts/artifact.zip'),
60+
let code: fc.RosFunction.CodeProperty = {
61+
zipFile: resolveCode(fnc.code),
6262
};
6363
if (storeInBucket) {
64-
// const code = {
65-
// ossBucketName: destinationBucket.attrName,
66-
// ossObjectName: fileSources?.find(
67-
// ({ fcName }) => fcName === replaceReference(fnc.name, context),
68-
// )?.objectKey,
69-
// };
70-
// console.log('code', code);
64+
code = {
65+
ossBucketName: destinationBucket.attrName,
66+
ossObjectName: fileSources?.find(
67+
({ fcName }) => fcName === replaceReference(fnc.name, context),
68+
)?.objectKey,
69+
};
7170
}
7271
new fc.RosFunction(
7372
scope,
@@ -79,7 +78,7 @@ export const resolveFunctions = (
7978
memorySize: replaceReference(fnc.memory, context),
8079
timeout: replaceReference(fnc.timeout, context),
8180
environmentVariables: replaceReference(fnc.environment, context),
82-
code: zipcode,
81+
code,
8382
},
8483
true,
8584
);

tests/fixtures/deployFixture.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,10 +481,11 @@ export const largeCodeRos = {
481481
ServiceName: {
482482
'Fn::GetAtt': ['FCServiceFormy-demo-service_artifacts_code_deployment', 'ServiceName'],
483483
},
484-
Timeout: 300,
484+
Timeout: 3000,
485485
},
486486
Type: 'ALIYUN::FC::Function',
487487
},
488+
488489
'FCRoleFormy-demo-service_artifacts_code_deployment': {
489490
Properties: {
490491
AssumeRolePolicyDocument: {
@@ -682,6 +683,7 @@ export const largeCodeRos = {
682683
Type: 'ALIYUN::OSS::Bucket',
683684
},
684685
'my-demo-service_artifacts_code_deployment': {
686+
DependsOn: ['my-demo-service_artifacts_bucket'],
685687
Properties: {
686688
Parameters: {
687689
destinationBucket: {
@@ -690,7 +692,7 @@ export const largeCodeRos = {
690692
retainOnCreate: false,
691693
sources: [
692694
{
693-
bucket: { 'Fn::Sub': expect.stringContaining('assets-${ALIYUN::Region}') },
695+
bucket: { 'Fn::Sub': expect.any(String) },
694696
fileName: 'hello_fn/43cb4c356149762dbe507fc1baede172-large-artifact.zip',
695697
objectKey: '2bfeafed8d3df0d44c235271cdf2aa7d908a3c2757af14a67d33d102847f46fd.zip',
696698
},
@@ -699,7 +701,7 @@ export const largeCodeRos = {
699701
ServiceToken: {
700702
'Fn::GetAtt': ['FCFunctionFormy-demo-service_artifacts_code_deployment', 'ARN'],
701703
},
702-
Timeout: 300,
704+
Timeout: 3000,
703705
},
704706
Type: 'ALIYUN::ROS::CustomResource',
705707
},

tests/stack/deploy.test.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,24 @@ import { cloneDeep, set } from 'lodash';
1919

2020
const mockedRosStackDeploy = jest.fn();
2121
const mockedResolveCode = jest.fn();
22+
const mockedPublishAssets = jest.fn();
23+
2224
jest.mock('../../src/common', () => ({
2325
...jest.requireActual('../../src/common'),
2426
rosStackDeploy: (...args: unknown[]) => mockedRosStackDeploy(...args),
27+
publishAssets: (...args: unknown[]) => mockedPublishAssets(...args),
2528
resolveCode: (path: string) => mockedResolveCode(path),
2629
}));
2730

2831
describe('Unit tests for stack deployment', () => {
2932
beforeEach(() => {
3033
mockedResolveCode.mockReturnValueOnce('resolved-code');
34+
mockedPublishAssets.mockResolvedValueOnce('published-assets-bucket');
3135
});
3236
afterEach(() => {
3337
mockedRosStackDeploy.mockRestore();
3438
mockedResolveCode.mockRestore();
39+
mockedPublishAssets.mockRestore();
3540
});
3641

3742
it('should deploy generated stack when iac is valid', async () => {
@@ -95,6 +100,7 @@ describe('Unit tests for stack deployment', () => {
95100
options,
96101
);
97102
});
103+
98104
it('should evaluate service name as pure string when it reference ${ctx.stage}', async () => {
99105
const options = { stackName: 'my-demo-stack-fc-with-stage-1', stage: 'dev' };
100106
mockedRosStackDeploy.mockResolvedValueOnce(options.stackName);
@@ -109,11 +115,11 @@ describe('Unit tests for stack deployment', () => {
109115
);
110116
});
111117

112-
it('should create bucket and store code artifact to bucket when code size > 15MB', () => {
118+
it('should create bucket and store code artifact to bucket when code size > 15MB', async () => {
113119
const stackName = 'my-large-code-stack';
114120
mockedRosStackDeploy.mockResolvedValueOnce(stackName);
115121

116-
deployStack(
122+
await deployStack(
117123
stackName,
118124
set(
119125
cloneDeep(oneFcOneGatewayIac),
@@ -123,16 +129,27 @@ describe('Unit tests for stack deployment', () => {
123129
{ stackName } as ActionContext,
124130
);
125131

126-
expect(mockedResolveCode).toHaveBeenCalledTimes(1);
132+
expect(mockedPublishAssets).toHaveBeenCalledTimes(1);
133+
expect(mockedRosStackDeploy).toHaveBeenCalledTimes(1);
134+
expect(mockedPublishAssets).toHaveBeenCalledWith(
135+
expect.objectContaining({
136+
dockerImages: {},
137+
files: expect.any(Object),
138+
rootPath: expect.stringContaining('/var/folders/'),
139+
version: '7.0.0',
140+
}),
141+
142+
{ stackName },
143+
);
127144
expect(mockedRosStackDeploy).toHaveBeenCalledWith(stackName, largeCodeRos, { stackName });
128145
});
129146

130147
describe('unit test for deploy of databases', () => {
131-
it('should deploy elasticsearch serverless when database minimum fields provided', () => {
148+
it('should deploy elasticsearch serverless when database minimum fields provided', async () => {
132149
const stackName = 'my-demo-es-serverless-stack';
133150
mockedRosStackDeploy.mockResolvedValueOnce(stackName);
134151

135-
deployStack(stackName, esServerlessMinimumIac, { stackName } as ActionContext);
152+
await deployStack(stackName, esServerlessMinimumIac, { stackName } as ActionContext);
136153

137154
expect(mockedRosStackDeploy).toHaveBeenCalledTimes(1);
138155
expect(mockedRosStackDeploy).toHaveBeenCalledWith(stackName, esServerlessMinimumRos, {

0 commit comments

Comments
 (0)