From 41043530f3a7472aeebb9fb7a9937b1f1e48d664 Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Thu, 29 Feb 2024 15:09:59 +0300 Subject: [PATCH 1/7] change repo name --- stacks/devops/OIDCForGitHubCI.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stacks/devops/OIDCForGitHubCI.ts b/stacks/devops/OIDCForGitHubCI.ts index 3685a11..c44defa 100644 --- a/stacks/devops/OIDCForGitHubCI.ts +++ b/stacks/devops/OIDCForGitHubCI.ts @@ -9,7 +9,7 @@ export function OIDCForGitHubCI({stack }: StackContext) { clientIds: ['sts.amazonaws.com'], }); - const organization = 'hamadsuniverse'; // Use your GitHub organization + const organization = 'cerashdan'; // Use your GitHub organization const repository = 'codecatalyst-sst-app'; // Use your GitHub repository new iam.Role(stack, 'GitHubActionsRole', { From 609ecc4a45e87b903c90e9e76356a77b737faa46 Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Thu, 29 Feb 2024 15:21:10 +0300 Subject: [PATCH 2/7] adding changes to role to assume --- .github/workflows/build-test.yaml | 2 +- .github/workflows/deploy-on-push-main.yaml | 2 +- README.md | 18 ++++++++++++------ package-lock.json | 2 +- package.json | 10 +++++----- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index 121694e..fbdcccc 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -18,7 +18,7 @@ jobs: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v2 with: - role-to-assume: arn:aws:iam::888641773886:role/GitHub + role-to-assume: arn:aws:iam::118857191396:role/GitHub role-duration-seconds: 3600 #adjust as needed for your build time aws-region: us-east-1 - name: Set up Docker Buildx diff --git a/.github/workflows/deploy-on-push-main.yaml b/.github/workflows/deploy-on-push-main.yaml index 25c89c6..b19599f 100644 --- a/.github/workflows/deploy-on-push-main.yaml +++ b/.github/workflows/deploy-on-push-main.yaml @@ -19,7 +19,7 @@ jobs: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v2 with: - role-to-assume: arn:aws:iam::888641773886:role/GitHub + role-to-assume: arn:aws:iam::118857191396:role/GitHub role-duration-seconds: 3600 #adjust as needed for your build time aws-region: us-east-1 - name: Set up Docker Buildx diff --git a/README.md b/README.md index 3ccba19..46a62c2 100644 --- a/README.md +++ b/README.md @@ -92,11 +92,17 @@ This template includes two sample workflow definitions under the speical [.githu Additional checks can also be enabled to protect the main branch, require PR reviews, require build to pass before merge, perform secrets scanning on the repository and prevent secrets from being pushed to GitHub. Details are in the config steps section below. -In addition, the [OIDCForGitHubCI.ts](devops/OIDCForGitHubCI.ts) stack provides an automation that deploys the OIDC identity provider that allows GitHub workflows from your repository to access your AWS account for deployment. +In addition, the [OIDCForGitHubCI.ts](devops/OIDCForGitHubCI.ts) stack provides an automation that deploys the OIDC identity provider that allows GitHub workflows from your repository to access your AWS account for deployment. See [SST - Going to Production](https://docs.sst.dev/going-to-production#stacks-setup) if you would like to understnad more about it. #### Configuration steps for GitHub Workflow -1. Deploy the "devops-gh" stage +1. Install aws-cdk-lib (pre-requisite for using SST) + +```bash +npm i aws-cdk-lib +``` + +2. Deploy the "devops-gh" stage ```bash npx sst deploy --stage devops-gh @@ -104,20 +110,20 @@ npx sst deploy --stage devops-gh This will deploy the Open ID Connect (OIDC) identity provider in your account. -2. Update the `role-to-assume:` and `aws-region:` attributes in both workflow yaml files to use the role created by the deployed stack. If you do not change the default values, the role name will be GitHub, and so only the AWS account ID will need to be updated in the yaml definition. +3. Update the `role-to-assume:` and `aws-region:` attributes in both workflow yaml files to use the role created by the deployed stack. If you do not change the default values, the role name will be GitHub, and so only the AWS account ID will need to be updated in the yaml definition. ``` build-test.yaml deploy-on-push-main.yaml ``` -3. (Re)Trigger a run of the workflows from the `actions` tab to report status checks of each workflow +4. (Re)Trigger a run of the workflows from the `actions` tab to report status checks of each workflow Create a test/dummy PR to trigger the ci build test workflow. This inital run is needed to be able to select the status check as part of the branch protection to prevent PR merges on branches that do not pass the build check (ci). -4. Enable branch protection, Require Pull Request and Reviews +5. Enable branch protection, Require Pull Request and Reviews Go to `Settings`>`Branches`>`Add rule` @@ -131,7 +137,7 @@ Go to `Settings`>`Branches`>`Add rule` `Save Changes` -5. Enable secret scanning and push protection +6. Enable secret scanning and push protection Go to `Settings`>`Branches`>`Add rule` diff --git a/package-lock.json b/package-lock.json index 9f9ad24..544d3c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ ], "devDependencies": { "@tsconfig/node18": "^18.2.1", - "aws-cdk-lib": "2.124.0", + "aws-cdk-lib": "^2.124.0", "constructs": "10.3.0", "sst": "2.40.3", "typescript": "^5.2.2" diff --git a/package.json b/package.json index 836ba64..4238a14 100644 --- a/package.json +++ b/package.json @@ -12,13 +12,13 @@ "typecheck": "tsc --noEmit" }, "devDependencies": { - "sst": "2.40.3", - "aws-cdk-lib": "2.124.0", + "@tsconfig/node18": "^18.2.1", + "aws-cdk-lib": "^2.124.0", "constructs": "10.3.0", - "typescript": "^5.2.2", - "@tsconfig/node18": "^18.2.1" + "sst": "2.40.3", + "typescript": "^5.2.2" }, "workspaces": [ "packages/*" ] -} \ No newline at end of file +} From c6e0815fbb820edc0d3505c41adfd09b9ccacafb Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Thu, 29 Feb 2024 18:37:46 +0300 Subject: [PATCH 3/7] enhanced documentation + diagram for run dev --- README.md | 27 +++++-- docs/diagrams/app-dev-lifecycle.drawio | 108 ++++++++++++++++++++++++- docs/diagrams/run-dev.drawio.png | Bin 0 -> 134279 bytes 3 files changed, 125 insertions(+), 10 deletions(-) create mode 100644 docs/diagrams/run-dev.drawio.png diff --git a/README.md b/README.md index 46a62c2..9dffe68 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ An example full-stack serverless React.js app created with SST. This sample also includes Amazon CodeCatalyst and GitHub workflow (CD pipelines) to deploy changes of the main branch to AWS automatically. As well as additional checks that can be enabled to protect the main branch, require PR reviews, require build to pass before merge, perform secrets scanning on the repository and prevent secrets from being pushed to GitHub. +This stack assumes that you have deployed the prod SST stage first which includes a relational database. Other non-prod stages refernce that relational database instead of creating their own. See [DBStack.ts](./stacks/DBStack.ts) for more details. + +The template was designed this way to be __educational and to demonstrate the use of different stages (prod,dev,test) while keeping a single database for cost saving and simplification__ to be shared between them all. It is important to note that this is not a recommended setup for production uses. + ## Steps to get started (one time per repo) At a high level, these are the steps you need to take to use this template: @@ -96,11 +100,13 @@ In addition, the [OIDCForGitHubCI.ts](devops/OIDCForGitHubCI.ts) stack provides #### Configuration steps for GitHub Workflow -1. Install aws-cdk-lib (pre-requisite for using SST) +1. Pre-requisite for using SST + - Install aws cdk package -```bash -npm i aws-cdk-lib -``` + ```bash + npm i aws-cdk-lib + ``` + - Ensure that [Docker](https://docs.docker.com/engine/install/) is installed on your machine 2. Deploy the "devops-gh" stage @@ -119,9 +125,10 @@ deploy-on-push-main.yaml 4. (Re)Trigger a run of the workflows from the `actions` tab to report status checks of each workflow -Create a test/dummy PR to trigger the ci build test workflow. + 1. Create a branch and perform some changes + 2. Create a test/dummy PR to trigger the ci build test workflow. -This inital run is needed to be able to select the status check as part of the branch protection to prevent PR merges on branches that do not pass the build check (ci). +__This inital run is needed to be able to select the status check as part of the branch protection to prevent PR merges on branches that do not pass the build check (ci).__ 5. Enable branch protection, Require Pull Request and Reviews @@ -240,4 +247,10 @@ Learn more. The figure below shows the typical application/feature devlopment workflow that you can follow. Exchange CodeCatalyst with GitHub if that is what you are using. -![Feature Dev LifeCylce](./docs/diagrams/app-dev-lifecycle.drawio.png) \ No newline at end of file +![Feature Dev LifeCylce](./docs/diagrams/app-dev-lifecycle.drawio.png) + +## Live Lambda Development + +The figure below shows the an SST features called Live Lambda which allows you to debug and test your Lambda functions locally. + +![Live Lambda](./docs/diagrams/run-dev.drawio.png) \ No newline at end of file diff --git a/docs/diagrams/app-dev-lifecycle.drawio b/docs/diagrams/app-dev-lifecycle.drawio index 24e7751..cbf9a39 100644 --- a/docs/diagrams/app-dev-lifecycle.drawio +++ b/docs/diagrams/app-dev-lifecycle.drawio @@ -1,6 +1,6 @@ - - - + + + @@ -127,4 +127,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/diagrams/run-dev.drawio.png b/docs/diagrams/run-dev.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..152df9bec1caefe15373119fd01978e8dcea564b GIT binary patch literal 134279 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 Z<)XlBa+FITVi)*_Jg<2!|Ezhy{{df{H<$nb literal 0 HcmV?d00001 From e121edde716cfd9694e2dcd624b36cdf6dbacf5a Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Thu, 29 Feb 2024 18:45:50 +0300 Subject: [PATCH 4/7] adding changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9dffe68..a21c0c0 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ In addition, the [OIDCForGitHubCI.ts](devops/OIDCForGitHubCI.ts) stack provides #### Configuration steps for GitHub Workflow 1. Pre-requisite for using SST - - Install aws cdk package + - Install AWS CDK NPM package ```bash npm i aws-cdk-lib From 718f2b594a1fbbd81dfc2e91cd9dcc2241d8517e Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Thu, 29 Feb 2024 19:12:15 +0300 Subject: [PATCH 5/7] modifying readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a21c0c0..867f3ab 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,8 @@ In addition, the [OIDCForGitHubCI.ts](devops/OIDCForGitHubCI.ts) stack provides ``` - Ensure that [Docker](https://docs.docker.com/engine/install/) is installed on your machine +2. Update [OIDCForGitHubCI.ts](./stacks/devops/OIDCForGitHubCI.ts) [line 12](./stacks/devops/OIDCForGitHubCI.ts#L12), and [line 13](./stacks/devops/OIDCForGitHubCI.ts#L13) with your organization/repository and repository name respectively. + 2. Deploy the "devops-gh" stage ```bash @@ -146,7 +148,7 @@ Go to `Settings`>`Branches`>`Add rule` 6. Enable secret scanning and push protection -Go to `Settings`>`Branches`>`Add rule` +Go to `Settings`>`Code security and analysis`> - Secret scanning: Enable - Push protection: Enable From 1267ea76bc40c204ba753d9e5f24526d384c5608 Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Thu, 29 Feb 2024 19:15:34 +0300 Subject: [PATCH 6/7] adding placeholders before PR --- .github/workflows/build-test.yaml | 2 +- .github/workflows/deploy-on-push-main.yaml | 2 +- stacks/devops/OIDCForGitHubCI.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index fbdcccc..6c49753 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -18,7 +18,7 @@ jobs: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v2 with: - role-to-assume: arn:aws:iam::118857191396:role/GitHub + role-to-assume: arn:aws:iam::AWS_ACCOUNT:role/GitHub role-duration-seconds: 3600 #adjust as needed for your build time aws-region: us-east-1 - name: Set up Docker Buildx diff --git a/.github/workflows/deploy-on-push-main.yaml b/.github/workflows/deploy-on-push-main.yaml index b19599f..119697e 100644 --- a/.github/workflows/deploy-on-push-main.yaml +++ b/.github/workflows/deploy-on-push-main.yaml @@ -19,7 +19,7 @@ jobs: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v2 with: - role-to-assume: arn:aws:iam::118857191396:role/GitHub + role-to-assume: arn:aws:iam::AWS_ACCOUNT:role/GitHub role-duration-seconds: 3600 #adjust as needed for your build time aws-region: us-east-1 - name: Set up Docker Buildx diff --git a/stacks/devops/OIDCForGitHubCI.ts b/stacks/devops/OIDCForGitHubCI.ts index c44defa..8b253fc 100644 --- a/stacks/devops/OIDCForGitHubCI.ts +++ b/stacks/devops/OIDCForGitHubCI.ts @@ -9,8 +9,8 @@ export function OIDCForGitHubCI({stack }: StackContext) { clientIds: ['sts.amazonaws.com'], }); - const organization = 'cerashdan'; // Use your GitHub organization - const repository = 'codecatalyst-sst-app'; // Use your GitHub repository + const organization = 'INSERT_GITHUB_USER_OR_ORG'; // Use your GitHub organization + const repository = 'INSERT_GITHUB_REPO_NAME'; // Use your GitHub repository new iam.Role(stack, 'GitHubActionsRole', { assumedBy: new iam.OpenIdConnectPrincipal(provider).withConditions({ From 13168cf2f01425f41899a43b5b87b480b61dccfa Mon Sep 17 00:00:00 2001 From: Abdullatif Rashdan Date: Sun, 3 Mar 2024 11:23:43 +0300 Subject: [PATCH 7/7] fix broken link in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 867f3ab..5866211 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ This template includes two sample workflow definitions under the speical [.githu Additional checks can also be enabled to protect the main branch, require PR reviews, require build to pass before merge, perform secrets scanning on the repository and prevent secrets from being pushed to GitHub. Details are in the config steps section below. -In addition, the [OIDCForGitHubCI.ts](devops/OIDCForGitHubCI.ts) stack provides an automation that deploys the OIDC identity provider that allows GitHub workflows from your repository to access your AWS account for deployment. See [SST - Going to Production](https://docs.sst.dev/going-to-production#stacks-setup) if you would like to understnad more about it. +In addition, the [OIDCForGitHubCI.ts](./stacks/devops/OIDCForGitHubCI.ts) stack provides an automation that deploys the OIDC identity provider that allows GitHub workflows from your repository to access your AWS account for deployment. See [SST - Going to Production](https://docs.sst.dev/going-to-production#stacks-setup) if you would like to understnad more about it. #### Configuration steps for GitHub Workflow