Skip to content

Merge pull request #29 from sweet-muffin/main #8

Merge pull request #29 from sweet-muffin/main

Merge pull request #29 from sweet-muffin/main #8

Workflow file for this run

name: SKILLINK(FRONT/BACK) CI/CD
on:
push:
branches: [deploy]
env:
FRONTEND_IMAGE: ghcr.io/jlake310/skillink_frontend
BACKEND_IMAGE: ghcr.io/jlake310/skillink_backend
VERSION: ${{ github.sha }}
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Docker Compose
run: |
sudo apt-get update
sudo apt-get install -y docker-compose
- name: Setup docker buildx
id: buildx
uses: docker/setup-buildx-action@v1
- name: Cache docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ env.VERSION }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to ghcr
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Build and push(frontend)
id: frontend_docker_build
uses: docker/build-push-action@v2
with:
context: ./frontend
push: true
tags: ${{ env.FRONTEND_IMAGE }}:latest
- name: Build and push(backend)
id: backend_docker_build
uses: docker/build-push-action@v2
with:
context: ./backend
push: true
tags: ${{ env.BACKEND_IMAGE }}:latest
build-args: |
MYSQL_HOST=${{ secrets.MYSQL_HOST }}
MYSQL_USER=${{ secrets.MYSQL_USER }}
MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}
MYSQL_DB=${{ secrets.MYSQL_DB }}
MYSQL_CHARSET=${{ secrets.MYSQL_CHARSET }}
OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
OPENAI_API_ORG=${{ secrets.OPENAI_API_ORG }}
WANTED_ENDPOINT=${{ secrets.WANTED_ENDPOINT }}
WANTED_ID=${{ secrets.WANTED_ID }}
WANTED_SECRET=${{ secrets.WANTED_SECRET }}
deploy:
needs: build
name: Deploy
runs-on: [self-hosted, label-skillink]
steps:
- name: Login to ghcr
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GHCR_TOKEN }}
- name: Docker run
run: |
docker stop ${{ secrets.FRONT_APP }} && docker rm ${{ secrets.FRONT_APP }} && docker rmi ${{ env.FRONTEND_IMAGE }}:latest
docker stop ${{ secrets.API_APP }} && docker rm ${{ secrets.API_APP }} && docker rmi ${{ env.BACKEND_IMAGE }}:latest
docker pull ${{ env.FRONTEND_IMAGE }}:latest && docker pull ${{ env.BACKEND_IMAGE }}:latest
cd ~
docker-compose -f docker-compose.prod.yml up -d