Merge pull request #246 from WhereAreYouPJ/sij #209
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |