diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 601e1e3abd46ab3f97c67d5e4a475f8fd6262afc..b8738287d78153fb73851c2acdb8813020b8f985 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -49,3 +49,4 @@ include: - local: '/scripts/ci/jobs/clang-sanitizer.yml' - local: '/scripts/ci/jobs/clang-tidy.yml' - local: '/scripts/ci/jobs/code-quality.yml' + - local: '/scripts/ci/jobs/meta.yml' diff --git a/scripts/ci/jobs/build-docs.yml b/scripts/ci/jobs/build-docs.yml index a6c15e92e198d1ed2dfef0adccb8be0b9a3a90fc..99d3beea632514aba2fb2ed7ac57dfdf9f4dc481 100644 --- a/scripts/ci/jobs/build-docs.yml +++ b/scripts/ci/jobs/build-docs.yml @@ -2,13 +2,12 @@ build docs: stage: build image: name: $CONTAINER_GCC_IMAGE - extends: - - .defaults + needs: + - job: meta before_script: # HACK to easier linking to the generated pages - echo '<meta http-equiv="REFRESH" content="0;URL=build/docs/index.html">' >> Doxygen.html - - git fetch --tags - mkdir -p build - cd build diff --git a/scripts/ci/jobs/meta.yml b/scripts/ci/jobs/meta.yml new file mode 100644 index 0000000000000000000000000000000000000000..213210e4fe1c0d3b252a7949f4cf936046f75c84 --- /dev/null +++ b/scripts/ci/jobs/meta.yml @@ -0,0 +1,11 @@ +meta: + stage: .pre + tags: + - envinf1-shell + script: + - git fetch --depth 500 + - echo "OGS_VERSION=${CI_COMMIT_TAG:-`git describe --tags --long --dirty --always`}" >> build.env + - cat build.env + artifacts: + reports: + dotenv: build.env diff --git a/scripts/cmake/ProjectSetup.cmake b/scripts/cmake/ProjectSetup.cmake index 0f0f6f5eb46f2b6d76ed3499808ff043e7f3820e..33bbeba2e13a47ae815180611b06fa10ad5822a9 100644 --- a/scripts/cmake/ProjectSetup.cmake +++ b/scripts/cmake/ProjectSetup.cmake @@ -33,46 +33,51 @@ if(NOT IS_GIT_REPO) return() endif() -# Get version info from Git, implementation based on -# https://github.com/tomtom-international/cpp-dependencies -execute_process( - COMMAND ${GIT_EXECUTABLE} describe --tags --long --dirty --always - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - RESULT_VARIABLE DESCRIBE_RESULT - OUTPUT_VARIABLE DESCRIBE_STDOUT -) -if(DESCRIBE_RESULT EQUAL 0) - string(STRIP "${DESCRIBE_STDOUT}" DESCRIBE_STDOUT) - message(STATUS "Git reported this project's version as '${DESCRIBE_STDOUT}'") - if(DESCRIBE_STDOUT MATCHES "^(.*)-(dirty)$") - set(DESCRIBE_DIRTY "${CMAKE_MATCH_2}") - set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}") - endif() - if(DESCRIBE_STDOUT MATCHES "^([0-9a-f]+)$") - set(DESCRIBE_COMMIT_NAME "${CMAKE_MATCH_1}") - set(DESCRIBE_STDOUT "") - elseif(DESCRIBE_STDOUT MATCHES "^(.*)-g([0-9a-f]+)$") - set(DESCRIBE_COMMIT_NAME "g${CMAKE_MATCH_2}") - set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}") - endif() - if(DESCRIBE_STDOUT MATCHES "^(.*)-([0-9]+)$") - set(DESCRIBE_COMMIT_COUNT "${CMAKE_MATCH_2}") - set(DESCRIBE_TAG "${CMAKE_MATCH_1}") - set(DESCRIBE_STDOUT "") - endif() +if(DEFINED ENV{OGS_VERSION}) + set(OGS_VERSION $ENV{OGS_VERSION}) + message(STATUS "OGS VERSION: ${OGS_VERSION} (set via environment)") +else() + # Get version info from Git, implementation based on + # https://github.com/tomtom-international/cpp-dependencies + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags --long --dirty --always + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + RESULT_VARIABLE DESCRIBE_RESULT + OUTPUT_VARIABLE DESCRIBE_STDOUT + ) + if(DESCRIBE_RESULT EQUAL 0) + string(STRIP "${DESCRIBE_STDOUT}" DESCRIBE_STDOUT) + message(STATUS "Git reported this project's version as '${DESCRIBE_STDOUT}'") + if(DESCRIBE_STDOUT MATCHES "^(.*)-(dirty)$") + set(DESCRIBE_DIRTY "${CMAKE_MATCH_2}") + set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}") + endif() + if(DESCRIBE_STDOUT MATCHES "^([0-9a-f]+)$") + set(DESCRIBE_COMMIT_NAME "${CMAKE_MATCH_1}") + set(DESCRIBE_STDOUT "") + elseif(DESCRIBE_STDOUT MATCHES "^(.*)-g([0-9a-f]+)$") + set(DESCRIBE_COMMIT_NAME "g${CMAKE_MATCH_2}") + set(DESCRIBE_STDOUT "${CMAKE_MATCH_1}") + endif() + if(DESCRIBE_STDOUT MATCHES "^(.*)-([0-9]+)$") + set(DESCRIBE_COMMIT_COUNT "${CMAKE_MATCH_2}") + set(DESCRIBE_TAG "${CMAKE_MATCH_1}") + set(DESCRIBE_STDOUT "") + endif() - set(OGS_VERSION ${DESCRIBE_TAG}) - if(DESCRIBE_COMMIT_COUNT GREATER 0) - set(OGS_VERSION "${OGS_VERSION}-${DESCRIBE_COMMIT_COUNT}-${DESCRIBE_COMMIT_NAME}") - endif() + set(OGS_VERSION ${DESCRIBE_TAG}) + if(DESCRIBE_COMMIT_COUNT GREATER 0) + set(OGS_VERSION "${OGS_VERSION}-${DESCRIBE_COMMIT_COUNT}-${DESCRIBE_COMMIT_NAME}") + endif() - if(DESCRIBE_DIRTY) - string(TIMESTAMP DESCRIBE_DIRTY_TIMESTAMP "%Y%m%d%H%M%S" UTC) - set(OGS_VERSION "${OGS_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}") + if(DESCRIBE_DIRTY) + string(TIMESTAMP DESCRIBE_DIRTY_TIMESTAMP "%Y%m%d%H%M%S" UTC) + set(OGS_VERSION "${OGS_VERSION}.dirty.${DESCRIBE_DIRTY_TIMESTAMP}") + endif() + message(STATUS "OGS VERSION: ${OGS_VERSION}") + else() + message(WARNING "Git repository contains no tags! Please run: git fetch --tags") endif() - message(STATUS "OGS VERSION: ${OGS_VERSION}") -else() - message(WARNING "Git repository contains no tags! Please run: git fetch --tags") endif() # Get git commit