CI/CD - CodeBuild + CodeDeploy + CodePipeline
This commit is contained in:
@@ -22,7 +22,10 @@ export const apiEndpointKeys = {
|
||||
create: "clouds.services.resources.create",
|
||||
update: "clouds.services.resources.update",
|
||||
delete: "clouds.services.resources.delete",
|
||||
invoke: "clouds.services.resources.invoke",
|
||||
invoke: "clouds.services.resources.invoke",
|
||||
start: "clouds.services.resources.start",
|
||||
stop: "clouds.services.resources.stop",
|
||||
reboot: "clouds.services.resources.reboot",
|
||||
publish: "clouds.services.resources.notifications.publish",
|
||||
createSnsSubscription: "clouds.services.resources.notifications.subscription.create",
|
||||
listSnsSubscriptions: "clouds.services.resources.notifications.subscriptions.list",
|
||||
@@ -60,7 +63,17 @@ export const apiEndpointKeys = {
|
||||
listWorkflowExecutions: "clouds.services.resources.workflows.executions.list",
|
||||
describeWorkflowExecution: "clouds.services.resources.workflows.execution.describe",
|
||||
getWorkflowExecutionHistory: "clouds.services.resources.workflows.execution.history.get",
|
||||
stopWorkflowExecution: "clouds.services.resources.workflows.execution.stop",
|
||||
stopWorkflowExecution: "clouds.services.resources.workflows.execution.stop",
|
||||
startCodeBuild: "clouds.services.resources.codebuild.build.start",
|
||||
listCodeBuilds: "clouds.services.resources.codebuild.builds.list",
|
||||
getCodeBuild: "clouds.services.resources.codebuild.build.get",
|
||||
startCodePipeline: "clouds.services.resources.codepipeline.execution.start",
|
||||
listCodePipelineExecutions: "clouds.services.resources.codepipeline.executions.list",
|
||||
getCodePipelineState: "clouds.services.resources.codepipeline.state.get",
|
||||
startCodeDeployDeployment: "clouds.services.resources.codedeploy.deployment.start",
|
||||
listCodeDeployDeployments: "clouds.services.resources.codedeploy.deployments.list",
|
||||
getCodeDeployDeployment: "clouds.services.resources.codedeploy.deployment.get",
|
||||
stopCodeDeployDeployment: "clouds.services.resources.codedeploy.deployment.stop",
|
||||
},
|
||||
storage: {
|
||||
objects: {
|
||||
@@ -342,6 +355,18 @@ export const endpointRegistry: EndpointRegistry = new Map([
|
||||
method: "POST",
|
||||
},
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.start,
|
||||
{ path: "/clouds/:cloud/services/:service/resources/:id/start", method: "POST" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.stop,
|
||||
{ path: "/clouds/:cloud/services/:service/resources/:id/stop", method: "POST" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.reboot,
|
||||
{ path: "/clouds/:cloud/services/:service/resources/:id/reboot", method: "POST" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.publish,
|
||||
{
|
||||
@@ -542,6 +567,34 @@ export const endpointRegistry: EndpointRegistry = new Map([
|
||||
apiEndpointKeys.clouds.resources.stopWorkflowExecution,
|
||||
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn/stop", method: "POST" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.startCodeBuild,
|
||||
{ path: "/clouds/:cloud/services/codebuild/resources/:id/builds", method: "POST" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.listCodeBuilds,
|
||||
{ path: "/clouds/:cloud/services/codebuild/resources/:id/builds", method: "GET" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.getCodeBuild,
|
||||
{ path: "/clouds/:cloud/services/codebuild/resources/:id/builds/:buildId", method: "GET" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.startCodePipeline,
|
||||
{ path: "/clouds/:cloud/services/codepipeline/resources/:id/executions", method: "POST" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.listCodePipelineExecutions,
|
||||
{ path: "/clouds/:cloud/services/codepipeline/resources/:id/executions", method: "GET" },
|
||||
],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.getCodePipelineState,
|
||||
{ path: "/clouds/:cloud/services/codepipeline/resources/:id/state", method: "GET" },
|
||||
],
|
||||
[apiEndpointKeys.clouds.resources.startCodeDeployDeployment, {path: "/clouds/:cloud/services/codedeploy/resources/:id/deployments", method: "POST"}],
|
||||
[apiEndpointKeys.clouds.resources.listCodeDeployDeployments, {path: "/clouds/:cloud/services/codedeploy/resources/:id/deployments", method: "GET"}],
|
||||
[apiEndpointKeys.clouds.resources.getCodeDeployDeployment, {path: "/clouds/:cloud/services/codedeploy/deployments/:deploymentId", method: "GET"}],
|
||||
[apiEndpointKeys.clouds.resources.stopCodeDeployDeployment, {path: "/clouds/:cloud/services/codedeploy/deployments/:deploymentId/stop", method: "POST"}],
|
||||
[
|
||||
apiEndpointKeys.clouds.resources.get,
|
||||
{
|
||||
|
||||
@@ -208,6 +208,42 @@ export async function deleteCloudResource(
|
||||
);
|
||||
}
|
||||
|
||||
export async function startCloudResource(
|
||||
cloud: CloudProvider,
|
||||
service: CloudServiceType,
|
||||
id: string,
|
||||
): Promise<void> {
|
||||
await apiClient.call<void>(
|
||||
apiEndpointKeys.clouds.resources.start,
|
||||
requestOptions(cloud, service),
|
||||
{ cloud, service, id },
|
||||
);
|
||||
}
|
||||
|
||||
export async function stopCloudResource(
|
||||
cloud: CloudProvider,
|
||||
service: CloudServiceType,
|
||||
id: string,
|
||||
): Promise<void> {
|
||||
await apiClient.call<void>(
|
||||
apiEndpointKeys.clouds.resources.stop,
|
||||
requestOptions(cloud, service),
|
||||
{ cloud, service, id },
|
||||
);
|
||||
}
|
||||
|
||||
export async function rebootCloudResource(
|
||||
cloud: CloudProvider,
|
||||
service: CloudServiceType,
|
||||
id: string,
|
||||
): Promise<void> {
|
||||
await apiClient.call<void>(
|
||||
apiEndpointKeys.clouds.resources.reboot,
|
||||
requestOptions(cloud, service),
|
||||
{ cloud, service, id },
|
||||
);
|
||||
}
|
||||
|
||||
export async function clearEmailInbox(
|
||||
cloud: CloudProvider,
|
||||
signal?: AbortSignal,
|
||||
@@ -257,6 +293,47 @@ export interface WorkflowExecutionHistoryPage {
|
||||
nextToken?: string;
|
||||
}
|
||||
|
||||
export interface CodeBuildEnvironmentVariableOverride {
|
||||
name: string;
|
||||
value: string;
|
||||
type?: "PLAINTEXT" | "PARAMETER_STORE" | "SECRETS_MANAGER";
|
||||
}
|
||||
|
||||
export interface CodeBuildBuild {
|
||||
id: string;
|
||||
arn?: string;
|
||||
projectName: string;
|
||||
buildNumber?: number;
|
||||
buildStatus?: string;
|
||||
currentPhase?: string;
|
||||
startTime?: string;
|
||||
endTime?: string;
|
||||
phases: Array<{phaseType: string; phaseStatus?: string; startTime?: string; endTime?: string; contexts: Array<{statusCode?: string; message?: string}>}>;
|
||||
logGroupName?: string;
|
||||
logStreamName?: string;
|
||||
}
|
||||
|
||||
export interface PipelineExecutionSummary {
|
||||
id: string;
|
||||
status?: string;
|
||||
statusSummary?: string;
|
||||
startTime?: string;
|
||||
lastUpdateTime?: string;
|
||||
}
|
||||
|
||||
export interface PipelineState {
|
||||
stages: Array<{
|
||||
name: string;
|
||||
status?: string;
|
||||
lastStatusChange?: string;
|
||||
actions: Array<{name: string; status?: string; summary?: string; lastStatusChange?: string; externalExecutionId?: string; externalExecutionUrl?: string; entityUrl?: string; revisionUrl?: string; codeBuildProject?: string; codeDeployDeploymentId?: string}>;
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface CodeDeployDeployment { id: string; applicationName: string; deploymentGroupName: string; status: string | null; creator: string | null; deploymentConfigName: string | null; createTime?: string; completeTime?: string; errorInformation: {code?: string; message?: string} | null; currentVersion: string | null; targetVersion: string | null; trafficPercent: number | null }
|
||||
export interface StartCodeDeployDeploymentInput { functionName: string; alias: string; currentVersion: string; targetVersion: string; beforeAllowTrafficHook?: string; afterAllowTrafficHook?: string }
|
||||
export interface CodeDeployDependencies { lambdaFunctions: Array<{name: string; aliases: string[]; versions: string[]}> }
|
||||
|
||||
export interface CreateApiGatewayLambdaRouteInput {
|
||||
path: string;
|
||||
parentResourceId?: string;
|
||||
@@ -883,6 +960,42 @@ export async function stopWorkflowExecution(stateMachineArn: string, executionAr
|
||||
);
|
||||
}
|
||||
|
||||
export async function startCodeBuild(projectName: string, input: {environmentVariablesOverride?: CodeBuildEnvironmentVariableOverride[]}): Promise<CodeBuildBuild> {
|
||||
const res = await apiClient.call<CodeBuildBuild, typeof input>(apiEndpointKeys.clouds.resources.startCodeBuild, requestOptions("aws", "codebuild", {body: input}), {cloud: "aws", id: projectName});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function listCodeBuilds(projectName: string, signal?: AbortSignal): Promise<CodeBuildBuild[]> {
|
||||
const res = await apiClient.call<CodeBuildBuild[]>(apiEndpointKeys.clouds.resources.listCodeBuilds, requestOptions("aws", "codebuild", {signal}), {cloud: "aws", id: projectName});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function getCodeBuild(projectName: string, buildId: string, signal?: AbortSignal): Promise<CodeBuildBuild> {
|
||||
const res = await apiClient.call<CodeBuildBuild>(apiEndpointKeys.clouds.resources.getCodeBuild, requestOptions("aws", "codebuild", {signal}), {cloud: "aws", id: projectName, buildId});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function startCodePipeline(name: string): Promise<{id: string}> {
|
||||
const res = await apiClient.call<{id: string}>(apiEndpointKeys.clouds.resources.startCodePipeline, requestOptions('aws', 'codepipeline'), {cloud: 'aws', id: name});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function listCodePipelineExecutions(name: string, signal?: AbortSignal): Promise<PipelineExecutionSummary[]> {
|
||||
const res = await apiClient.call<PipelineExecutionSummary[]>(apiEndpointKeys.clouds.resources.listCodePipelineExecutions, requestOptions('aws', 'codepipeline', {signal}), {cloud: 'aws', id: name});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function getCodePipelineState(name: string, signal?: AbortSignal): Promise<PipelineState> {
|
||||
const res = await apiClient.call<PipelineState>(apiEndpointKeys.clouds.resources.getCodePipelineState, requestOptions('aws', 'codepipeline', {signal}), {cloud: 'aws', id: name});
|
||||
return res.data;
|
||||
}
|
||||
|
||||
export async function getCodeDeployDependencies(signal?: AbortSignal): Promise<CodeDeployDependencies> { const res = await apiClient.call<CodeDeployDependencies>(apiEndpointKeys.clouds.dependencies, requestOptions('aws', 'codedeploy', {signal}), {cloud: 'aws', service: 'codedeploy'}); return res.data }
|
||||
export async function startCodeDeployDeployment(groupId: string, input: StartCodeDeployDeploymentInput): Promise<CodeDeployDeployment> { const res = await apiClient.call<CodeDeployDeployment, StartCodeDeployDeploymentInput>(apiEndpointKeys.clouds.resources.startCodeDeployDeployment, requestOptions('aws', 'codedeploy', {body: input}), {cloud: 'aws', id: groupId}); return res.data }
|
||||
export async function listCodeDeployDeployments(groupId: string, signal?: AbortSignal): Promise<CodeDeployDeployment[]> { const res = await apiClient.call<CodeDeployDeployment[]>(apiEndpointKeys.clouds.resources.listCodeDeployDeployments, requestOptions('aws', 'codedeploy', {signal}), {cloud: 'aws', id: groupId}); return res.data }
|
||||
export async function getCodeDeployDeployment(id: string, signal?: AbortSignal): Promise<CodeDeployDeployment> { const res = await apiClient.call<CodeDeployDeployment>(apiEndpointKeys.clouds.resources.getCodeDeployDeployment, requestOptions('aws', 'codedeploy', {signal}), {cloud: 'aws', deploymentId: id}); return res.data }
|
||||
export async function stopCodeDeployDeployment(id: string, rollback: boolean): Promise<void> { await apiClient.call<void, {rollback: boolean}>(apiEndpointKeys.clouds.resources.stopCodeDeployDeployment, requestOptions('aws', 'codedeploy', {body: {rollback}}), {cloud: 'aws', deploymentId: id}) }
|
||||
|
||||
export async function publishNotification(
|
||||
cloud: CloudProvider,
|
||||
topicArn: string,
|
||||
|
||||
Reference in New Issue
Block a user