FROM eclipse-temurin:17-jre-focal
# user 추가 (m은 홈 디렉토리 생성, s는 사용자가 사용할 쉘 지정)
RUN useradd -ms /bin/bash xeropise
USER xeropise
WORKDIR /home/xeropise
COPY ./build/libs/Nexon-NewName-Auction-Copy.jar app.jar
ENTRYPOINT exec java -jar /home/xeropise/app.jar
pipeline {
agent any
tools {
jdk 'jdk17'
}
environment {
JAVA_HOME = 'tool jdk17'
IMAGE_NAME = '${env.BRANCH_NAME.replace("/", "_")}_${getGitCommitPretty()}'
}
stages {
stage('checkout') {
steps {
checkout scm
}
}
stage('build') {
steps {
sh 'java -version'
sh './gradlew clean build'
}
}
stage('Push image') {
steps {
script {
docker.withRegistry('https://166132032896.dkr.ecr.ap-northeast-2.amazonaws.com', 'ecr:ap-northeast-2:Aws-Accesskey') {
app = docker.build("166132032896.dkr.ecr.ap-northeast-2.amazonaws.com/new_name_auction")
app.push("latest_${env.BUILD_ID}")
}
sh """docker rmi 166132032896.dkr.ecr.ap-northeast-2.amazonaws.com/new_name_auction:latest_${env.BUILD_ID}"""
}
}
}
}
}
가능하다. 방법으로는 여러 방법을 고려할 수 있는데 젠킨스가 서비스 중인 EC2에 AWS CLI와 Docker를 사용하도록 볼륨 설정을 하면 된다.
하지만 AWS CLI의 경우, 도커에 올라와 있으면 Jenkins 이미지에 AWS CLI 혹은 도커를 설치하는 스크립트를 작성하여 그 이미지로 빌드하여야 한다. (귀찮다.. 링크를 확인해봐라 이분이 얼마나 고생을 했는지)
그렇다고 젠킨스 컨테이너에 붙어 직접 설치하려고 하니, 온가지의 권한 문제가 따라와서 날 힘들게 한다. 그래서 위의 방법을 택했다. (덕분에 4시간 헤딩했다.)