Merge pull request #9 from topoteretes/feature/improve_actions

Update the base repo
This commit is contained in:
Vasilije 2023-09-04 20:51:48 +02:00 committed by GitHub
commit be0c1e8b59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 122 additions and 37 deletions

View file

@ -48,7 +48,7 @@ jobs:
aws_account_id: ${{ env.AWS_ACCOUNT_ID_DEV }} aws_account_id: ${{ env.AWS_ACCOUNT_ID_DEV }}
should_publish: true should_publish: true
ecr_image_repo_name: promethai-dev-backend-promethai-backend-memory ecr_image_repo_name: promethai-dev-backend-promethai-backend-memory
dockerfile_location: ./level_2 dockerfile_location: level_2/.
- name: Export Docker image tag - name: Export Docker image tag
id: export-promethai-docker-tag id: export-promethai-docker-tag
run: | run: |

View file

@ -23,38 +23,38 @@ jobs:
steps: steps:
- name: Take code from repo - name: Take code from repo
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Set environment variable for stage # - name: Set environment variable for stage
id: set-env # id: set-env
run: | # run: |
if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then # if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
echo "STAGE=prd" >> $GITHUB_ENV # echo "STAGE=prd" >> $GITHUB_ENV
echo "::set-output name=stage::prd" # echo "::set-output name=stage::prd"
else # else
echo "STAGE=dev" >> $GITHUB_ENV # echo "STAGE=dev" >> $GITHUB_ENV
echo "::set-output name=stage::dev" # echo "::set-output name=stage::dev"
fi # fi
- name: Use output # - name: Use output
run: echo "The stage is ${{ steps.set-env.outputs.stage }}" # run: echo "The stage is ${{ steps.set-env.outputs.stage }}"
- name: Configure AWS credentials # - name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1 # uses: aws-actions/configure-aws-credentials@v1
with: # with:
role-to-assume: ${{ env.AWS_ROLE_DEV_CICD }} # role-to-assume: ${{ env.AWS_ROLE_DEV_CICD }}
aws-region: eu-west-1 # aws-region: eu-west-1
- name: Create Docker image and push to ECR # - name: Create Docker image and push to ECR
uses: ./.github/actions/image_builder # uses: ./.github/actions/image_builder
id: generate-promethai-docker # id: generate-promethai-docker
with: # with:
stage: prd # stage: prd
aws_account_id: ${{ env.AWS_ACCOUNT_ID_DEV }} # aws_account_id: ${{ env.AWS_ACCOUNT_ID_DEV }}
should_publish: true # should_publish: true
ecr_image_repo_name: promethai-prd-backend-promethai-backend-memory # ecr_image_repo_name: promethai-prd-backend-promethai-backend-memory
dockerfile_location: ./level_2 # dockerfile_location: ./level_2
- name: Export Docker image tag # - name: Export Docker image tag
id: export-promethai-docker-tag # id: export-promethai-docker-tag
run: | # run: |
export DOCKER_TAG=$(cat /tmp/.DOCKER_IMAGE_VERSION) # export DOCKER_TAG=$(cat /tmp/.DOCKER_IMAGE_VERSION)
echo "Docker tag is: $DOCKER_TAG" # echo "Docker tag is: $DOCKER_TAG"
echo "promethai_docker_tag_backend=$DOCKER_TAG" >> $GITHUB_OUTPUT # echo "promethai_docker_tag_backend=$DOCKER_TAG" >> $GITHUB_OUTPUT
# - name: Create Tag and Release # - name: Create Tag and Release
# runs-on: ubuntu-latest # runs-on: ubuntu-latest
@ -78,8 +78,8 @@ jobs:
# with: # with:
# tag_name: ${{ steps.bump_version_and_push_tag.outputs.tag }} # tag_name: ${{ steps.bump_version_and_push_tag.outputs.tag }}
# release_name: Release ${{ steps.bump_version_and_push_tag.outputs.tag }} # release_name: Release ${{ steps.bump_version_and_push_tag.outputs.tag }}
outputs: # outputs:
promethai_docker_tag_backend: ${{ steps.export-promethai-docker-tag.outputs.promethai_docker_tag_backend }} # promethai_docker_tag_backend: ${{ steps.export-promethai-docker-tag.outputs.promethai_docker_tag_backend }}
# apply_tf: # apply_tf:
# name: Trigger terraform apply workflow # name: Trigger terraform apply workflow

BIN
assets/topoteretes_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -1,3 +1,9 @@
set -euo pipefail
AWS_REGION=${region:-eu-west-1}
AWS_DEPLOYMENT_ACCOUNT=${account:-463722570299}
AWS_REPOSITORY=${repo:-"${AWS_DEPLOYMENT_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com"}
STAGE=${stage:-"dev"} STAGE=${stage:-"dev"}
SHA_SHORT="$(git rev-parse --short HEAD)" SHA_SHORT="$(git rev-parse --short HEAD)"
CUR_DATE="$(date +%Y%m%d%H%M%S)" CUR_DATE="$(date +%Y%m%d%H%M%S)"
@ -6,7 +12,7 @@ IMAGE_NAME=${image_name:-promethai-${STAGE}-promethai-backend-memory}
REPO_NAME="${AWS_REPOSITORY}/${IMAGE_NAME}" REPO_NAME="${AWS_REPOSITORY}/${IMAGE_NAME}"
FULL_IMAGE_NAME="${REPO_NAME}:${VERSION}" FULL_IMAGE_NAME="${REPO_NAME}:${VERSION}"
APP_DIR=${app_dir:-"./level_2"} # Updated this line APP_DIR=${app_dir:-"level_2/"} # Updated this line
PUBLISH=${publish:-false} PUBLISH=${publish:-false}

View file

@ -23,7 +23,11 @@ load_dotenv()
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")
app = FastAPI(debug=True) app = FastAPI(debug=True)
from auth.cognito.JWTBearer import JWTBearer
from auth.auth import jwks
auth = JWTBearer(jwks)
from fastapi import Depends
class ImageResponse(BaseModel): class ImageResponse(BaseModel):
success: bool success: bool
message: str message: str

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
export ENVIRONMENT export ENVIRONMENT
#python fetch_secret.py python fetch_secret.py
# Start Gunicorn # Start Gunicorn
gunicorn -w 2 -k uvicorn.workers.UvicornWorker -t 120 --bind=0.0.0.0:8000 --bind=0.0.0.0:443 --log-level debug api:app gunicorn -w 2 -k uvicorn.workers.UvicornWorker -t 120 --bind=0.0.0.0:8000 --bind=0.0.0.0:443 --log-level debug api:app

75
level_2/fetch_secret.py Normal file
View file

@ -0,0 +1,75 @@
import os
from dotenv import load_dotenv
from api import start_api_server
# API_ENABLED = os.environ.get("API_ENABLED", "False").lower() == "true"
import boto3
environment = os.getenv("AWS_ENV", "dev")
def fetch_secret(secret_name, region_name, env_file_path):
session = boto3.session.Session()
client = session.client(service_name="secretsmanager", region_name=region_name)
try:
response = client.get_secret_value(SecretId=secret_name)
except Exception as e:
print(f"Error retrieving secret: {e}")
return None
if "SecretString" in response:
secret = response["SecretString"]
else:
secret = response["SecretBinary"]
with open(env_file_path, "w") as env_file:
env_file.write(secret)
if os.path.exists(env_file_path):
print(f"The .env file is located at: {os.path.abspath(env_file_path)}")
load_dotenv()
PINECONE_API_KEY = os.getenv("PINECONE_API_KEY", "")
print("LEN OF PINECONE_API_KEY", len(PINECONE_API_KEY))
else:
print("The .env file was not found.")
return "Success in loading env files"
env_file = ".env"
if os.path.exists(env_file):
# Load default environment variables (.env)
load_dotenv()
print("Talk to the AI!")
else:
secrets = fetch_secret(
f"promethai-{environment}-backend-secretso-promethaijs-dotenv",
"eu-west-1",
".env",
)
if secrets:
print(secrets)
load_dotenv()
# Check if "dev" is present in the task ARN
if "dev" in environment:
# Fetch the secret
secrets = fetch_secret(
f"promethai-dev-backend-secretso-promethaijs-dotenv",
"eu-west-1",
".env",
)
load_dotenv()
elif "prd" in environment:
# Fetch the secret
secrets = fetch_secret(
f"promethai-prd-backend-secretso-promethaijs-dotenv",
"eu-west-1",
".env",
)
load_dotenv()