전체 글 191

Jenkins 빌드 후 조치 call url

Jekins 빌드 결과에 따른 api 호출 방법을 작성했습니다. 실행시 자동 설정되는 환경변수 값을 이용했습니다. # 잡 실행 결과 조회 BUILD_STATUS=$(curl -k --user 유저명:키 --silent http://jenkinsserver:port/job/$JOB_NAME/$BUILD_NUMBER/api/json | jq -r '.result') # 잡 실행 결과 실패시 api호출 if [ $BUILD_STATUS != 'SUCCESS' ] then curl -X POST http://apiserver:8080/api/send/agit \ -H 'Content-Type: application/json' \ -d '{"type":"", "channel":"develop", "text":"#..

SERVER 2023.07.14

jenkins algorithm negotiation fail SSH

Jenkins 의 publish over ssh 플러그인 사용시 algorithm negotiation fail 에러 발생에 대해 대응 방법을 설명합니다. 최신 버전의 Jenkins 사용시 Publish over SSH 사용중 에러가 발생하는데요. 이에 여러 방안을 찾았으나, 젠킨슨 깃허브에 23년 6월 말 일자로 이슈업되었고 아직 댓글로 안달린것으로 확인했습니다. 결국 답은 플러그인 버전을 낮추는 것이었네요.. 결론 : 두개의 라이브러리를 다운그레이드 버전 낮추기 Publish over SSH 1.25 -> 1.24 JSch dependency 0.2.8-65.v052c39de79b_2 -> 0.1.55.61.va_e9ee26616e7 버전 낮추는 방법 아래 사이트에서 라이브러리 검색 후 설치 http..

SERVER 2023.07.14

파일 거꾸로 읽기

파일을 마지막 라인부터 읽어와서 문자가 있는 라인을 추출합니다. import org.apache.commons.io.input.ReversedLinesFileReader; import org.junit.jupiter.api.Test; import org.springframework.util.StringUtils; import java.io.File; import java.io.IOException; String filePath = "test.log"; String lastLine = ""; // 파일을 거꾸로 읽습니다. try (ReversedLinesFileReader reader = new ReversedLinesFileReader(new File(filePath))){ // 공백, 엔터를 제외한 문..

JAVA/JAVA 2023.05.26

동적 빈 생성

Spring에서 제공하는 ConfigurableListableBeanFactory 클래스를 이용하여 동적으로 빈 등록이 가능하다. 동적 생성할 클래스 선언 public class DynamicClass { // 빈 등록시 생성자 호출여부 확인용 public DynamicClass() { System.out.println("생성자 호출!"); } public void func(){ System.out.println("Test"); } } 테스트 코드를 통한 동적 빈 생성 및 조회 @SpringBootTest public class DynamicClassTest { @Test void test(){ StaticApplicationContext staticApplicationContext = new Stati..

Default Method(인터페이스 디폴트 메소드)

추상 클래스내 함수 구현 처럼 Interface 클래스 내에 함수를 선언 및 구현할 수 있도록 한다. Interface 구현 클래스에서 Override 할 수 있다. 왜? 나왔을까? "하위 호환성" 때문에 등장 인터페이스에 신규 함수 선언시 기존에 상속받아 구현하던 클래스에 모두 빨간불이 들어와 직접 구현을해야하는 상황을 방지하기 위해 등장함. 간단 코드로 보기 public class DefaultClass{ public interface TestInterface { // 선언 후 구현까지 해야한다. default void defaultFunction(){ System.out.println("this is default function"); } } private static class SubClass11..

JAVA/JAVA 2021.07.07

추상클래스를 사용한 통합 배치 관리 프로그램

배치 병렬 처리를 위한 쓰레드 빈 생성 클래스 @Configuration @EnableAsync public class ThreadConfig { @Bean(name="jobExecutor") public Executor jobExecutor(){ ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(5); taskExecutor.setMaxPoolSize(10); taskExecutor.setQueueCapacity(30); taskExecutor.setThreadNamePrefix("jobThead-"); taskExecutor.initialize(); return taskExecu..