ecsimsw
젠킨스 삽질 과정에서 배운 것들 본문
젠킨스 삽질 과정에서 배운 것들
Jenkins를 설정하면서 다음을 배웠다.
1. 리눅스 가상 메모리 설정 (스왑 파일 생성)
aws 프리티어 인스턴스가 지나치게 느려 메모리 문제임을 확인하고 가상 메모리를 설정하였다. 코틀린 빌드 시간이 말도 안되게 느렸고, 가상 메모리로 해당 문제를 해결할 수 있었다. (결국 용량 문제로 Medium으로 갈아탔다.. )
2. 리눅스 포트포워딩 (iptables)
젠킨스 도커 컨테이너 host port를 9090으로 열었었는데 보안 규정상 9090을 사용할 수 없었고, 이 참에 포트포워딩도 공부할겸 적용해서 문제를 해결했다.
## 요청 포트를 forwarding하여 내부 포트로 리다이렉트한다.
sudo iptables -t nat -A PREROUTING -p tcp --dport [요청 포트] -j REDIRECT --to-port [내부 포트]
## iptables 확인 with Line number
sudo iptables -t -nat -L --line-numbers
## 설정 삭제
sudo iptables -t nat -D PREROUTING [Line number]
3. 인터넷 연결 체크
요청이 제대로 가고, 응답이 오는지 확인하기 위해 써먹었던 명령어들이다.
curl
telnet
tcpdump
4. 도커 컨테이너 접속(docker exec)
젠킨스 서버의 java 버젼을 확인하기 위해 알아보았다.
docker exec -it [containerId] /bin/bash
$ docker exec -it ad740b3002fb /bin/bash
jenkins@ad740b3002fb:/$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.292-b10, mixed mode)
5. Jenkins 무료 버전은 Java 9 까지만..
자바 버전 문제로 빌드 오류가 났다.
java -jar build/libs/sucotalk-0.0.1-SNAPSHOT.jar Exception in thread "main" java.lang.UnsupportedClassVersionError: com/suco/sucotalk/SucotalkApplicationKt has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 |
아래 방식으로 Jenkins JDK 버전을 선택할 수 있고 Java 9 이후로는 무료 버전에서 지원하지 않는다는 것을 확인했다.
Jenkins 설정 > Global Tool Configuration > JDK > JDK installation
6. 코틀린 Java 버전, JVM target 변경
build.gradle.kts 에서 Java 버전(JVM target)을 변경할 수 있다. 예시에서는 JVM target을 1.8로 변경하였다.
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
'Architecture > CICD' 카테고리의 다른 글
Github actions, 디렉토리 구조 자동 작성 (0) | 2023.02.25 |
---|---|
Jenkins trigger filtering by tag name (0) | 2022.10.03 |
젠킨스 jdk 버전 11로 올리는 방법 (2) | 2021.08.07 |
Comments