본문 바로가기

개발노트/JAVA

CodeBuild 에서 runtime 으로 jdk 17 (corretto17) 사용하기

가장 최신 LTS JDK 인 17 버전으로 개발한 프로젝트가 있는데, CodeBuild 는 JDK 11 까지만 지원하고 있어서, 해당 프로젝트를 CodeBuild 를 통해 빌드를 할 수가 없다.

곧 JDK 17 도 지원해주겠지만, 준비된 PR(https://github.com/aws/aws-codebuild-docker-images/pull/495) 은 있지만 아직 release 되기까지는 시간이 좀 걸릴 것 같다.

해당 PR 을 참고하여, 현재 내 프로젝트에서 CodeBuild 를 통해 corretto17 을 이용하여 Build 를 할 수 있도록 workaround 를 적용하고 있다.

version: 0.2

env:
  variables:
    TZ: "Asia/Seoul"
    
phases:
  install:
    runtime-versions:
      java: corretto11
    run-as: root
    commands:
      - export JAVA_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64"
      - export JDK_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64"
      - export JRE_17_HOME="/usr/lib/jvm/java-17-amazon-corretto.x86_64"
      - export JAVA_HOME="$JAVA_17_HOME"
      - export JRE_HOME="$JRE_17_HOME"
      - export JDK_HOME="$JDK_17_HOME"
      - |-
        export GNUPGHOME="$(mktemp -d)" \
            && curl -fL -o corretto.key https://yum.corretto.aws/corretto.key \
            && gpg --batch --import corretto.key \
            && gpg --batch --export --armor '6DC3636DAE534049C8B94623A122542AB04F24E3' > corretto.key \
            && rpm --import corretto.key \
            && rm -r "$GNUPGHOME" corretto.key \
            && curl -fL -o /etc/yum.repos.d/corretto.repo https://yum.corretto.aws/corretto.repo \
            && grep -q '^gpgcheck=1' /etc/yum.repos.d/corretto.repo \
            && yum install -y java-17-amazon-corretto-devel \
            && (find /usr/lib/jvm/java-17-amazon-corretto.x86_64 -name src.zip -delete || true) \
            && yum install -y fontconfig
      - |-
        for tool_path in "$JAVA_HOME"/bin/*;
         do tool=`basename "$tool_path"`;
          if [ $tool != 'java-rmi.cgi' ];
          then
           rm -f /usr/bin/$tool /var/lib/alternatives/$tool \
            && update-alternatives --install /usr/bin/$tool $tool $tool_path 20000;
          fi;
        done

 

 

 

그러면 아래와 같이 corretto 17 이 설치되고, install 이후 단계에서 corretto 17 을 사용할 수 있게 된다.

반응형