Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

PR Builder 의 JDK Version 을 13 이상으로 맞춘다. #60

Open
FrancescoJo opened this issue Jul 18, 2021 · 1 comment
Open

PR Builder 의 JDK Version 을 13 이상으로 맞춘다. #60

FrancescoJo opened this issue Jul 18, 2021 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@FrancescoJo
Copy link
Collaborator

FrancescoJo commented Jul 18, 2021

개요

Jenkins PR builder 의 오류 해결

AS-IS

jdk 13 으로 빌드한 클래스 파일의 테스트를 jdk 8 에서 실행할 수 없음

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'kr.flab.wiki.core.testcase.document.DocumentServiceTest$제목을 검색했을 때'.
        ...
Caused by: java.lang.UnsupportedClassVersionError: kr/flab/wiki/core/testcase/document/DocumentServiceTest$제목을 검색했을 때 has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	...

사용중인 jenkins docker image 의 설정 내용

ubuntu@ip-172-31-66-205:/var$ sudo docker image inspect jenkins/jenkins
[
    {
            ...
            "Env": [
                "PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=en_US.UTF-8",
                "LANGUAGE=en_US:en",
                "LC_ALL=en_US.UTF-8",
                "JAVA_VERSION=jdk8u292-b10",
                "JAVA_HOME=/opt/java/openjdk",
                "JENKINS_HOME=/var/jenkins_home",
                "JENKINS_SLAVE_AGENT_PORT=50000",
                "REF=/usr/share/jenkins/ref",
                "JENKINS_VERSION=2.296",
                "JENKINS_UC=https://updates.jenkins.io",
                "JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental",
                "JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals",
                "COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log"
            ],
            ...
]

문제 해결 방안

jenkins 가 동작중인 docker image 내부의 jdk version 을 jdk 13 이상으로 올린다.

TO-BE

PR builder 의 빌드실패 문제를 해결해 망가진 Continuous Integration 프로세스를 개선한다.

@FrancescoJo FrancescoJo added the bug Something isn't working label Jul 18, 2021
@FrancescoJo
Copy link
Collaborator Author

FrancescoJo commented Jul 18, 2021

진행에 도움이 될 지도 몰라 troubleshoot 과정 첨부합니다.

  1. ssh 로 접속
  2. /home/ubuntu/jenkins 디렉토리에 Dockerfile 이 있는걸로 보아 docker 로 실행중임을 확인
  3. docker ps 로 docker 인스턴스 목록 확인
  4. docker exec -it $IMAGE_NAME /bin/sh 로 인스턴스 쉘에 접근
  5. jenkins 빌드 실행로그의 [awesome-wiki-PRBuilder] $ /var/jenkins_home/workspace/awesome-wiki-PRBuilder/gradlew clean test detekt assemble -PbuildConfig=ALPHA 그대로 실행
  6. 테스트 실패 재현
  7. docker image 내의 file:///var/jenkins_home/workspace/awesome-wiki-PRBuilder/app-core/build/reports/tests/test/index.html 파일 내용 분석
  8. <a href 로 시작하는 모든 anchor link 의 파일들 검색후 cat 로 내용 출력
  9. 런타임 에러 실행 로그 확인
  10. 로컬 PC 에서 환경 jdk 8 로 맞추고 오류 재현 시도
  11. 오류 재현 성공
  12. docker image inspect 명령으로 PR builder 실행환경의 jvm version 을 확인
  13. 문제 최종 확인 완료

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants