Skip to content

Commit

Permalink
Add deploy files (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
jojo0severo authored Aug 28, 2023
1 parent 996064a commit 06ce36d
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 0 deletions.
62 changes: 62 additions & 0 deletions .github/workflows/dev-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: dev-deploy

on:
push:
branches: [master]
paths:
- "api/**"
- ".github/**"
workflow_dispatch:

env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1

ECS_CLUSTER: default
ECS_SERVICE: memetrics-test-server
REPOSITORY: 306094223949.dkr.ecr.us-east-1.amazonaws.com/memetrics-dev
IMAGE_TAG: beta

jobs:
build:
name: Deploy dev image
runs-on: ubuntu-latest

steps:
- name: Checkout Repo
uses: actions/checkout@v3

- name: Set SSH agent
uses: webfactory/ssh-agent@v0.7.0
with:
log-public-key: true
ssh-private-key: |
${{ secrets.NEI_SSH }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}

- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Build and push to ECR
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./api
file: ./api/Dockerfile
push: true
ssh: default
target: run
tags: "${{ env.REPOSITORY }}:${{ env.IMAGE_TAG }}"

- name: Force deployment to ECS
run: aws ecs update-service --cluster ${{ env.ECS_CLUSTER }} --service ${{ env.ECS_SERVICE }} --force-new-deployment
45 changes: 45 additions & 0 deletions .github/workflows/prod-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: prod-deploy

on:
push:
tags: ["v*.*.*"]
workflow_dispatch:

env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: us-east-1

ECS_CLUSTER: default
ECS_SERVICE: memetrics-prod-server
REPOSITORY: 306094223949.dkr.ecr.us-east-1.amazonaws.com/memetrics-prod
BETA_IMAGE_TAG: beta
PRODUCTION_IMAGE_TAG: latest

jobs:
build:
name: Deploy production image
runs-on: ubuntu-latest

steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}

- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v1

- name: Pull latest beta image
run: docker pull ${{ env.REPOSITORY }}:${{ env.BETA_IMAGE_TAG }}

- name: Tag as latest production image
run: docker tag ${{ env.REPOSITORY }}:${{ env.BETA_IMAGE_TAG }} ${{ env.REPOSITORY }}:${{ env.PRODUCTION_IMAGE_TAG }}

- name: Push to ECR
run: docker push ${{ env.REPOSITORY }}:${{ env.PRODUCTION_IMAGE_TAG }}

- name: Deploy on ECS
run: aws ecs update-service --cluster ${{ env.ECS_CLUSTER }} --service ${{ env.ECS_SERVICE }} --force-new-deployment
21 changes: 21 additions & 0 deletions api/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# syntax=docker/dockerfile:1
FROM python:3.11 as base

RUN mkdir -p -m 0600 /root/.ssh && \
ssh-keyscan -H github.com >> /root/.ssh/known_hosts

RUN apt-get update && apt-get -y upgrade && \
apt-get -y install build-essential


WORKDIR /app
COPY . .
RUN pip install --upgrade pip && pip install -r requirements.txt
RUN --mount=type=ssh pip install .[teia]

FROM base as test
RUN pip install -r requirements-test.txt
CMD ["pytest", "api"]

FROM base as run
CMD [ "python", "-m", "memetrics" ]

0 comments on commit 06ce36d

Please sign in to comment.