1. Jenkins docker 설치
- 8080포트는 사용중이므로 9091 로 변경하고 도커 내부에서는 8080포트를 사용하도록 함
- 접속 : localhost:9091
- sudo docker run --name jenkins-docker -d -p 9091:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home -u root jenkins/jenkins:lts
2. jenkins tools 설정
- gradle 설정
- jdk 설정
- aws 에서 제공하는 jdk17 사용( https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/downloads-list.html )
- Subdirectory of extracted archive 설정은 압축 해제된 디렉토리명을 입력해야 함
- docker 경로 : /var/jenkins_home/tools/hudson.model.JDK/{설정JDK Name} 하위에 있음
3. Item 설정
- Item 이름 설정
- pipeline으로 생성
4. Item build 구성 설정
- Pipeline 항목에서 Pipeline script 선택
- script 내용
- jenkins tools 에 설정한 gradle, jdk Name 을 사용하여 tools 설정
- git clone 과 build 2 단계
pipeline {
agent any
tools {
gradle 'gradle'
jdk 'jdk17'
}
environment {
JAVA_HOME = "tool jdk17"
}
stages {
stage('Git-clone') {
steps {
git branch: 'develop', url: 'git address...'
}
}
stage('Build') {
steps {
sh 'gradle init'
withGradle {
sh 'gradle wrapper clean build'
}
}
}
}
}
5. Build 확인
- 해당 프로젝트 내에서 '지금 빌드' 선택
6. 문제 상황 해결
- local redis 접속 문제 : DENIED Redis is running in protected mode because protected mode is enabled ...
- jenkins는 docker container 로 실행되고 redis는 로컬에서 실행되는 상황
- protected mode를 해제 하기 위해 redis password 설정
- redis.conf 파일에 requirepass 항목으로 설정
- application.yml에 password 설정
- Configuration 에서 접속 설정 시 password 설정
- lettuce @Value("${spring.data.redis.host}")
private String host;
@Value("${spring.data.redis.port}")
private int port;
@Value("${spring.data.redis.password}")
private String password;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(port);
redisStandaloneConfiguration.setPassword(password);
return new LettuceConnectionFactory(redisStandaloneConfiguration);
} - redisson
- @Bean
public RedissonClient redissonClient(){
Config config = new Config();
config.useSingleServer()
.setAddress("redis://"+ this.host+":"+ this.port)
.setPassword(password);
return Redisson.create(config);
}
- @Bean
- lettuce @Value("${spring.data.redis.host}")
- Connection refused 에러
- host : localhost -> host.docker.internal 로 변경