-
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.
* add health check to cmd * ignore .pem * add server definition * update deploy to push image on main update * add task update steps * hack my branch * remove buildx * updated dockerfile * add back dumb port * need curl smh * hopefully fix the task * remove unneeded * fix cluster definition * update limits * scale down/up during deploy? * update memory...zzz * tidy up action yaml
- Loading branch information
Showing
4 changed files
with
161 additions
and
1 deletion.
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,82 @@ | ||
name: CD | ||
|
||
on: | ||
push: | ||
branches: ["main"] | ||
|
||
permissions: | ||
id-token: write # This is required for requesting the JWT | ||
contents: read # This is required for actions/checkout | ||
env: | ||
AWS_REGION: us-east-2 # set this to your preferred AWS region, e.g. us-west-1 | ||
ECR_REPOSITORY: spacejamprod/server # set this to your Amazon ECR repository name | ||
ECS_SERVICE: spacejam # set this to your Amazon ECS service name | ||
ECS_CLUSTER: SpacejamProd # set this to your Amazon ECS cluster name | ||
ECS_TASK_DEFINITION: aws/spacejam-server-cli-input.json # set this to the path to your Amazon ECS task definition | ||
# file, e.g. .aws/task-definition.json | ||
CONTAINER_NAME: spacejam-server # set this to the name of the container in the | ||
|
||
jobs: | ||
BuildAndDeploy: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v4 # More information on this action can be found below in the 'AWS Credentials' section | ||
with: | ||
role-to-assume: arn:aws:iam::585008081433:role/GHActionsRole | ||
aws-region: us-east-2 | ||
|
||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v2 | ||
|
||
- name: Set short sha | ||
id: sha_short | ||
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | ||
|
||
- name: Build, tag, and push image to Amazon ECR | ||
id: build-image | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
IMAGE_TAG: ${{ steps.sha_short.outputs.sha_short }} | ||
run: | | ||
# Build a docker container and | ||
# push it to ECR so that it can | ||
# be deployed to ECS. | ||
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . | ||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | ||
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT | ||
- name: Scale Server Down | ||
uses: zachelrath/[email protected] | ||
with: | ||
service: ${{ env.ECS_SERVICE }} | ||
cluster: ${{ env.ECS_CLUSTER }} | ||
desired-count: 0 | ||
|
||
- name: Fill in the new image ID in the Amazon ECS task definition | ||
id: task-def | ||
uses: aws-actions/amazon-ecs-render-task-definition@c804dfbdd57f713b6c079302a4c01db7017a36fc | ||
with: | ||
task-definition: ${{ env.ECS_TASK_DEFINITION }} | ||
container-name: ${{ env.CONTAINER_NAME }} | ||
image: ${{ steps.build-image.outputs.image }} | ||
|
||
- name: Deploy Amazon ECS task definition | ||
uses: aws-actions/amazon-ecs-deploy-task-definition@df9643053eda01f169e64a0e60233aacca83799a | ||
with: | ||
task-definition: ${{ steps.task-def.outputs.task-definition }} | ||
service: ${{ env.ECS_SERVICE }} | ||
cluster: ${{ env.ECS_CLUSTER }} | ||
wait-for-service-stability: true | ||
|
||
- name: Scale Server Up | ||
if: always() | ||
uses: zachelrath/[email protected] | ||
with: | ||
service: ${{ env.ECS_SERVICE }} | ||
cluster: ${{ env.ECS_CLUSTER }} | ||
desired-count: 1 |
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 |
---|---|---|
@@ -1,6 +1,7 @@ | ||
#project | ||
main.ipynb | ||
.vscode/* | ||
*.pem | ||
|
||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
|
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
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,75 @@ | ||
{ | ||
"containerDefinitions": [ | ||
{ | ||
"name": "spacejam-server", | ||
"image": "585008081433.dkr.ecr.us-east-2.amazonaws.com/spacejamprod/server", | ||
"cpu": 502, | ||
"memory": 922, | ||
"memoryReservation": 502, | ||
"portMappings": [ | ||
{ | ||
"containerPort": 80, | ||
"hostPort": 80, | ||
"protocol": "tcp", | ||
"name": "http", | ||
"appProtocol": "http" | ||
}, | ||
{ | ||
"containerPort": 5006, | ||
"hostPort": 5006, | ||
"protocol": "tcp", | ||
"name": "panel", | ||
"appProtocol": "http" | ||
}, | ||
{ | ||
"containerPort": 443, | ||
"hostPort": 443, | ||
"protocol": "tcp", | ||
"name": "https", | ||
"appProtocol": "http" | ||
} | ||
], | ||
"essential": true, | ||
"environment": [], | ||
"mountPoints": [], | ||
"volumesFrom": [], | ||
"logConfiguration": { | ||
"logDriver": "awslogs", | ||
"options": { | ||
"awslogs-group": "/ecs/spacejam-server", | ||
"mode": "non-blocking", | ||
"awslogs-create-group": "true", | ||
"max-buffer-size": "25m", | ||
"awslogs-region": "us-east-2", | ||
"awslogs-stream-prefix": "ecs" | ||
}, | ||
"secretOptions": [] | ||
}, | ||
"healthCheck": { | ||
"command": [ | ||
"CMD-SHELL", | ||
"curl -f 0.0.0.0:5006/liveness || exit 1" | ||
], | ||
"interval": 30, | ||
"timeout": 5, | ||
"retries": 3, | ||
"startPeriod": 10 | ||
}, | ||
"systemControls": [] | ||
} | ||
], | ||
"family": "spacejam-server", | ||
"executionRoleArn": "arn:aws:iam::585008081433:role/ecsTaskExecutionRole", | ||
"networkMode": "bridge", | ||
"volumes": [], | ||
"placementConstraints": [], | ||
"runtimePlatform": { | ||
"cpuArchitecture": "X86_64", | ||
"operatingSystemFamily": "LINUX" | ||
}, | ||
"requiresCompatibilities": [ | ||
"EC2" | ||
], | ||
"cpu": "1024", | ||
"memory": "952" | ||
} |