From 89edcce7997ffbaeedb8fb1339200acebd28cae0 Mon Sep 17 00:00:00 2001 From: falsycat Date: Sat, 21 Jun 2025 10:10:53 +0900 Subject: [PATCH] add deploy script --- backend/deploy.sh | 18 ++++++++++++++++++ backend/package.json | 3 ++- buildspec.yml | 5 ++--- frontend/deploy.sh | 6 ++++++ frontend/package.json | 3 ++- infra/backend.ts | 2 +- infra/index.ts | 7 +++++-- setenv | 11 +++++++++++ 8 files changed, 47 insertions(+), 8 deletions(-) create mode 100755 backend/deploy.sh create mode 100755 frontend/deploy.sh create mode 100644 setenv diff --git a/backend/deploy.sh b/backend/deploy.sh new file mode 100755 index 0000000..07d20f5 --- /dev/null +++ b/backend/deploy.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +tmpdir=$(mktemp -d) +trap 'rm -rf "$tmpdir"' EXIT + +cd $(dirname $0)/dist +zip -r "$tmpdir/lambda.zip" . + +cd $tmpdir +aws s3 cp lambda.zip "s3://$IMBUSY_BE_BUCKET" +cd $(dirname $0) + +aws lambda update-function-code \ + --function-name $IMBUSY_BE_LAMBDA \ + --s3-bucket $IMBUSY_BE_BUCKET \ + --s3-key lambda.zip diff --git a/backend/package.json b/backend/package.json index 43a4dc4..479e60b 100644 --- a/backend/package.json +++ b/backend/package.json @@ -6,7 +6,8 @@ "scripts": { "build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js", "clean": "rm -rf dist", - "watch": "npm run build -- --watch" + "watch": "npm run build -- --watch", + "deploy": "./deploy.sh" }, "keywords": [], "author": "", diff --git a/buildspec.yml b/buildspec.yml index 9aa035c..c565586 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -22,8 +22,7 @@ phases: post_build: commands: - echo deploying frontend... - - aws s3 sync frontend/dist/ s3://$IMBUSY_FE_BUCKET --delete + - cd frontend && npm run deploy && cd .. - echo deploying backend... - - cd backend/dist && zip -r ../../backend.zip . && cd ../.. - - aws s3 cp backend.zip s3://$IMBUSY_BE_BUCKET + - cd backend && npm run deploy && cd .. diff --git a/frontend/deploy.sh b/frontend/deploy.sh new file mode 100755 index 0000000..332590f --- /dev/null +++ b/frontend/deploy.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +cd $(dirname $0)/dist +aws s3 sync . "s3://$IMBUSY_FE_BUCKET" --delete diff --git a/frontend/package.json b/frontend/package.json index da5d92c..3cb6ceb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,7 +7,8 @@ "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", - "preview": "vite preview" + "preview": "vite preview", + "deploy": "./deploy.sh" }, "dependencies": { "react": "^19.1.0", diff --git a/infra/backend.ts b/infra/backend.ts index f9e196d..b7c5933 100644 --- a/infra/backend.ts +++ b/infra/backend.ts @@ -23,7 +23,7 @@ new aws.iam.RolePolicyAttachment(`${prefix}-lambda-role-exec`, { policyArn: aws.iam.ManagedPolicies.AWSLambdaBasicExecutionRole, }); -const lambda = new aws.lambda.Function(`${prefix}-lambda`, { +export const lambda = new aws.lambda.Function(`${prefix}-lambda`, { tags, runtime: "nodejs18.x", handler: "index.main", diff --git a/infra/index.ts b/infra/index.ts index 1b31f60..4bbbdbd 100644 --- a/infra/index.ts +++ b/infra/index.ts @@ -6,5 +6,8 @@ import * as frontend from "./frontend"; import "./deployment"; -export const frontendDomain = frontend.cloudfront.domainName; -export const backendEndpoint = backend.api.apiEndpoint; +export const feBucket = frontend.bucket.bucket; +export const feDomain = frontend.cloudfront.domainName; +export const beBucket = backend.bucket.bucket; +export const beLambda = backend.lambda.name; +export const beEndpoint = backend.api.apiEndpoint; diff --git a/setenv b/setenv new file mode 100644 index 0000000..80efcc5 --- /dev/null +++ b/setenv @@ -0,0 +1,11 @@ +#!/bin/bash + +cd $(dirname $0) + +cd infra/ + +export IMBUSY_BE_BUCKET=$(pulumi stack output beBucket) +export IMBUSY_BE_LAMBDA=$(pulumi stack output beLambda) +export IMBUSY_FE_BUCKET=$(pulumi stack output feBucket) + +cd ../