Skip to content

WIPWIP

WIPWIP #6

Workflow file for this run

name: deploy service
on:
push:
branches:
- main
- deploy/*
jobs:
deploy:
runs-on: ubuntu-24.04
steps:
# repoμ—μ„œ μ†ŒμŠ€μ½”λ“œ 볡사(checkout)
- name: Checkout Project
uses: actions/checkout@v4
- name: Use Cache for Build Image Layer Save
uses: actions/[email protected]
with:
path: /tmp/.build-cache
key: docker-image-cache-${{ github.sha }}
restore-keys: docker-image-cache-
- name: Create .env file
run: echo """${{ secrets.ENV_FILE }}""" >> .env
- name: Add ssh-agent
uses: webfactory/[email protected]
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Add Remote Server FingerPrint to Know Hosts
run: ssh-keyscan -H -p ${{secrets.SSH_PORT}} ${{secrets.SSH_HOST}} >> ~/.ssh/known_hosts || true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Create BuildKit Builder
run: |
docker buildx create --use --name buildkit
docker buildx use buildkit
- name: Login DockerHub
run: echo '${{ secrets.DOCKER_PASSWORD }}' | docker login -u '${{ secrets.DOCKER_USERNAME }}' --password-stdin
- name: Docker Image Build
run: docker compose build --build-arg BUILDKIT_INLINE_CACHE=1
- name: Docker Image Push
run: docker compose push
- name: Create work directory on EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
echo "Current directory: $(pwd)"
mkdir -p ~/work-directory
- name: Copy .env and docker-compose.yml Into EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
source: "docker-compose.yml, .env"
target: "~/work-directory"
## EC2λ‚΄μ„œ μˆ˜ν–‰ν•  μž‘μ—…
- name: Pull Image from Docker Hub
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd ~/work-directory
docker compose pull
- name: UP Containers
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
cd ~/work-directory
docker compose down
docker compose up -d
docker system prune -f