Skip to content

Deploy to AWS ECR(Guest Celery Docker Image v.test) by @JaeHyuckSa #9

Deploy to AWS ECR(Guest Celery Docker Image v.test) by @JaeHyuckSa

Deploy to AWS ECR(Guest Celery Docker Image v.test) by @JaeHyuckSa #9

name: Guest CELERY DEV Docker Push
run-name: Deploy to AWS ECR(Guest Celery Docker Image v.${{ github.event.inputs.docker_image_tag }}) by @${{ github.actor }}
on:
workflow_dispatch:
inputs:
docker_image_tag:
description: '이전 버전과 다른 상위 버전을 입력해주세요. (ex. 1.0.0)'
default: '1.0.0'
required: true
type: string
permissions:
users:
- saJaeHyukc
- DongwookKim0823
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
token: ${{ secrets.OWNER_ACCESS_TOKEN }}
submodules: true
fetch-depth: 0
- name: Set up QEMU for ARM64
uses: docker/setup-qemu-action@v2
with:
platforms: linux/arm64
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: AWS configure
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Get changed files
id: changed-files-specific
uses: tj-actions/changed-files@v45
with:
files: |
docker/dev-package.Dockerfile
docker/dev.Dockerfile
pyproject.toml
poetry.lock
- name: Build dev-package docker image and push to ECR
id: build-and-push
if: steps.changed-files-specific.outputs.any_changed == 'true'
uses: docker/build-push-action@v5
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
with:
context: .
file: ./docker/dev-package.Dockerfile
platforms: linux/arm64
push: true
tags: |
${{ env.ECR_REGISTRY }}/mung-manager-guest-dev-package:latest
- name: Replace Dockerfile and docker-compose
run: |
sed -i 's|${DEV_PACKAGE_IMAGE}|${{ steps.login-ecr.outputs.registry }}/mung-manager-guest-dev-package:latest|' docker/dev.Dockerfile
sed -i 's|docker/local.Dockerfile|docker/dev.Dockerfile|' docker-compose.yml
- name: Create env file
env:
DJANGO_GUEST_ENV: ${{ secrets.DJANGO_GUEST_ENV }}
run: |
touch .env.guest
echo "$DJANGO_GUEST_ENV" >> .env.guest
- name: Build docker compose images for ARM64
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
DOCKER_DEFAULT_PLATFORM: linux/arm64
run: |
docker compose build postgres_db guest_service redis
- name: Run isort
run: docker compose run guest_service poetry run isort mung_manager/ --check
- name: Run black
run: docker compose run guest_service poetry run black mung_manager/ --check
- name: Run flake8
run: docker compose run guest_service poetry run flake8
- name: Run mypy
run: docker compose run guest_service poetry run mypy --config mypy.ini mung_manager/
# - name: Run tests
# run: docker compose run guest_service poetry run pytest --cov=mung_manager/ --cov-fail-under=80 tests/ -n 4
- name: Build dev docker image and push to ECR
id: build-dev-and-push
uses: docker/build-push-action@v5
env:
IMAGE_TAG: ${{ github.event.inputs.docker_image_tag }}
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
with:
context: .
file: ./docker/dev.Dockerfile
platforms: linux/arm64
push: true
tags: |
${{ env.ECR_REGISTRY }}/mung-manager-guest-celery:${{ env.IMAGE_TAG }}
${{ env.ECR_REGISTRY }}/mung-manager-guest-celery:latest
- name: Infra Repository Dispatch
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.OWNER_ACCESS_TOKEN }}
repository: Mung-Manager/BE-Infra
event-type: guest-celery-dev-deploy
client-payload: |
{
"prev_common_docker_image": "${{ steps.login-ecr-public.outputs.registry }}/${{ secrets.ECR_PUBLIC_REGISTRY_ALIAS }}",
"guest_image_tag": "${{ github.event.inputs.docker_image_tag }}",
"s3_bucket": "mung-manager-deploy/dev/guest/",
"actor": "${{ github.actor }}",
"branch": "${{ github.ref }}",
"django_settings_module": "config.django.dev"
}
- name: Notify Slack on Success
if: success()
id: slack-success
uses: slackapi/[email protected]
with:
payload: |
{
"channel": "${{ secrets.SLACK_CHANNEL_ID }}",
"attachments": [
{
"color": "#36a64f",
"title": "${{ github.repository }}",
"title_link": "https://github.com/${{github.repository}}",
"text": "GitHub Action Guest CELERY DEV-DOCKER-BUILD 성공 😄",
"fields": [
{
"title": "Repository",
"value": "${{ github.repository }}",
"short": true
},
{
"title": "Tag",
"value": "${{ github.ref_name }}",
"short": true
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: Notify Slack on Failure
if: failure()
id: slack-failure
uses: slackapi/[email protected]
with:
payload: |
{
"channel": "${{ secrets.SLACK_CHANNEL_ID }}",
"attachments": [
{
"color": "#ff0000",
"title": "${{ github.repository }}",
"title_link": "https://github.com/${{github.repository}}",
"text": "GitHub Action Guest CELERY DEV-DOCKER-BUILD 실패 😭",
"fields": [
{
"title": "Repository",
"value": "${{ github.repository }}",
"short": true
},
{
"title": "Tag",
"value": "${{ github.ref_name }}",
"short": true
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK