Skip to content

Merge pull request #246 from WhereAreYouPJ/sij #209

Merge pull request #246 from WhereAreYouPJ/sij

Merge pull request #246 from WhereAreYouPJ/sij #209

Workflow file for this run

name: WAY CI/CD
on:
push:
branches: [ master ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: '17'
# YML 파일 생성
- name: Set YML
run: |
mkdir -p presentation/src/main/resources
echo "${{ secrets.APPLICATION_YML }}" | base64 --decode > presentation/src/main/resources/application.yml
find presentation/src
- name: Set YML PRODUCTION
run: |
mkdir -p presentation/src/main/resources
echo "${{ secrets.APPLICATION_PRODUCTION_YML }}" | base64 --decode > presentation/src/main/resources/application-production.yml
find presentation/src
# Firebase JSON Key 생성
- name: Create Firebase Config Directory
run: mkdir -p presentation/src/main/resources/firebase
- name: create-json
id: create-json
uses: jsdaniell/[email protected]
with:
name: "firebase_service_key.json" # .json 확장자 추가
json: ${{ secrets.FIREBASE_SERVICE_KEY }}
dir: 'presentation/src/main/resources/firebase'
# Gradle Build
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
shell: bash
- name: Build with Gradle
run: ./gradlew clean build
shell: bash
# # Time Setting
# - name: Get current time
# uses: 1466587594/get-current-time@v2
# id: current-time
# with:
# format: YYYY-MM-DDTHH-mm-ss
# utcOffset: "+09:00"
#
# - name: Show Current Time
# run: echo "CurrentTime=${{steps.current-time.outputs.formattedTime}}"
# shell: bash
# Docker Config
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{secrets.DOCKER_USERNAME}}
password: ${{secrets.DOCKER_TOKEN}}
- name: build and release to DockerHub
env:
NAME: ${{secrets.DOCKER_USERNAME}}
REPO: way
run: |
docker build -t $REPO .
docker tag $REPO:latest $NAME/$REPO:latest
docker push $NAME/$REPO:latest
deploy:
needs: build
name: Deploy
runs-on: [ self-hosted ]
steps:
# - name: Checkout repository
# uses: actions/checkout@v2
# - name: Check if swap is already active
# run: |
# if free | awk '/^Swap:/ {exit !$2}'; then
# echo "Swap is already active, skipping swap creation."
# else
# echo "Swap is not active, creating swap."
# sudo fallocate -l 2G /swapfile
# sudo chmod 600 /swapfile
# sudo mkswap /swapfile
# sudo swapon /swapfile
# free -h
# fi
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{secrets.DOCKER_USERNAME}}
password: ${{secrets.DOCKER_TOKEN}}
- name: Set Docker permissions
run: |
sudo usermod -aG docker $USER
sudo chown $USER /var/run/docker.sock
newgrp docker
# - name: Install Docker Compose
# run: |
# if ! command -v docker-compose &> /dev/null
# then
# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose
# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# else
# echo "Docker Compose already installed"
# fi
- name: Clean up Docker to free space
run: |
sudo docker container prune -f
sudo docker image prune -a -f
sudo docker volume prune -f
sudo docker network prune -f
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
sudo apt-get autoremove
# - name: Set Docker Compose
# run: |
# sudo docker-compose -f docker-compose.yml down
# sudo docker-compose -f docker-compose.yml up -d
#
# - name: Wait for RabbitMQ to be ready
# run: |
# until sudo docker exec rabbitmq rabbitmq-diagnostics status; do
# echo "Waiting for RabbitMQ..."
# sleep 5
# done
#
# - name: Enable RabbitMQ STOMP Plugin
# run: |
# sudo docker exec rabbitmq rabbitmq-plugins enable rabbitmq_stomp
- name: Run Docker
run: |
sudo docker ps -q --filter "name=way" | grep -q . && sudo docker stop "way" && sudo docker rmi -f "${{secrets.DOCKER_USERNAME}}/way"
sudo docker pull ${{secrets.DOCKER_USERNAME}}/way
sudo docker run -d --name way --rm -p 8080:8080 ${{secrets.DOCKER_USERNAME}}/way