-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
renegade-dealer: Add healthcheck endpoint and deployment setup
- Loading branch information
Showing
4 changed files
with
87 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
FROM --platform=arm64 rust:latest AS chef | ||
|
||
WORKDIR /build | ||
COPY ./rust-toolchain ./rust-toolchain | ||
RUN rustup install $(cat rust-toolchain) | ||
|
||
RUN apt-get update && apt-get install -y libssl-dev | ||
|
||
# Install chef and generate a recipe | ||
RUN cargo install cargo-chef | ||
|
||
COPY ./Cargo.toml ./Cargo.toml | ||
COPY ./Cargo.lock ./Cargo.lock | ||
COPY ./renegade-dealer ./renegade-dealer | ||
COPY ./renegade-dealer-api ./renegade-dealer-api | ||
RUN cargo chef prepare --recipe-path recipe.json | ||
|
||
# Disable compiler warnings and enable backtraces for panic | ||
ENV RUSTFLAGS=-Awarnings | ||
ENV RUST_BACKTRACE=1 | ||
|
||
# Build only the dependencies to cache them in this layer | ||
RUN cargo chef cook --release --recipe-path recipe.json | ||
|
||
# Copy back in the full sources and build the tests | ||
WORKDIR /build | ||
COPY ./Cargo.lock ./Cargo.lock | ||
COPY ./renegade-dealer ./renegade-dealer | ||
COPY ./renegade-dealer-api ./renegade-dealer-api | ||
|
||
WORKDIR /build/renegade-dealer | ||
RUN cargo build --release --quiet --all-features | ||
|
||
ENTRYPOINT ["cargo", "run", "--release", "--all-features"] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#!/bin/sh | ||
REGION=ca-central-1 | ||
ENVIRONMENT=${1:-staging} | ||
ECR_URL=377928551571.dkr.ecr.ca-central-1.amazonaws.com/renegade-dealer-$ENVIRONMENT | ||
|
||
docker build -t dealer:latest . | ||
aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ECR_URL | ||
|
||
docker tag dealer:latest $ECR_URL:latest | ||
docker push $ECR_URL:latest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#!/bin/sh | ||
REGION=ca-central-1 | ||
ENVIRONMENT=${1:-staging} | ||
CLUSTER_NAME=$ENVIRONMENT-renegade-dealer-cluster | ||
SERVICE_NAME=$ENVIRONMENT-renegade-dealer-service | ||
TASK_FAMILY=$ENVIRONMENT-renegade-dealer-task-def | ||
ECR_URL=377928551571.dkr.ecr.ca-central-1.amazonaws.com/renegade-dealer-$ENVIRONMENT | ||
|
||
# Fetch the latest image URI from ECR | ||
IMAGE_URI=$(aws ecr describe-images --repository-name renegade-dealer-$ENVIRONMENT --region $REGION --query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]' --output text) | ||
FULL_IMAGE_URI="$ECR_URL:$IMAGE_URI" | ||
echo "Using image URI: $FULL_IMAGE_URI" | ||
|
||
# Fetch the existing definition of the task and create a new revision with the updated URI | ||
TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition $TASK_FAMILY --region $REGION --query 'taskDefinition') | ||
NEW_TASK_DEF=$(echo $TASK_DEFINITION | \ | ||
jq --arg IMAGE_URI "$FULL_IMAGE_URI" '.containerDefinitions[0].image = $IMAGE_URI' | \ | ||
jq 'del(.taskDefinitionArn)' | \ | ||
jq 'del(.revision)' | \ | ||
jq 'del(.status)' | \ | ||
jq 'del(.requiresAttributes)' | \ | ||
jq 'del(.compatibilities)' | \ | ||
jq 'del(.registeredAt)' | \ | ||
jq 'del(.registeredBy)' | \ | ||
jq -c) | ||
|
||
# Register the new task definition | ||
NEW_TASK_INFO=$(aws ecs register-task-definition --cli-input-json "$NEW_TASK_DEF" --region $REGION) | ||
NEW_REVISION=$(echo $NEW_TASK_INFO | jq -r '.taskDefinition.revision') | ||
echo "Created new task revision: $NEW_REVISION" | ||
|
||
# Update the ECS cluster to the new revision | ||
aws ecs update-service --cluster $CLUSTER_NAME --service $SERVICE_NAME --task-definition $TASK_FAMILY:$NEW_REVISION --region $REGION >/dev/null 2>&1 | ||
echo "ECS cluster updated to new revision" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters