diff --git a/.github/workflows/build-wavefront-floconsole-develop.yaml b/.github/workflows/build-wavefront-floconsole-develop.yaml index 15bef39f..318e981d 100644 --- a/.github/workflows/build-wavefront-floconsole-develop.yaml +++ b/.github/workflows/build-wavefront-floconsole-develop.yaml @@ -9,6 +9,10 @@ env: GAR_LOCATION: asia-south1-docker.pkg.dev/aesy-330511/root-hub IMAGE_NAME: wavefront-floconsole + AWS_REGION: ap-south-1 + ECR_REGISTRY: 025066241490.dkr.ecr.ap-south-1.amazonaws.com + ECR_REPOSITORY: rootflo/wavefront-floconsole + jobs: build-push-artifact: runs-on: ubuntu-latest @@ -60,7 +64,25 @@ jobs: docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} docker push ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + # Configure AWS credentials and push to ECR + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Tag and push image to Amazon ECR + run: | + docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + docker push ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + - name: Cleanup Docker images run: | docker rmi rootflo:${{ env.IMAGE_TAG }} || true docker rmi ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} || true + docker rmi ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} || true diff --git a/.github/workflows/build-wavefront-floware-develop.yaml b/.github/workflows/build-wavefront-floware-develop.yaml index 7527e75e..f6af2b11 100644 --- a/.github/workflows/build-wavefront-floware-develop.yaml +++ b/.github/workflows/build-wavefront-floware-develop.yaml @@ -9,6 +9,10 @@ env: GAR_LOCATION: asia-south1-docker.pkg.dev/aesy-330511/root-hub IMAGE_NAME: wavefront-floware + AWS_REGION: ap-south-1 + ECR_REGISTRY: 025066241490.dkr.ecr.ap-south-1.amazonaws.com + ECR_REPOSITORY: rootflo/wavefront-floware + jobs: build-push-artifact: runs-on: ubuntu-latest @@ -60,7 +64,25 @@ jobs: docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} docker push ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + # Configure AWS credentials and push to ECR + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Tag and push image to Amazon ECR + run: | + docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + docker push ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + - name: Cleanup Docker images run: | docker rmi rootflo:${{ env.IMAGE_TAG }} || true docker rmi ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} || true + docker rmi ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} || true diff --git a/.github/workflows/build-wavefront-web-develop.yaml b/.github/workflows/build-wavefront-web-develop.yaml index 29e0c56f..44117112 100644 --- a/.github/workflows/build-wavefront-web-develop.yaml +++ b/.github/workflows/build-wavefront-web-develop.yaml @@ -9,6 +9,10 @@ env: GAR_LOCATION: asia-south1-docker.pkg.dev/aesy-330511/root-hub IMAGE_NAME: wavefront-web + AWS_REGION: ap-south-1 + ECR_REGISTRY: 025066241490.dkr.ecr.ap-south-1.amazonaws.com + ECR_REPOSITORY: rootflo/wavefront-web + jobs: build-push-artifact: runs-on: ubuntu-latest @@ -60,7 +64,25 @@ jobs: docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} docker push ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + # Configure AWS credentials and push to ECR + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Tag and push image to Amazon ECR + run: | + docker tag rootflo:${{ env.IMAGE_TAG }} ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + docker push ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} + - name: Cleanup Docker images run: | docker rmi rootflo:${{ env.IMAGE_TAG }} || true docker rmi ${{ env.GAR_LOCATION }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} || true + docker rmi ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} || true diff --git a/wavefront/server/docker/floconsole.Dockerfile b/wavefront/server/docker/floconsole.Dockerfile index abf83d5b..a9548a0f 100644 --- a/wavefront/server/docker/floconsole.Dockerfile +++ b/wavefront/server/docker/floconsole.Dockerfile @@ -17,8 +17,9 @@ COPY wavefront/server/packages/flo_cloud /app/packages/flo_cloud COPY wavefront/server/apps/floconsole /app/apps/floconsole -RUN uv sync --package floconsole --frozen --no-dev +COPY wavefront/server/scripts/console-server-init.sh /app/scripts/console-server-init.sh +RUN chmod +x /app/scripts/console-server-init.sh -WORKDIR /app/apps/floconsole/floconsole +RUN uv sync --package floconsole --frozen --no-dev -CMD ["uv", "run", "server.py"] +ENTRYPOINT ["/app/scripts/console-server-init.sh"] diff --git a/wavefront/server/scripts/console-server-init.sh b/wavefront/server/scripts/console-server-init.sh new file mode 100644 index 00000000..8abd96e7 --- /dev/null +++ b/wavefront/server/scripts/console-server-init.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set -e + +export PATH="/app/.venv/bin:$PATH" + +echo "Creating Console database if not exists..." +python3 -c " +import psycopg2, os + +host = os.environ['CONSOLE_DB_HOST'] +user = os.environ['CONSOLE_DB_USERNAME'] +password = os.environ['CONSOLE_DB_PASSWORD'] +dbname = os.environ['CONSOLE_DB_NAME'] + +conn = psycopg2.connect(host=host, user=user, password=password, dbname='postgres') +conn.autocommit = True +cur = conn.cursor() +cur.execute(\"SELECT 1 FROM pg_database WHERE datname = %s\", (dbname,)) + +if not cur.fetchone(): + cur.execute('CREATE DATABASE \"' + dbname.replace('\"', '\"\"') + '\"') + print('Database created') +else: + print('Database already exists, skipping') +conn.close() +" + +cd /app/apps/floconsole/floconsole +exec uv run server.py