Gitea Actions로 main 브랜치 배포를 자동화합니다. 이미지를 빌드/레지스트리 푸시 후, 서버에서 pull해서 배포하는 Docker 기반 배포 방식으로 설계합니다.
push
main
workflow_dispatch
latest
sha
docker compose up -d
REGISTRY
registry.example.com
REGISTRY_USER
REGISTRY_PASSWORD
SSH_HOST
SSH_USER
SSH_KEY
SSH_PORT
DEPLOY_PATH
IMAGE_NAME
kngil_home
DEPLOY_ENV
production
${REGISTRY}/${IMAGE_NAME}:latest
${REGISTRY}/${IMAGE_NAME}:${GITEA_SHA}
docker-compose.yml
docker compose pull
docker image prune -f
.env
.env.production
docker compose --env-file .env.production pull
docker compose --env-file .env.production up -d
scp
ssh
docker compose
name: Deploy (main) on: push: branches: [ "main" ] workflow_dispatch: jobs: build-and-deploy: runs-on: ubuntu-latest permissions: contents: read steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to registry uses: docker/login-action@v3 with: registry: ${{ secrets.REGISTRY }} username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push uses: docker/build-push-action@v5 with: context: . push: true tags: | ${{ secrets.REGISTRY }}/${{ secrets.IMAGE_NAME }}:latest ${{ secrets.REGISTRY }}/${{ secrets.IMAGE_NAME }}:${{ github.sha }} - name: Deploy via SSH uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} key: ${{ secrets.SSH_KEY }} port: ${{ secrets.SSH_PORT }} script: | cd ${{ secrets.DEPLOY_PATH }} docker compose --env-file .env.production pull docker compose --env-file .env.production up -d
원하시면 이 초안을 기반으로 실제 .gitea/workflows/deploy.yml 파일을 추가하겠습니다.
.gitea/workflows/deploy.yml
No dependencies set.
The note is not visible to the blocked user.
목표
Gitea Actions로 main 브랜치 배포를 자동화합니다. 이미지를 빌드/레지스트리 푸시 후, 서버에서 pull해서 배포하는 Docker 기반 배포 방식으로 설계합니다.
제안 워크플로우 개요
pushtomainworkflow_dispatch(수동 배포)latest,sha태그)docker compose up -d필요한 시크릿/변수
REGISTRY(예:registry.example.com)REGISTRY_USERREGISTRY_PASSWORDSSH_HOSTSSH_USERSSH_KEYSSH_PORT(선택)DEPLOY_PATH(서버의 compose 경로)IMAGE_NAME(예:kngil_home)DEPLOY_ENV(선택, 예:production)산출물
${REGISTRY}/${IMAGE_NAME}:latest${REGISTRY}/${IMAGE_NAME}:${GITEA_SHA}서버 배포 방식 (레지스트리 Pull)
docker-compose.yml또는 배포 스크립트가 이미지 태그를 사용하도록 구성docker compose pulldocker compose up -ddocker image prune -f.env override 포함 배포 방식
.env또는.env.production을 배치해 runtime 설정을 overridedocker compose --env-file .env.production pull/docker compose --env-file .env.production up -dscp/ssh로 전달롤백 전략
docker compose에서 이미지 태그만 되돌린 후 재기동워크플로우 초안 (YAML)
확인 필요
.env전달 방식 결정(A/B/C)원하시면 이 초안을 기반으로 실제
.gitea/workflows/deploy.yml파일을 추가하겠습니다.