From 4297c2accdac4366441bee06c45e7e9fcbe52ab5 Mon Sep 17 00:00:00 2001 From: Antoine Falisse Date: Mon, 17 Jun 2024 16:34:31 -0700 Subject: [PATCH] adding dev workflows for openpose and mmpose --- .github/workflows/ecr-mmpose-dev.yml | 70 ++++++++++++++++++++++++++ .github/workflows/ecr-openpose-dev.yml | 70 ++++++++++++++++++++++++++ app.py | 2 +- openpose/loop_openpose.py | 2 +- 4 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ecr-mmpose-dev.yml create mode 100644 .github/workflows/ecr-openpose-dev.yml diff --git a/.github/workflows/ecr-mmpose-dev.yml b/.github/workflows/ecr-mmpose-dev.yml new file mode 100644 index 0000000..03d9bc1 --- /dev/null +++ b/.github/workflows/ecr-mmpose-dev.yml @@ -0,0 +1,70 @@ +# This workflow will build and push a new container image to Amazon ECR, +# and then will deploy a new task definition to Amazon ECS, on every push +# to the master branch. +# +# To use this workflow, you will need to complete the following set-up steps: +# +# 1. Create an ECR repository to store your images. +# For example: `aws ecr create-repository --repository-name my-ecr-repo --region us-east-2`. +# Replace the value of `ECR_REPOSITORY` in the workflow below with your repository's name. +# Replace the value of `aws-region` in the workflow below with your repository's region. +# +# 2. Create an ECS task definition, an ECS cluster, and an ECS service. +# For example, follow the Getting Started guide on the ECS console: +# https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun +# Replace the values for `service` and `cluster` in the workflow below with your service and cluster names. +# +# 3. Store your ECS task definition as a JSON file in your repository. +# The format should follow the output of `aws ecs register-task-definition --generate-cli-skeleton`. +# Replace the value of `task-definition` in the workflow below with your JSON file's name. +# Replace the value of `container-name` in the workflow below with the name of the container +# in the `containerDefinitions` section of the task definition. +# +# 4. Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`. +# See the documentation for each action used below for the recommended IAM policies for this IAM user, +# and best practices on handling the access key credentials. + +on: + push: + branches: + - dev + +name: Deploy to Amazon ECS + +jobs: + deploy: + name: Deploy OpenCap + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - 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: us-west-2 + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + ECR_REPOSITORY: opencap/mmpose-dev + IMAGE_TAG: latest # ${{ github.sha }} + run: | + # Build a docker container and + # push it to ECR so that it can + # be deployed to ECS. + docker build -f docker/mmpose/Dockerfile -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" + + - name: Force deployment + run: | + aws ecs update-service --cluster opencap-processing-cluster-dev --service worker --force-new-deployment diff --git a/.github/workflows/ecr-openpose-dev.yml b/.github/workflows/ecr-openpose-dev.yml new file mode 100644 index 0000000..61f04b2 --- /dev/null +++ b/.github/workflows/ecr-openpose-dev.yml @@ -0,0 +1,70 @@ +# This workflow will build and push a new container image to Amazon ECR, +# and then will deploy a new task definition to Amazon ECS, on every push +# to the master branch. +# +# To use this workflow, you will need to complete the following set-up steps: +# +# 1. Create an ECR repository to store your images. +# For example: `aws ecr create-repository --repository-name my-ecr-repo --region us-east-2`. +# Replace the value of `ECR_REPOSITORY` in the workflow below with your repository's name. +# Replace the value of `aws-region` in the workflow below with your repository's region. +# +# 2. Create an ECS task definition, an ECS cluster, and an ECS service. +# For example, follow the Getting Started guide on the ECS console: +# https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun +# Replace the values for `service` and `cluster` in the workflow below with your service and cluster names. +# +# 3. Store your ECS task definition as a JSON file in your repository. +# The format should follow the output of `aws ecs register-task-definition --generate-cli-skeleton`. +# Replace the value of `task-definition` in the workflow below with your JSON file's name. +# Replace the value of `container-name` in the workflow below with the name of the container +# in the `containerDefinitions` section of the task definition. +# +# 4. Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`. +# See the documentation for each action used below for the recommended IAM policies for this IAM user, +# and best practices on handling the access key credentials. + +on: + push: + branches: + - dev + +name: Deploy to Amazon ECS + +jobs: + deploy: + name: Deploy OpenCap + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - 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: us-west-2 + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Build, tag, and push image to Amazon ECR + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + ECR_REPOSITORY: opencap/openpose-dev + IMAGE_TAG: latest # ${{ github.sha }} + run: | + # Build a docker container and + # push it to ECR so that it can + # be deployed to ECS. + docker build -f docker/openpose/Dockerfile -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + echo "::set-output name=image::$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" + + - name: Force deployment + run: | + aws ecs update-service --cluster opencap-processing-cluster-dev --service worker --force-new-deployment diff --git a/app.py b/app.py index 9d10c58..86a2644 100644 --- a/app.py +++ b/app.py @@ -19,7 +19,7 @@ API_URL = getAPIURL() workerType = getWorkerType() autoScalingInstance = getASInstance() -logging.info(f"AUTOSCALING INSTANCE: {autoScalingInstance}") +logging.info(f"AUTOSCALING TEST INSTANCE: {autoScalingInstance}") # if true, will delete entire data directory when finished with a trial isDocker = True diff --git a/openpose/loop_openpose.py b/openpose/loop_openpose.py index df26e03..b9abd45 100644 --- a/openpose/loop_openpose.py +++ b/openpose/loop_openpose.py @@ -106,7 +106,7 @@ def getResolutionCommand(resolutionPoseDetection, horizontal): time.sleep(0.1) continue - logging.info("Processing...") + logging.info("Processing openpose ...") if os.path.isdir(output_dir): shutil.rmtree(output_dir)