Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update for mono repo #21

Merged
merged 28 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b3031fc
Update github actions to support mono-repo
amarouane-ABDELHAK Oct 24, 2023
a76cf2c
Remove project prefix
amarouane-ABDELHAK Oct 24, 2023
23c30ed
Get the authstack name
amarouane-ABDELHAK Oct 25, 2023
44865c9
Get the authstack name
amarouane-ABDELHAK Oct 25, 2023
54cf23b
Get the authstack name
amarouane-ABDELHAK Oct 25, 2023
59cb757
Get the authstack name
amarouane-ABDELHAK Oct 25, 2023
07581fd
Get the authstack name
amarouane-ABDELHAK Oct 25, 2023
2384db7
Try output stackname
amarouane-ABDELHAK Oct 25, 2023
f139e97
Try output stackname
amarouane-ABDELHAK Oct 25, 2023
46f1465
Try output stackname
amarouane-ABDELHAK Oct 25, 2023
ba5d28e
Try output stackname
amarouane-ABDELHAK Oct 25, 2023
a4617c3
Try output stackname
amarouane-ABDELHAK Oct 25, 2023
f3c33a6
Try output stackname
amarouane-ABDELHAK Oct 25, 2023
236f892
Add cloudformation outputs
amarouane-ABDELHAK Oct 26, 2023
2b32e2d
Add cloudformation outputs of veda auth
amarouane-ABDELHAK Oct 26, 2023
6718928
add client secret output
amarouane-ABDELHAK Oct 27, 2023
a5ae4c0
Move output to main module
amarouane-ABDELHAK Oct 30, 2023
ee5d75b
Merge branch 'main' into update-for-mono-repo
slesaad Feb 21, 2024
73f575d
Fix CfnOutput source
slesaad Feb 21, 2024
e2364cf
🤦
slesaad Feb 21, 2024
a016075
Add newline
slesaad Feb 21, 2024
393d670
Update action versions
slesaad Feb 23, 2024
7848094
Remove client secret cdk output
slesaad Feb 26, 2024
f46d058
Rename ghgc to veda
slesaad Feb 26, 2024
4f2ab4f
Remove accidental change in README
slesaad Feb 26, 2024
ad95748
fix: update aws-cdk=lib and aws_cdk.aws_cognito_identitypool_alpha ve…
Mar 4, 2024
f6adfaa
fix: update aws_cdk.aws_cognito_identitypool_alpha to use minimum ver…
Mar 4, 2024
73e108d
Merge pull request #22 from NASA-IMPACT/fix/upgrade-aws-cdk-lib-versi…
botanical Mar 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions .github/actions/cdk-deploy/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ runs:
using: "composite"
steps:
- name: Install node and related deps
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 17.3.0
node-version: 20

- uses: actions/cache@v3
with:
Expand All @@ -30,7 +30,7 @@ runs:
run: npm install -g aws-cdk@2

- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "pip"
Expand All @@ -49,7 +49,13 @@ runs:
working-directory: ${{ inputs.dir }}
env:
AWS_DEFAULT_REGION: us-west-2
run: ./scripts/get-env.sh ${{ inputs.env_aws_secret_name }}
run: |
if [[ -z "${{ inputs.script_path }}" ]]; then
./scripts/sync-env.sh ${{ inputs.env_aws_secret_name }}
else
python ${{ inputs.script_path }} --secret-id ${{ inputs.env_aws_secret_name }}
fi


- name: Deploy
id: deploy_auth_stack
Expand Down
47 changes: 9 additions & 38 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ permissions:
on:
push:
branches:
- make-mcp-ready
- main
- dev
- production

jobs:
define-environment:
Expand All @@ -25,7 +27,6 @@ jobs:
echo "secret_name=veda-auth-dev" >> $GITHUB_OUTPUT
elif [ "${{ github.ref }}" = "refs/heads/production" ]; then
echo "env_name=production" >> $GITHUB_OUTPUT
echo "secret_name=veda-auth-production" >> $GITHUB_OUTPUT
fi
- name: Print the environment
run: echo "The environment is ${{ steps.define_environment.outputs.env_name }}"
Expand All @@ -51,41 +52,11 @@ jobs:
- name: Configure awscli
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
role-to-assume: ${{ secrets.DEPLOYMENT_ROLE_ARN }}
role-session-name: "ghgc-auth-github-${{ needs.define-environment.outputs.env_name }}-deployment"
slesaad marked this conversation as resolved.
Show resolved Hide resolved
aws-region: "us-west-2"

- name: Install node and related deps
uses: actions/setup-node@v3
- name: Run deployment
uses: "./.github/actions/cdk-deploy"
with:
node-version: 17.3.0

- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}

- name: Install AWS CDK
shell: bash
run: npm install -g aws-cdk@2

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
cache: "pip"
cache-dependency-path: requirements.txt

- name: Install python dependencies
run: |
pip install \
-r requirements.txt \

- name: Get environment configuration from aws secrets
run: ./scripts/get-env.sh ${{ needs.define-environment.outputs.secret_name }}

- name: Deploy
env:
AWS_DEFAULT_REGION: us-west-2
CDK_DEFAULT_REGION: us-west-2
run: cdk deploy --all --require-approval never
env_aws_secret_name: ${{ secrets.ENV_AWS_SECRET_NAME }}
19 changes: 19 additions & 0 deletions .github/workflows/gitflow-enforcer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Gitflow enforcer 🚀

on:
pull_request:
branches:
- main
- dev
- production
types: [ opened, reopened, edited, synchronize ]

jobs:
gitflow-enforcer:
runs-on: ubuntu-latest
steps:
- name: Check branch
if: github.base_ref == 'main' && github.head_ref != 'dev' || github.base_ref == 'production' && github.head_ref != 'main'
run: |
echo "ERROR: You can only merge to main from dev and to production from main"
exit 1
12 changes: 9 additions & 3 deletions app.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
import subprocess

from aws_cdk import App, Tags, DefaultStackSynthesizer
from aws_cdk import App, CfnOutput, Tags, DefaultStackSynthesizer

from infra.stack import AuthStack, BucketPermissions

Expand All @@ -11,7 +11,7 @@

stack = AuthStack(
app,
f"veda-auth-stack-{app_settings.stage}",
f"{app_settings.app_name}-{app_settings.stage}",
app_settings,
synthesizer=DefaultStackSynthesizer(
qualifier=app_settings.bootstrap_qualifier
Expand Down Expand Up @@ -98,7 +98,13 @@
)

# Programmatic Clients
stack.add_programmatic_client("veda-sdk")
client = stack.add_programmatic_client(f"{app_settings.app_name}-{app_settings.stage}-veda-sdk")
CfnOutput(
stack,
"client_id",
export_name=f"{app_settings.app_name}-{app_settings.stage}-client-id",
value=client.user_pool_client_id,
)

# Frontend Clients
# stack.add_frontend_client('veda-dashboard')
Expand Down
5 changes: 5 additions & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@


class Config(pydantic.BaseSettings):
# App name and deployment stage
app_name: Optional[str] = pydantic.Field(
"veda-auth-stack",
description="Optional app name used to name stack and resources",
)
stage: str = pydantic.Field(
description=" ".join(
[
Expand Down
13 changes: 9 additions & 4 deletions infra/stack.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

from config import Config


class BucketPermissions(str, Enum):
read_only = "r"
read_write = "wr"
Expand Down Expand Up @@ -44,9 +43,13 @@ def __init__(
else:
self.userpool = self._create_userpool()
self.domain = self._add_domain(self.userpool)

stack_name = Stack.of(self).stack_name

CfnOutput(
self,
"userpool_id",
export_name=f"{stack_name}-userpool-id",
value=self.userpool.user_pool_id,
)
if app_settings.cognito_groups or app_settings.data_managers_group:
self._group_precedence = 0

Expand Down Expand Up @@ -224,10 +227,12 @@ def _create_secret(
secret_string_value=SecretValue.unsafe_plain_text(json.dumps(secret_dict)),
)

# We need to extract the secret name to be used for ingestor stac
# We expect the exported name to be of the format "<stackname>-<variablename>"
CfnOutput(
self,
f"{service_id}-secret-output",
export_name=f"{stack_name}-{service_id}-secret",
export_name=f"{stack_name}-{service_id}-secret" if stack_name not in service_id else f"{stack_name}-client-secret",
value=secret.secret_name,
)
CfnOutput(
Expand Down
Loading