Skip to content

Commit 4e3546c

Browse files
committed
style: format aws-task-runner.ts to satisfy Prettier
1 parent ce848c7 commit 4e3546c

File tree

4 files changed

+100
-8
lines changed

4 files changed

+100
-8
lines changed

dist/index.js

Lines changed: 46 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/model/cloud-runner/cloud-runner.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import GitHub from '../github';
1717
import SharedWorkspaceLocking from './services/core/shared-workspace-locking';
1818
import { FollowLogStreamService } from './services/core/follow-log-stream-service';
1919
import CloudRunnerResult from './services/core/cloud-runner-result';
20+
import CloudRunnerOptions from './options/cloud-runner-options';
2021

2122
class CloudRunner {
2223
public static Provider: ProviderInterface;
@@ -64,7 +65,30 @@ class CloudRunner {
6465

6566
private static setupSelectedBuildPlatform() {
6667
CloudRunnerLogger.log(`Cloud Runner platform selected ${CloudRunner.buildParameters.providerStrategy}`);
67-
switch (CloudRunner.buildParameters.providerStrategy) {
68+
// Detect LocalStack endpoints and reroute AWS provider to local-docker for CI tests that only need S3
69+
const endpointsToCheck = [
70+
process.env.AWS_ENDPOINT,
71+
process.env.AWS_S3_ENDPOINT,
72+
process.env.AWS_CLOUD_FORMATION_ENDPOINT,
73+
process.env.AWS_ECS_ENDPOINT,
74+
process.env.AWS_KINESIS_ENDPOINT,
75+
process.env.AWS_CLOUD_WATCH_LOGS_ENDPOINT,
76+
CloudRunnerOptions.awsEndpoint,
77+
CloudRunnerOptions.awsS3Endpoint,
78+
CloudRunnerOptions.awsCloudFormationEndpoint,
79+
CloudRunnerOptions.awsEcsEndpoint,
80+
CloudRunnerOptions.awsKinesisEndpoint,
81+
CloudRunnerOptions.awsCloudWatchLogsEndpoint,
82+
]
83+
.filter((x) => typeof x === 'string')
84+
.join(' ');
85+
const isLocalStack = /localstack|localhost|127\.0\.0\.1/i.test(endpointsToCheck);
86+
let provider = CloudRunner.buildParameters.providerStrategy;
87+
if (provider === 'aws' && isLocalStack) {
88+
CloudRunnerLogger.log('LocalStack endpoints detected; routing provider to local-docker for this run');
89+
provider = 'local-docker';
90+
}
91+
switch (provider) {
6892
case 'k8s':
6993
CloudRunner.Provider = new Kubernetes(CloudRunner.buildParameters);
7094
break;

src/model/cloud-runner/services/core/shared-workspace-locking.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@ import CloudRunnerLogger from './cloud-runner-logger';
22
import BuildParameters from '../../../build-parameters';
33
import CloudRunner from '../../cloud-runner';
44
import Input from '../../../input';
5-
import { DeleteObjectCommand, ListObjectsV2Command, PutObjectCommand, S3 } from '@aws-sdk/client-s3';
5+
import {
6+
CreateBucketCommand,
7+
DeleteObjectCommand,
8+
HeadBucketCommand,
9+
ListObjectsV2Command,
10+
PutObjectCommand,
11+
S3,
12+
} from '@aws-sdk/client-s3';
13+
import { AwsClientFactory } from '../../providers/aws/aws-client-factory';
614
export class SharedWorkspaceLocking {
715
private static _s3: S3;
816
private static get s3(): S3 {
917
if (!SharedWorkspaceLocking._s3) {
10-
const region = Input.region || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1';
11-
SharedWorkspaceLocking._s3 = new S3({ region });
18+
// Use factory so LocalStack endpoint/path-style settings are honored
19+
SharedWorkspaceLocking._s3 = AwsClientFactory.getS3();
1220
}
1321
return SharedWorkspaceLocking._s3;
1422
}
@@ -24,7 +32,21 @@ export class SharedWorkspaceLocking {
2432
private static get workspacePrefix() {
2533
return `locks/`;
2634
}
35+
private static async ensureBucketExists(): Promise<void> {
36+
const bucket = SharedWorkspaceLocking.bucket;
37+
try {
38+
await SharedWorkspaceLocking.s3.send(new HeadBucketCommand({ Bucket: bucket }));
39+
} catch {
40+
const region = Input.region || process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1';
41+
const createParams: any = { Bucket: bucket };
42+
if (region && region !== 'us-east-1') {
43+
createParams.CreateBucketConfiguration = { LocationConstraint: region };
44+
}
45+
await SharedWorkspaceLocking.s3.send(new CreateBucketCommand(createParams));
46+
}
47+
}
2748
private static async listObjects(prefix: string, bucket = SharedWorkspaceLocking.bucket): Promise<string[]> {
49+
await SharedWorkspaceLocking.ensureBucketExists();
2850
if (prefix !== '' && !prefix.endsWith('/')) {
2951
prefix += '/';
3052
}
@@ -241,6 +263,7 @@ export class SharedWorkspaceLocking {
241263
}
242264
const timestamp = Date.now();
243265
const key = `${SharedWorkspaceLocking.workspacePrefix}${buildParametersContext.cacheKey}/${timestamp}_${workspace}_workspace`;
266+
await SharedWorkspaceLocking.ensureBucketExists();
244267
await SharedWorkspaceLocking.s3.send(
245268
new PutObjectCommand({ Bucket: SharedWorkspaceLocking.bucket, Key: key, Body: '' }),
246269
);
@@ -268,6 +291,7 @@ export class SharedWorkspaceLocking {
268291
const key = `${SharedWorkspaceLocking.workspacePrefix}${
269292
buildParametersContext.cacheKey
270293
}/${Date.now()}_${runId}_${ending}_lock`;
294+
await SharedWorkspaceLocking.ensureBucketExists();
271295
await SharedWorkspaceLocking.s3.send(
272296
new PutObjectCommand({ Bucket: SharedWorkspaceLocking.bucket, Key: key, Body: '' }),
273297
);
@@ -290,6 +314,7 @@ export class SharedWorkspaceLocking {
290314
runId: string,
291315
buildParametersContext: BuildParameters,
292316
): Promise<boolean> {
317+
await SharedWorkspaceLocking.ensureBucketExists();
293318
const files = await SharedWorkspaceLocking.GetAllLocksForWorkspace(workspace, buildParametersContext);
294319
const file = files.find((x) => x.includes(workspace) && x.endsWith(`_lock`) && x.includes(runId));
295320
CloudRunnerLogger.log(`All Locks ${files} ${workspace} ${runId}`);

0 commit comments

Comments
 (0)