개념
GitHub Actions로 Docker 이미지를 자동 빌드하고 DockerHub에 푸시하는 워크플로우.
main브랜치 푸시 →latest+stable태그 생성- 릴리즈 발행 →
rollback태그 생성 - 모든 브랜치 푸시 →
latest태그 업데이트 - Node.js 패키지 기준으로 작성됨
필요한 Repository Secrets: DOCKER_USERNAME, DOCKER_PASSWORD
.github/workflow/deployment.yml
DOCKER_REPO환경변수를 자신의 DockerHub 레포지토리로 수정해서 사용
name: AUTO DEPLOYMENT
on:
push:
branches: [ main ]
workflow_dispatch:
# NOTE : DOCKER_REPO 설정.
env:
DOCKER_REPO: organization_name/repository_name
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@master
- name: EXTRACT NPM VERSION
id: extract_version
uses: Saionaro/extract-package-version@v1.0.6
-
name: SETUP QEMUX
uses: docker/setup-qemu-action@v1
-
name: SET UP DOCKERX
uses: docker/setup-buildx-action@v1
-
name: LOGIN TO DOCKERHUB
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
-
name: Build Docker and Push to DOCEAN_API
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
file: ./Dockerfile
tags: |
"$DOCKER_REPO:latest"
"$DOCKER_REPO:v${{ steps.extract_version.outputs.version }}"
-
name: MAKE RELEASE DATE
id: date
run: echo "release_time=$(TZ=Asia/Seoul date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_ENV
-
name: CREATE RELEASE
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.extract_version.outputs.version }}
release_name: Release v${{ steps.extract_version.outputs.version }} [${{ env.release_time }}]
body: AUTO RELEASE MADE FROM workflows
draft: true