← 글 목록

notes

Jenkins - Environment Injector (env)

Jenkins Environment Injector로 환경변수 주입·관리하는 설정 메모.

  • 직접 입력은 빠르지만 설정 화면에 값이 다 보인다
  • 파일로 빼 두면 저장소 밖에서 값을 관리할 수 있다
  • NEXT_PUBLIC_ 값은 숨겨도 브라우저 번들에 들어간다

설정 순서

플러그인은 Jenkins 관리 > Plugins > Available plugins 에서 EnvInject 를 찾아 깔면 된다. 그다음 프로젝트 Configure 로 들어가서 Build Environment 섹션의 Inject environment variables 를 체크한다. 값을 넣는 방법은 직접 쓰는 것과 파일을 읽는 것 두 가지다.

A case, 직접 입력

Properties Content 칸에 KEY=VALUE 를 한 줄씩 쓴다. 제일 빠르지만 작업 설정을 볼 수 있는 사람은 값도 다 본다.

NEXT_PUBLIC_API_URL=http://localhost:3000
NEXT_PUBLIC_NAVER_MAP_ID_KEY=xxxxx
NEXT_PUBLIC_NAVER_MAP_SECRET_KEY=xxxxx

B case, Properties 파일

Properties File Path 에 env/smart.properties 같은 경로를 적으면 그 파일 내용을 변수로 읽는다. 값은 저장소 밖에서 관리하고, 빌드 셸에서 .env.production 파일로 옮겨 쓴다.

echo "환경 변수 확인: $NEXT_PUBLIC_API_URL"

# .env 파일 생성
echo "NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL" > apps/smart/.env.production
echo "NEXT_PUBLIC_NAVER_MAP_ID_KEY=$NEXT_PUBLIC_NAVER_MAP_ID_KEY" >> apps/smart/.env.production
echo "NEXT_PUBLIC_NAVER_MAP_SECRET_KEY=$NEXT_PUBLIC_NAVER_MAP_SECRET_KEY" >> apps/smart/.env.production

비밀값은 Credentials 로

중요한 값은 Jenkins 관리 > Credentials 에서 Add Credentials > Secret text 로 넣고 변수 이름으로 꺼내 쓴다. 이렇게 하면 콘솔 로그에서도 값이 가려져 나온다.

API_KEY=${API_KEY_CREDENTIAL}

하나 조심할 게 있다. NEXT_PUBLIC_ 이 붙은 값은 빌드할 때 클라이언트 번들에 그대로 들어가서 브라우저에서 다 보인다. Credentials 로 숨겨도 이름에 NEXT_PUBLIC_ 을 붙이면 소용없다. 진짜 비밀값은 서버에서만 읽는 변수로 둔다.

요즘은

EnvInject 는 지금 관리자를 찾는 플러그인으로 올라와 있다. 아직 쓸 수는 있지만 Pipeline 으로 옮길 거면 environment 블록이랑 credentials() 로 처리하는 게 더 흔하다.

environment {
    NEXT_PUBLIC_API_URL = 'https://api.example.com'
    API_KEY = credentials('api-key-credential')
}