Skip to content

[infra] VPC, Subnet 설정 및 Github Actions 기반 CI/CD 파이프라인 구축 (#4) #3

[infra] VPC, Subnet 설정 및 Github Actions 기반 CI/CD 파이프라인 구축 (#4)

[infra] VPC, Subnet 설정 및 Github Actions 기반 CI/CD 파이프라인 구축 (#4) #3

Workflow file for this run

# CI/CD workflow
name: CI/CD
on:
push:
branches: [ "dev" ]
pull_request:
branches: [ "dev" ]
permissions:
contents: read
jobs:
CI:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@ec92e829475ac0c2315ea8f9eced72db85bb337a # v3.0.0
# TODO: 추후 테스트코드 작성 후 테스트 실패 시 CI 불가능하도록 수정
- name: Build with Gradle
run: ./gradlew build -x test
- name: Docker Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
- name: Build Docker Image
run: docker build --platform linux/amd64 -t ${{ secrets.DOCKERHUB_USERNAME }}/orange .
- name: Push Docker Image
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/orange
CD:
if: github.event.pull_request.merged == true && github.ref == 'refs/heads/dev'
runs-on: self-hosted
needs: CI
steps:
- name: Remove Docker Container
run: sudo docker rm -f orange || true
- name: Run Updated Docker Container
run: sudo docker run -t --env-file ./.env -d --name orange -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/orange