Skip to content

📝docs : docker build withouth cache #24

📝docs : docker build withouth cache

📝docs : docker build withouth cache #24

Workflow file for this run

name: Backend CI/CD with Gradle
on:
# workflow_dispatch:
# inputs:
# service:
# description: 'Choose Service to deploy. Default is all.'
# required: true
# default: 'all'
# type: choice
# options:
# - all
# - api-gateway
# - noti-service
# - user-service
# - weather-service
push:
branches:
- prod
jobs:
build:
runs-on: ubuntu-latest
#Checkout : 코드 가져오기
steps:
- name: Checkout
uses: actions/checkout@v3
#Setting JDK
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'temurin'
#gradlew chmod
- name: Grant execute permission for gradlew
run: |
chmod +x ./apiGateway-service/gradlew
chmod +x ./config-service/gradlew
chmod +x ./Eureka/gradlew
chmod +x ./noti-service/gradlew
chmod +x ./user-service/gradlew
chmod +x ./weather-service/gradlew
#Setting yml
- name: Settings for config service
run: |
cd ./config-service/src/main/resources
touch ./bootstrap.yml
echo "${{ secrets.CONFIG_APPLICATION_YML }}" > ./bootstrap.yml
cd
# DockerHub Login
- name: Docker Hub Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
#Config-Service Build & Docker Push
- name: Build with Gradle - config
run: |
docker builder prune
cd config-service
./gradlew clean build -x test
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-config .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-config
env:
CONFIG_GIT_URI: ${{ secrets.CONFIG_GIT_URI }}
CONFIG_PASSPHRASE: ${{ secrets.CONFIG_PASSPHRASE }}
#Config-Service Run
- name: Run config-service
run: |
cd config-service
./gradlew bootRun &
cd ..
#Wait 5 sec
- name: Wait for config-service to start
run: sleep 5
#apiGateway-Service Build & Docker Push
- name: Build with Gradle - apiGateway
run: |
cd apiGateway-service
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-gateway
cd ..
#Eureka Build & Docker Push
- name: Build with Gradle - Eureka
run: |
cd Eureka
./gradlew clean build -x test
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-eureka .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-eureka
cd ..
#Noti-Service Build & Docker Push
- name: Build with Gradle - noti-service
run: |
cd noti-service
cat src/main/resources/bootstrap.yml
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-noti
cd ..
#User-Service Build & Docker Push
- name: Build with Gradle - user-service
run: |
cd user-service
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-user .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-user
cd ..
#Weather-Service Build & Docker Push
- name: Build with Gradle - weather-service
run: |
cd weather-service
./gradlew clean build -x test
docker build --no-cache -t ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/waither-weather
cd ..
deploy:
name : Connect to EC2 and re-run container
needs : build
runs-on : ubuntu-latest
steps:
- name: Deploy to Server
uses: appleboy/[email protected]
env:
SERVICE_NAME: ${{ github.event.inputs.service }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
password: ${{ secrets.EC2_PASSWORD }}
port: ${{ secrets.EC2_SSH_PORT }}
timeout: 60s
script: |
export CONFIG_GIT_URI=${{ secrets.CONFIG_GIT_URI }}
export CONFIG_PASSPHRASE=${{ secrets.CONFIG_PASSPHRASE }}
export DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }}
bash /home/docker_init.sh
bash /home/common.sh
bash /home/deploy.sh
docker image prune -f