forked from conductor-oss/conductor
-
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.
- Loading branch information
1 parent
7ed0010
commit c6db158
Showing
5 changed files
with
139 additions
and
65 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,52 @@ | ||
name: 'Deploy to ECS' | ||
description: 'Deploy new image to given ECS service by updating task definition file' | ||
inputs: | ||
aws-role: | ||
required: true | ||
description: "AWS ROLE" | ||
aws-region: | ||
required: true | ||
description: "AWS REGION" | ||
task-definition: | ||
required: true | ||
description: "TASK DEFINITION" | ||
container-name: | ||
required: true | ||
description: "CONTAINER NAME" | ||
ecs-service: | ||
required: true | ||
description: "ECS SERVICE" | ||
ecs-cluster: | ||
required: true | ||
description: "ECS CLUSTER" | ||
image: | ||
required: true | ||
description: "APP IMAGE" | ||
runs: | ||
using: "composite" | ||
steps: | ||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ inputs.aws-role }} | ||
aws-region: ${{ inputs.aws-region }} | ||
- name: Download task definition | ||
run: | | ||
aws ecs describe-task-definition --task-definition ${{ inputs.task-definition }} \ | ||
--query taskDefinition > task-definition.json | ||
shell: bash | ||
- name: Fill in the new image ID in the Amazon ECS task definition | ||
id: task-def | ||
uses: aws-actions/amazon-ecs-render-task-definition@v1 | ||
with: | ||
task-definition: task-definition.json | ||
container-name: ${{ inputs.container-name }} | ||
image: ${{ inputs.image }} | ||
|
||
- name: Deploy Amazon ECS task definition | ||
uses: aws-actions/amazon-ecs-deploy-task-definition@v1 | ||
with: | ||
task-definition: ${{ steps.task-def.outputs.task-definition }} | ||
service: ${{ inputs.ecs-service }} | ||
cluster: ${{ inputs.ecs-cluster }} | ||
wait-for-service-stability: true |
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 |
---|---|---|
|
@@ -16,7 +16,7 @@ on: | |
description: Provide tag (Eg:v3.14.0) | ||
|
||
env: | ||
SERVICE_NAME: conductor-server | ||
SERVICE_NAME: conductor-server-test | ||
AWS_REGION: "ap-south-1" | ||
|
||
jobs: | ||
|
@@ -30,8 +30,6 @@ jobs: | |
PROJECT_PREFIX: ${{ steps.vars.outputs.PROJECT_PREFIX }} | ||
ECS_CLUSTER: ${{ steps.set_env.outputs.ECS_CLUSTER }} | ||
ECR_REPOSITORY: ${{ steps.set_env.outputs.ECR_REPOSITORY }} | ||
ECR_REPOSITORY_UI: ${{ steps.set_env.outputs.ECR_REPOSITORY_UI }} | ||
ENVIRONMENT_BUCKET: ${{ steps.set_env.outputs.ENVIRONMENT_BUCKET }} | ||
SLACK_WEBHOOK_URL: ${{ steps.vars.outputs.SLACK_WEBHOOK_URL }} | ||
|
||
steps: | ||
|
@@ -63,11 +61,13 @@ jobs: | |
then | ||
echo "AWS_ROLE=PRD_AWS_ROLE" >> $GITHUB_OUTPUT | ||
echo "PROJECT_PREFIX=sirn-prd-mb" >> $GITHUB_OUTPUT | ||
echo "DEFAULT_CONF=default-prd.conf" >> $GITHUB_OUTPUT | ||
echo "SLACK_WEBHOOK_URL=PRD_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT | ||
elif [ $ENV == 'dev' ] | ||
then | ||
echo "AWS_ROLE=DEV_AWS_ROLE" >> $GITHUB_OUTPUT | ||
echo "PROJECT_PREFIX=sirn-dev-mb" >> $GITHUB_OUTPUT | ||
echo "DEFAULT_CONF=default-dev.conf" >> $GITHUB_OUTPUT | ||
echo "SLACK_WEBHOOK_URL=DEV_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT | ||
else | ||
echo "Branch not configured!" | ||
|
@@ -80,14 +80,13 @@ jobs: | |
run: | | ||
PROJECT_PREFIX=${{ steps.vars.outputs.PROJECT_PREFIX }} | ||
echo "ECS_CLUSTER=$PROJECT_PREFIX-ecs-cluster" >> $GITHUB_OUTPUT | ||
echo "ECR_REPOSITORY=$PROJECT_PREFIX-conductor-server" >> $GITHUB_OUTPUT | ||
echo "ECR_REPOSITORY_UI=$PROJECT_PREFIX-conductor-ui" >> $GITHUB_OUTPUT | ||
echo "ECR_REPOSITORY=$PROJECT_PREFIX-ecr-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "ENVIRONMENT_BUCKET=$PROJECT_PREFIX-s3-environment" >> $GITHUB_OUTPUT | ||
echo ":seedling: Branch:${GITHUB_REF#refs/heads/}" >> $GITHUB_STEP_SUMMARY | ||
# Building and Pushing Conductor Server Image to ECR | ||
build-push-image: | ||
name: Build and Push Server Image | ||
# Deploy Conductor Server Image to ECS | ||
deploy-server-image: | ||
name: Deploy Server Image | ||
runs-on: 'ubuntu-latest' | ||
timeout-minutes: 20 | ||
permissions: | ||
|
@@ -101,53 +100,74 @@ jobs: | |
PROJECT_PREFIX: ${{needs.prepare-env.outputs.PROJECT_PREFIX}} | ||
ECR_REPOSITORY: ${{needs.prepare-env.outputs.ECR_REPOSITORY}} | ||
ENVIRONMENT_BUCKET: ${{needs.prepare-env.outputs.ENVIRONMENT_BUCKET}} | ||
DEFAULT_CONF: ${{needs.prepare-env.outputs.DEFAULT_CONF}} | ||
IMAGE_TAG: ${{ github.event.inputs.tag }} | ||
outputs: | ||
ECR_REPO: ${{ steps.build.outputs.ECR_REPO }} | ||
APP_IMAGE: ${{ steps.image.outputs.APP_IMAGE }} | ||
|
||
steps: | ||
- name: "Checkout repository" | ||
uses: actions/checkout@v4 | ||
- | ||
# Add support for more platforms with QEMU (optional) | ||
# https://github.com/docker/setup-qemu-action | ||
name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
- | ||
name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Checkout code from action | ||
uses: actions/checkout@v2 | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ secrets[env.AWS_ROLE] }} | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Download S3 file | ||
run: | | ||
aws s3 cp s3://${PROJECT_PREFIX}-s3-environment/conductor-server/conductor-server.properties ./docker/server/config/conductor-server.properties | ||
|
||
- name: Amazon ECR Login | ||
id: login-ecr | ||
uses: aws-actions/[email protected] | ||
|
||
- name: Build and push to Amazon ECR | ||
id: build | ||
uses: docker/[email protected] | ||
- name: Configure env | ||
id: configure_env | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
with: | ||
context: . | ||
file: ./Dockerfile | ||
push: true | ||
platforms: linux/amd64 | ||
tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} | ||
run: | | ||
echo "TASK_DEFINITION=$PROJECT_PREFIX-td-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "CONTAINER_NAME=$PROJECT_PREFIX-cntr-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "APP_IMAGE=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}" >> $GITHUB_OUTPUT | ||
- name: Get latest task definition | ||
shell: bash | ||
run: | | ||
aws ecs describe-task-definition --task-definition ${{ steps.configure_env.outputs.TASK_DEFINITION }} \ | ||
--query taskDefinition > task-definition.json | ||
- name: image name | ||
id: image | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
- name: Fill in the new image ID in the Amazon ECS task definition | ||
id: task-def | ||
uses: aws-actions/amazon-ecs-render-task-definition@v1 | ||
with: | ||
task-definition: task-definition.json | ||
container-name: ${{ steps.configure_env.outputs.CONTAINER_NAME }} | ||
image: ${{ steps.configure_env.outputs.APP_IMAGE }} | ||
|
||
- name: Remove unwanted fields from task definition | ||
id: task_def_cleanup | ||
shell: bash | ||
run: | | ||
echo "APP_IMAGE=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}" >> $GITHUB_OUTPUT | ||
jq 'del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .compatibilities, .registeredAt, .registeredBy)' ${{ steps.task-def.outputs.task-definition }} > updated-task-definition.json | ||
- name: Register ECS task definition | ||
shell: bash | ||
id: task-def-register | ||
run: | | ||
revision=$(aws ecs register-task-definition \ | ||
--region ${{ env.AWS_REGION }} \ | ||
--family ${{ steps.configure_env.outputs.TASK_DEFINITION }} \ | ||
--cli-input-json file://updated-task-definition.json \ | ||
--query taskDefinition.revision) | ||
echo "revision=$revision" >> $GITHUB_OUTPUT | ||
- name: Deploy backend | ||
id: deploy_backend | ||
uses: ./.github/actions/deploy-ecs | ||
with: | ||
aws-region : ${{ env.AWS_REGION }} | ||
aws-role: ${{ secrets[env.AWS_ROLE] }} | ||
task-definition: ${{ steps.configure_env.outputs.TASK_DEFINITION }} | ||
container-name: ${{ steps.configure_env.outputs.CONTAINER_NAME }} | ||
ecs-service: ${{ steps.configure_env.outputs.ECS_SERVICE }} | ||
ecs-cluster: ${{ env.ECS_CLUSTER }} | ||
image: ${{ steps.configure_env.outputs.APP_IMAGE }} |
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 |
---|---|---|
|
@@ -30,8 +30,6 @@ jobs: | |
PROJECT_PREFIX: ${{ steps.vars.outputs.PROJECT_PREFIX }} | ||
ECS_CLUSTER: ${{ steps.set_env.outputs.ECS_CLUSTER }} | ||
ECR_REPOSITORY: ${{ steps.set_env.outputs.ECR_REPOSITORY }} | ||
ENVIRONMENT_BUCKET: ${{ steps.set_env.outputs.ENVIRONMENT_BUCKET }} | ||
DEFAULT_CONF: ${{ steps.vars.outputs.DEFAULT_CONF }} | ||
SLACK_WEBHOOK_URL: ${{ steps.vars.outputs.SLACK_WEBHOOK_URL }} | ||
|
||
steps: | ||
|
@@ -82,7 +80,7 @@ jobs: | |
run: | | ||
PROJECT_PREFIX=${{ steps.vars.outputs.PROJECT_PREFIX }} | ||
echo "ECS_CLUSTER=$PROJECT_PREFIX-ecs-cluster" >> $GITHUB_OUTPUT | ||
echo "ECR_REPOSITORY=$PROJECT_PREFIX-conductor-ui" >> $GITHUB_OUTPUT | ||
echo "ECR_REPOSITORY=$PROJECT_PREFIX-ecr-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "ENVIRONMENT_BUCKET=$PROJECT_PREFIX-s3-environment" >> $GITHUB_OUTPUT | ||
echo ":seedling: Branch:${GITHUB_REF#refs/heads/}" >> $GITHUB_STEP_SUMMARY | ||
|
@@ -100,7 +98,7 @@ jobs: | |
AWS_ROLE: ${{ needs.prepare-env.outputs.AWS_ROLE }} | ||
ENV: ${{ needs.prepare-env.outputs.ENV }} | ||
PROJECT_PREFIX: ${{needs.prepare-env.outputs.PROJECT_PREFIX}} | ||
ECR_REPOSITORY: ${{needs.prepare-env.outputs.ECR_REPOSITORY_UI}} | ||
ECR_REPOSITORY: ${{needs.prepare-env.outputs.ECR_REPOSITORY}} | ||
ENVIRONMENT_BUCKET: ${{needs.prepare-env.outputs.ENVIRONMENT_BUCKET}} | ||
DEFAULT_CONF: ${{needs.prepare-env.outputs.DEFAULT_CONF}} | ||
IMAGE_TAG: ${{ github.event.inputs.tag }} | ||
|
@@ -109,21 +107,27 @@ jobs: | |
APP_IMAGE: ${{ steps.image.outputs.APP_IMAGE }} | ||
|
||
steps: | ||
- name: configure env | ||
id: configure_env | ||
run: | | ||
echo "TASK_DEFINITION=$PROJECT_PREFIX-td-$SERVICE_NAME-test" >> $GITHUB_OUTPUT | ||
echo "CONTAINER_NAME=$PROJECT_PREFIX-cntr-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "APP_IMAGE=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}" | ||
- name: Checkout code from action | ||
uses: actions/checkout@v2 | ||
|
||
- name: Configure AWS credentials | ||
uses: aws-actions/configure-aws-credentials@v4 | ||
with: | ||
role-to-assume: ${{ secrets[env.AWS_ROLE] }} | ||
aws-region: ${{ env.AWS_REGION }} | ||
|
||
- name: Amazon ECR Login | ||
id: login-ecr | ||
uses: aws-actions/[email protected] | ||
|
||
- name: Configure env | ||
id: configure_env | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
run: | | ||
echo "TASK_DEFINITION=$PROJECT_PREFIX-td-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "CONTAINER_NAME=$PROJECT_PREFIX-cntr-$SERVICE_NAME" >> $GITHUB_OUTPUT | ||
echo "APP_IMAGE=${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}" >> $GITHUB_OUTPUT | ||
- name: Get latest task definition | ||
shell: bash | ||
|
@@ -137,7 +141,7 @@ jobs: | |
with: | ||
task-definition: task-definition.json | ||
container-name: ${{ steps.configure_env.outputs.CONTAINER_NAME }} | ||
image: ${{ env.APP_IMAGE }} | ||
image: ${{ steps.configure_env.outputs.APP_IMAGE }} | ||
|
||
- name: Remove unwanted fields from task definition | ||
id: task_def_cleanup | ||
|
@@ -156,7 +160,7 @@ jobs: | |
--query taskDefinition.revision) | ||
echo "revision=$revision" >> $GITHUB_OUTPUT | ||
- name: deploy backend | ||
- name: Deploy backend | ||
id: deploy_backend | ||
uses: ./.github/actions/deploy-ecs | ||
with: | ||
|
@@ -166,4 +170,4 @@ jobs: | |
container-name: ${{ steps.configure_env.outputs.CONTAINER_NAME }} | ||
ecs-service: ${{ steps.configure_env.outputs.ECS_SERVICE }} | ||
ecs-cluster: ${{ env.ECS_CLUSTER }} | ||
image: ${{ env.APP_IMAGE }} | ||
image: ${{ steps.configure_env.outputs.APP_IMAGE }} |
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