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 설정

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);
                }
  • Connection refused 에러
    • host : localhost -> host.docker.internal 로 변경

 

 

+ Recent posts