3

BUILD_NUMBER 환경 변수를 알고 있습니다. 그러나 실수하지 않는 한이 변수는 모든 프로젝트에서 공유되는 변수입니다. 이 문제는 두 에이전트가 작업을 실행하는 경우 한 스크립트가 다른 프로젝트가 다른 프로젝트에 대해 업데이트 한 후에 현재 프로젝트의 빌드 번호를 사용하려고 시도 할 수 있기 때문에 문제가됩니다.젠킨스에서 현재 프로젝트의 빌드 번호를 어떻게 알 수 있습니까?

  • 작업 J 1 개시 일부 스크립트 S를 실행 : 여기

    은 예시적인 시나리오이다. BUILD_NUMBER 지금, 500
  • 누군가가 수동으로 작업 을 시작의 말을하자, 현재 계속 실행되고 지금 말하자면, 완전히 다른 무언가에 BUILD_NUMBER을 설정 J, 750
  • 스크립트 S입니다 BUILD_NUMBER을 실제로 사용하는 지점에 도달하여 750으로 설정됩니다 (작업 J의 경우 불가능한 값, 최대 500 임).

이 내용을 올바르게 수정합니까? 그렇다면이 문제를 어떻게 해결할 수 있습니까?

+1

귀하의 이해가 정확하지 않습니다. 당신은 잠시 잠을 자고 BUILD_NUMBER를 인쇄하는 두 가지 일을 설정하지 않으시겠습니까? –

+0

@ 잭 Leow :하지만 그건 정확히 내가 한 짓이야! 매우 이상합니다. 나는 다른 설명을 찾아야 할 것 같아. –

답변

8

BUILD_NUMBER는 시스템에 글로벌 없습니다. 각 직업에 국한되어 있습니다. 예에서 J1과 J2는 BUILD_NUMBER (J1 = 500, J2-750) 값이 다르며 작업 기간 동안 일정한 상태로 유지됩니다.

+0

당신이 옳았기를 바랍니다. 그러나 그 경우, 나는 내가 본 것을 어떻게 볼 수 있는지 이해하는데 큰 어려움을 겪고있다. (즉, J1 내에서 실행되는 스크립트는 BU1D_NUMBER로 출력을 내 보낸다. 671, J1의 빌드 번호는 305 ... 한편, * J2 *의 최신 빌드 번호는 671입니다. 나는 다른 설명이 있어야한다고 생각한다; 어떤 아이디어 일 수 있니? –

+0

나는 적어도 최신 Jenkins에게 확실합니다. BUILD_NUMBER를 여러 직업에서 사용하며 항상 올바르게 설정됩니다. 한 가지 방법은 "Windows 배치 실행 명령"을 삽입하고 명령을 "설정"하는 것입니다. 그러면 변수가 콘솔로 덤프되고 값이 무엇인지 알 수 있습니다. BUILD_NUMBER가 올바르게 평가되지 않는 컨텍스트 또는 다른 곳에서 코드 및 매개 변수 확인을 실행할 수있는 플러그인이 있음에 유의하십시오. –

+0

하지만 당신의 일은 평행하게 돌아가는가? –

4

당신이 얻을 수있는 최신 (완료 또는 현재 실행)와 숫자 구축 :
${BUILD_NUMBER}

당신은 모두 사용할 수 있습니다 http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/buildNumber
하거나 작업 자체 내에서
, 당신은 환경 변수를 사용할 수 있습니다
/lastStableBuild/
/lastSuccessfulBuild/
/lastFailedBuild/: 너무 좋아 다른 영구 링크, 등등.

당신이 플러그인과 같은 Next Build Number과 빌드 번호를 정의하지 않는

, 당신의 다음 빌드 번호는 항상 최신 빌드 번호에 증가 될 것입니다.

빌드 번호는 인 경우 입니다. 그것들은 글로벌 환경 변수가 아닙니다.
모든 작업이 실행될 때마다 기존 환경 변수를 새 세션으로 복사/상속합니다.그런 다음 Jenkins/Hudson은 새로운 세션에 모든 작업 매개 변수와 추가 변수 (${BUILD_NUMBER} 포함)를 추가합니다. 그것들은 해당 세션의 지속 기간 동안 (즉, 작업 실행 기간 동안) 환경 변수로만 사용할 수 있습니다. 작업이 완료되면이 세션이 (세션을 위해 생성 된 모든 추가 변수와 함께)로 파괴됩니다.

당신 수 없습니다에 액세스 환경을 다른 작업 - 실행/세션에서 하나의 작업 - 실행/세션의 변수. 그러나 일 수 있지만 제공된 URL 방법을 통해 다른 작업의 /lastBuild/buildNumber에 액세스하십시오. 동일한 방법으로 /lastBuild/buildTimestamp에 액세스 할 수도 있습니다. 작업에 액세스하려면

다른 작업의 매개 변수, 당신은 사용할 수 있습니다
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/json
또는 http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/xml

하지만 당신은 당신이 필요로하는 무엇을 출력을 구문 분석해야합니다.

관련 문제