config: docker 등 빌드 소스정리
parent
57bb57f1a8
commit
393a27fc4b
@ -1,22 +0,0 @@
|
|||||||
node_modules
|
|
||||||
npm-debug.log
|
|
||||||
|
|
||||||
# .git 과 .cache 폴더를 무시
|
|
||||||
.git
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# ignore all *.class files in all folders, including build root
|
|
||||||
# 모든 폴더안에 있는 모든, *.class 파일들을 무시
|
|
||||||
**/*.class
|
|
||||||
|
|
||||||
# 모든 마크다운 파일들 (md) 파일들을 무시,
|
|
||||||
# 모든 README*.md 파일 무시
|
|
||||||
*.md
|
|
||||||
IREADME*.md
|
|
||||||
|
|
||||||
.gradle
|
|
||||||
build
|
|
||||||
.idea
|
|
||||||
out
|
|
||||||
work
|
|
||||||
data
|
|
@ -1,74 +0,0 @@
|
|||||||
name: Deploy to Amazon EC2(github -> package -> EC2 docker image)
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ] # push할 때 동작할 branch를 입력해주세요.
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
logLevel:
|
|
||||||
description: 'Log level'
|
|
||||||
required: true
|
|
||||||
default: 'debug'
|
|
||||||
tags:
|
|
||||||
description: 'Run action'
|
|
||||||
required: true
|
|
||||||
default: 'Run '
|
|
||||||
env:
|
|
||||||
#DOCKER_IMAGE: ghcr.io/{Repository author}/{Repository name} # 예를 들면, ghcr.io/dolphago/github-follow-unfollow
|
|
||||||
DOCKER_IMAGE: ghcr.io/${{ github.actor }}/xit-framework
|
|
||||||
VERSION: ${{ github.sha }}
|
|
||||||
NAME: xit-framework-bo
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out source code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up docker buildx
|
|
||||||
id: buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
- name: Cache docker layers
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: /tmp/.buildx-cache
|
|
||||||
key: ${{ runner.os }}-buildx-${{ env.VERSION }} # runner 설정에서 읽어들일거에요.
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-buildx-
|
|
||||||
- name: Login to ghcr
|
|
||||||
uses: docker/login-action@v1
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GIT_ACS_TOKEN }}
|
|
||||||
- name: Build and push
|
|
||||||
id: docker_build
|
|
||||||
uses: docker/build-push-action@v2
|
|
||||||
with:
|
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
|
||||||
push: true #${{ github.event_name != 'pull_request' }}
|
|
||||||
tags: ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }}
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
needs: build
|
|
||||||
name: Deploy
|
|
||||||
runs-on: [ self-hosted, label-development ]
|
|
||||||
steps:
|
|
||||||
- name: Login to ghcr
|
|
||||||
uses: docker/login-action@v1
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GIT_ACS_TOKEN }}
|
|
||||||
- name: Docker run
|
|
||||||
#docker ps -q --filter "name=xit-framework-bo" | grep -q . && docker stop xit-framework-bo && docker rm -fv xit-framework-bo
|
|
||||||
#docker run -d -p 8090:8090 --name xit-framework-bo --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }}
|
|
||||||
#docker run -d -p 8090:8090 --name xit-framework-bo --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }}
|
|
||||||
#docker ps -q --filter "name=xit-framework-bo" | grep -q . && docker stop xit-framework-bo && docker rm -fv xit-framework-bo
|
|
||||||
#docker stop ${{ env.NAME }} && docker rm ${{ env.NAME }} && docker rmi ${{ env.DOCKER_IMAGE }}:latest
|
|
||||||
run: |
|
|
||||||
docker run -d -p 8090:8090 --name ${{ env.NAME }} --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }}
|
|
||||||
sleep 5
|
|
||||||
docker image prune -a
|
|
||||||
sleep 5
|
|
@ -1,46 +0,0 @@
|
|||||||
FROM gradle:7-jdk8 AS build
|
|
||||||
WORKDIR /application
|
|
||||||
COPY --chown=gradle:gradle ./ ./
|
|
||||||
#COPY ./ ./
|
|
||||||
#RUN chmod +x ./gradlew
|
|
||||||
RUN gradle clean bootWar
|
|
||||||
|
|
||||||
FROM openjdk:8-jre-slim
|
|
||||||
WORKDIR /app
|
|
||||||
COPY --from=build /application/build/libs/*.war ./ROOT.war
|
|
||||||
EXPOSE 8090
|
|
||||||
#ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=dev","-jar"," /app/ROOT.war"]
|
|
||||||
ENTRYPOINT ["java", "-jar", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=dev", "/app/ROOT.war"]
|
|
||||||
#ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "/application/build/libs/core-0.0.1-SNAPSHOT.war"]
|
|
||||||
|
|
||||||
#FROM openjdk:8-jdk-alpine as builder
|
|
||||||
#WORKDIR application
|
|
||||||
#COPY ./ ./
|
|
||||||
#RUN chmod +x ./gradlew
|
|
||||||
##--args='--spring.profiles.active=dev'
|
|
||||||
#RUN ./gradlew clean bootWar
|
|
||||||
##CMD["./gradlew", "-Dspring.profiles.active=local", "clean", "bootWar"]
|
|
||||||
#
|
|
||||||
#EXPOSE 8090 8443
|
|
||||||
#ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "/application/build/libs/core-0.0.1-SNAPSHOT.war"]
|
|
||||||
|
|
||||||
#FROM postgres
|
|
||||||
#FROM tomcat:9.0
|
|
||||||
#ENV TZ="Asia/Seoul"
|
|
||||||
#RUN ln -fns /usr/share/zoneinfo/$TZ /etc/localtime
|
|
||||||
#RUN echo $TZ > /etc/timezone
|
|
||||||
#CMD ["/usr/local/tomcat/bin/catalina.sh", "stop"]
|
|
||||||
#CMD sleep 3
|
|
||||||
#
|
|
||||||
#RUN rm -rf /usr/local/tomcat/webapps/ROOT
|
|
||||||
#COPY --from=builder /application/build/libs/core-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
|
|
||||||
#EXPOSE 8090 8443
|
|
||||||
#CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
|
|
||||||
|
|
||||||
#FROM tomcat:9.0
|
|
||||||
#ENV TZ="Asia/Seoul"
|
|
||||||
#RUN ln -fns /usr/share/zoneinfo/$TZ /etc/localtime
|
|
||||||
#RUN echo $TZ > /etc/timezone
|
|
||||||
##RUN rm -rf /usr/local/tomcat/webapps/ROOT
|
|
||||||
#COPY repo/target/kuaa-management.war /usr/local/tomcat/webapps/ROOT.war
|
|
||||||
#EXPOSE 8009 8080 8443
|
|
@ -1,148 +0,0 @@
|
|||||||
pipeline {
|
|
||||||
agent any
|
|
||||||
stages {
|
|
||||||
stage('Git Pull') {
|
|
||||||
steps {
|
|
||||||
script {
|
|
||||||
try {
|
|
||||||
//echo 'prepare'
|
|
||||||
//git branch: "master", credentialsId: "$GIT_CREDENTIALS_ID", url: 'git@github.com:minuk926/xit-framework.git/'
|
|
||||||
git branch: 'master', url: 'git@github.com:minuk926/xit-framework.git', credentialsId: 'jenkins_aws_connect_key'
|
|
||||||
sh rm -rf .git
|
|
||||||
sh 'ls -al'
|
|
||||||
env.cloneResult=true
|
|
||||||
} catch (error) {
|
|
||||||
print(error)
|
|
||||||
env.cloneResult=false
|
|
||||||
currentBuild.result = 'FAILURE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Build WAR') {
|
|
||||||
when {
|
|
||||||
expression {
|
|
||||||
return env.cloneResult ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script{
|
|
||||||
try {
|
|
||||||
sh """
|
|
||||||
rm -rf deploy
|
|
||||||
mkdir deploy
|
|
||||||
"""
|
|
||||||
sh "sudo sed -i \"s/module_name=.*/module_name=${env.JOB_NAME}\\:${env.BUILD_NUMBER}/g\" /var/lib/jenkins/workspace/${env.JOB_NAME}/src/main/resources/application.properties"
|
|
||||||
sh "cat /var/lib/jenkins/workspace/${env.JOB_NAME}/src/main/resources/application.properties"
|
|
||||||
sh 'gradlew clean bootWar'
|
|
||||||
sh """
|
|
||||||
cd deploy
|
|
||||||
cp /var/lib/jenkins/workspace/${env.JOB_NAME}/build/libs/*.war ./ROOT.war
|
|
||||||
"""
|
|
||||||
env.gradleBuildResult=true
|
|
||||||
} catch (error) {
|
|
||||||
print(error)
|
|
||||||
echo 'Remove Deploy Files'
|
|
||||||
sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*"
|
|
||||||
env.gradleBuildResult=false
|
|
||||||
currentBuild.result = 'FAILURE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
post {
|
|
||||||
success {
|
|
||||||
slackSend channel: '#pipeline-deploy', color: 'good', message: "The pipeline ${currentBuild.fullDisplayName} stage Build WAR successfully."
|
|
||||||
}
|
|
||||||
failure {
|
|
||||||
slackSend channel: '#pipeline-deploy', color: 'danger', message: "The pipeline ${currentBuild.fullDisplayName} stage Build WAR failed."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Docker Build'){
|
|
||||||
when {
|
|
||||||
expression {
|
|
||||||
return env.mavenBuildResult ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script{
|
|
||||||
try {
|
|
||||||
sh"""
|
|
||||||
#!/bin/bash
|
|
||||||
cd ./deploy
|
|
||||||
cat>Dockerfile<<-EOF
|
|
||||||
FROM ${ECR_BASE_URL}:latest
|
|
||||||
ADD ${env.JOB_NAME}.jar /home/${env.JOB_NAME}.jar
|
|
||||||
CMD nohup java -jar /home/${env.JOB_NAME}.jar 1> /dev/null 2>&1
|
|
||||||
EXPOSE 9000
|
|
||||||
EOF"""
|
|
||||||
sh"""
|
|
||||||
cd ./deploy
|
|
||||||
docker rmi -f \$(docker images -q)
|
|
||||||
\$(aws ecr get-login --no-include-email --region ap-northeast-2)
|
|
||||||
docker build -t ${SERVICE_NAME.toLowerCase()} .
|
|
||||||
docker tag ${SERVICE_NAME.toLowerCase()}:latest ${ECR_TASK_URL}:ver${env.BUILD_NUMBER}
|
|
||||||
docker push ${ECR_TASK_URL}:ver${env.BUILD_NUMBER}
|
|
||||||
"""
|
|
||||||
echo 'Remove Deploy Files'
|
|
||||||
sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*"
|
|
||||||
env.dockerBuildResult=true
|
|
||||||
} catch (error) {
|
|
||||||
print(error)
|
|
||||||
echo 'Remove Deploy Files'
|
|
||||||
sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*"
|
|
||||||
env.dockerBuildResult=false
|
|
||||||
currentBuild.result = 'FAILURE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
post {
|
|
||||||
success {
|
|
||||||
slackSend channel: '#jenkins', color: 'good', message: "The pipeline ${currentBuild.fullDisplayName} stage Docker Build successfully."
|
|
||||||
}
|
|
||||||
failure {
|
|
||||||
slackSend channel: '#jenkins', color: 'danger', message: "The pipeline ${currentBuild.fullDisplayName} stage Docker Build failed."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Deploy'){
|
|
||||||
when {
|
|
||||||
expression {
|
|
||||||
return env.dockerBuildResult ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
script{
|
|
||||||
try {
|
|
||||||
withAWS(credentials:"$AWS_CREDENTIALS") {
|
|
||||||
sh "aws ecs describe-task-definition --task-definition ${TASK_DEFINITION} --region ap-northeast-2 --query \"taskDefinition.{\"family\": family, \"containerDefinitions\": containerDefinitions, \"executionRoleArn\": executionRoleArn,\"requiresCompatibilities\": requiresCompatibilities}\" --output json > task-definition.json"
|
|
||||||
def task_repository_name = sh(
|
|
||||||
script:"""
|
|
||||||
echo \"${ECR_TASK_URL}\" | awk \'{ split(\$0, arr, \"/\"); print arr[2] }\'
|
|
||||||
""",
|
|
||||||
returnStdout: true
|
|
||||||
).trim()
|
|
||||||
sh "sudo sed -i \"9s/${task_repository_name}:.*/${task_repository_name}:ver${env.BUILD_NUMBER}\\\",/g\" task-definition.json"
|
|
||||||
sh "cat task-definition.json"
|
|
||||||
sh "aws ecs register-task-definition --cli-input-json file://task-definition.json --region ap-northeast-2"
|
|
||||||
sh "aws ecs update-service --cluster ${CLUSTER_NAME} --service ${SERVICE_NAME} --task-definition ${TASK_DEFINITION} --region ap-northeast-2"
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
print(error)
|
|
||||||
echo 'Remove Deploy Files'
|
|
||||||
sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*"
|
|
||||||
currentBuild.result = 'FAILURE'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
post {
|
|
||||||
success {
|
|
||||||
slackSend channel: '#jenkins', color: 'good', message: "The pipeline ${currentBuild.fullDisplayName} successfully."
|
|
||||||
}
|
|
||||||
failure {
|
|
||||||
slackSend channel: '#jenkins', color: 'danger', message: "The pipeline ${currentBuild.fullDisplayName} failed."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
version: 0.0
|
|
||||||
os: linux
|
|
||||||
|
|
||||||
files:
|
|
||||||
- source: /
|
|
||||||
destination: /home/ubuntu/admin/bo # 배포 파일 도착 폴더
|
|
||||||
overwrite: yes # 안돼면, 아래 hooks BeforeInstall 추가, 파일 삭제
|
|
||||||
permissions:
|
|
||||||
- object: /
|
|
||||||
pattern: "**" # 모든 파일의 권한 설정
|
|
||||||
owner: ubuntu
|
|
||||||
group: ubuntu
|
|
||||||
# mode: 755
|
|
||||||
|
|
||||||
hooks:
|
|
||||||
# BeforeInstall: "BeforeInstallHookFunctionName"
|
|
||||||
# AfterInstall: "AfterInstallHookFunctionName"
|
|
||||||
# ApplicationStop:
|
|
||||||
# - timeout: 2
|
|
||||||
ApplicationStart: # 파일이 도착 후 실행
|
|
||||||
- location: deploy.sh
|
|
||||||
timeout: 60 # 60 안에 실행, 60 뒤엔 배포 실패로 변경
|
|
||||||
runas: ubuntu
|
|
||||||
# ValidateService: # deplo 실행 후, 빌드파일이 배포가 되었다면, 서버체크
|
|
||||||
# - location: server-check.sh
|
|
||||||
# timeout: 60
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
REPOSITORY=/home/ubuntu/xit-framework/bo
|
|
||||||
cd $REPOSITORY
|
|
||||||
|
|
||||||
APP_NAME=xit-framework-bo
|
|
||||||
WAR_NAME=$(ls $REPOSITORY | grep '.war' | tail -n 1)
|
|
||||||
WAR_PATH=$REPOSITORY/$WAR_NAME
|
|
||||||
echo "> war 파일명: $WAR_NAME" >> /home/ubuntu/xit-framework/bo/deploy.log
|
|
||||||
echo "> war 파일명: $WAR_PATH" >> /home/ubuntu/xit-framework/bo/deploy.log
|
|
||||||
|
|
||||||
CURRENT_PID=$(pgrep -f $APP_NAME)
|
|
||||||
echo "> CURRENT_PID : $CURRENT_PID" >> /home/ubuntu/xit-framework/bo/deploy.log
|
|
||||||
|
|
||||||
if [ -z $CURRENT_PID ]
|
|
||||||
then
|
|
||||||
echo "> 종료할것 없음."
|
|
||||||
else
|
|
||||||
echo "> kill -9 $CURRENT_PID"
|
|
||||||
kill -9 $CURRENT_PID
|
|
||||||
sleep 5
|
|
||||||
fi
|
|
||||||
rm -rf work/
|
|
||||||
echo "> $WAR_PATH 배포"
|
|
||||||
nohup java -jar -Dspring.profiles.active=local $WAR_PATH > /dev/null 2> /dev/null < /dev/null &
|
|
@ -1,27 +0,0 @@
|
|||||||
version: "3"
|
|
||||||
services:
|
|
||||||
backend:
|
|
||||||
build:
|
|
||||||
context: .
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
ports:
|
|
||||||
- "8090:8090"
|
|
||||||
stdin_open: true
|
|
||||||
# volumes:
|
|
||||||
# - /app/node_modules
|
|
||||||
# - ./backend:/app
|
|
||||||
# environment:
|
|
||||||
# MYSQL_HOST: mysql
|
|
||||||
# MYSQL_USER: root
|
|
||||||
# MYSQL_ROOT_PASSWORD: johnahn777
|
|
||||||
# MYSQL_DATABASE: myapp
|
|
||||||
# MYSQL_PORT: 3306
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# nginx:
|
|
||||||
# restart: always
|
|
||||||
# build:
|
|
||||||
# dockerfile: ../Dockerfile
|
|
||||||
# context: ./nginx
|
|
||||||
# ports:
|
|
||||||
# - "3000:80"
|
|
Loading…
Reference in New Issue