Skip to content

Commit bb3159b

Browse files
authored
feat: Add build information to clio_server --version (#2893)
1 parent c0c5c14 commit bb3159b

File tree

5 files changed

+82
-28
lines changed

5 files changed

+82
-28
lines changed

cmake/ClioVersion.cmake

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
find_package(Git REQUIRED)
22

3+
if (DEFINED ENV{GITHUB_BRANCH_NAME})
4+
set(GIT_BUILD_BRANCH $ENV{GITHUB_BRANCH_NAME})
5+
set(GIT_COMMIT_HASH $ENV{GITHUB_HEAD_SHA})
6+
else ()
7+
set(GIT_COMMAND branch --show-current)
8+
execute_process(
9+
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_BUILD_BRANCH
10+
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY
11+
)
12+
13+
set(GIT_COMMAND rev-parse HEAD)
14+
execute_process(
15+
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_HASH
16+
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY
17+
)
18+
endif ()
19+
20+
set(GIT_COMMAND show -s --date=format:%Y%m%d%H%M%S --format=%cd)
21+
execute_process(
22+
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE BUILD_DATE
23+
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY
24+
)
25+
26+
message(STATUS "Git branch: ${GIT_BUILD_BRANCH}")
27+
message(STATUS "Git commit hash: ${GIT_COMMIT_HASH}")
28+
message(STATUS "Build date: ${BUILD_DATE}")
29+
330
set(GIT_COMMAND describe --tags --exact-match)
431
execute_process(
532
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND}
@@ -12,38 +39,16 @@ execute_process(
1239

1340
if (RC EQUAL 0)
1441
message(STATUS "Found tag '${TAG}' in git. Will use it as Clio version")
42+
1543
set(CLIO_VERSION "${TAG}")
1644
set(DOC_CLIO_VERSION "${TAG}")
1745
else ()
1846
message(STATUS "Error finding tag in git: ${ERR}")
19-
message(STATUS "Will use 'YYYYMMDDHMS-<branch>-<git-rev>' as Clio version")
47+
message(STATUS "Will use 'YYYYMMDDHMS-<branch>-<git short rev>' as Clio version")
2048

21-
set(GIT_COMMAND show -s --date=format:%Y%m%d%H%M%S --format=%cd)
22-
execute_process(
23-
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE DATE
24-
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY
25-
)
49+
string(SUBSTRING ${GIT_COMMIT_HASH} 0 7 GIT_COMMIT_HASH_SHORT)
2650

27-
if (DEFINED ENV{GITHUB_BRANCH_NAME})
28-
# Please, see .github/actions/cmake/action.yml for details
29-
set(BRANCH $ENV{GITHUB_BRANCH_NAME})
30-
set(GITHUB_HEAD_SHA $ENV{GITHUB_HEAD_SHA})
31-
string(SUBSTRING ${GITHUB_HEAD_SHA} 0 7 REV)
32-
else ()
33-
set(GIT_COMMAND branch --show-current)
34-
execute_process(
35-
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE BRANCH
36-
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY
37-
)
38-
39-
set(GIT_COMMAND rev-parse --short HEAD)
40-
execute_process(
41-
COMMAND ${GIT_EXECUTABLE} ${GIT_COMMAND} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE REV
42-
OUTPUT_STRIP_TRAILING_WHITESPACE COMMAND_ERROR_IS_FATAL ANY
43-
)
44-
endif ()
45-
46-
set(CLIO_VERSION "${DATE}-${BRANCH}-${REV}")
51+
set(CLIO_VERSION "${BUILD_DATE}-${GIT_BUILD_BRANCH}-${GIT_COMMIT_HASH_SHORT}")
4752
set(DOC_CLIO_VERSION "develop")
4853
endif ()
4954

src/app/CliArgs.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ CliArgs::parse(int argc, char const* argv[])
7777
}
7878

7979
if (parsed.contains("version")) {
80-
std::cout << util::build::getClioFullVersionString() << '\n';
80+
std::cout << util::build::getClioFullVersionString() << '\n'
81+
<< "Git commit hash: " << util::build::getGitCommitHash() << '\n'
82+
<< "Git build branch: " << util::build::getGitBuildBranch() << '\n'
83+
<< "Build date: " << util::build::getBuildDate() << '\n';
8184
return Action{Action::Exit{EXIT_SUCCESS}};
8285
}
8386

src/util/build/Build.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,20 @@ namespace util::build {
2626
#ifndef CLIO_VERSION
2727
#error "CLIO_VERSION must be defined"
2828
#endif
29+
#ifndef GIT_COMMIT_HASH
30+
#error "GIT_COMMIT_HASH must be defined"
31+
#endif
32+
#ifndef GIT_BUILD_BRANCH
33+
#error "GIT_BUILD_BRANCH must be defined"
34+
#endif
35+
#ifndef BUILD_DATE
36+
#error "BUILD_DATE must be defined"
37+
#endif
38+
2939
static constexpr char kVERSION_STRING[] = CLIO_VERSION;
40+
static constexpr char kGIT_COMMIT_HASH[] = GIT_COMMIT_HASH;
41+
static constexpr char kGIT_BUILD_BRANCH[] = GIT_BUILD_BRANCH;
42+
static constexpr char kBUILD_DATE[] = BUILD_DATE;
3043

3144
std::string const&
3245
getClioVersionString()
@@ -42,4 +55,25 @@ getClioFullVersionString()
4255
return value;
4356
}
4457

58+
std::string const&
59+
getGitCommitHash()
60+
{
61+
static std::string const value = kGIT_COMMIT_HASH; // NOLINT(readability-identifier-naming)
62+
return value;
63+
}
64+
65+
std::string const&
66+
getGitBuildBranch()
67+
{
68+
static std::string const value = kGIT_BUILD_BRANCH; // NOLINT(readability-identifier-naming)
69+
return value;
70+
}
71+
72+
std::string const&
73+
getBuildDate()
74+
{
75+
static std::string const value = kBUILD_DATE; // NOLINT(readability-identifier-naming)
76+
return value;
77+
}
78+
4579
} // namespace util::build

src/util/build/Build.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,13 @@ getClioVersionString();
2929
std::string const&
3030
getClioFullVersionString();
3131

32+
std::string const&
33+
getGitCommitHash();
34+
35+
std::string const&
36+
getGitBuildBranch();
37+
38+
std::string const&
39+
getBuildDate();
40+
3241
} // namespace util::build

src/util/build/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake/ClioVersion.cmake)
33
add_library(clio_build_version)
44
target_sources(clio_build_version PRIVATE Build.cpp)
55
target_link_libraries(clio_build_version PUBLIC clio_options)
6-
target_compile_definitions(clio_build_version PRIVATE CLIO_VERSION="${CLIO_VERSION}")
6+
target_compile_definitions(
7+
clio_build_version PRIVATE CLIO_VERSION="${CLIO_VERSION}" GIT_COMMIT_HASH="${GIT_COMMIT_HASH}"
8+
GIT_BUILD_BRANCH="${GIT_BUILD_BRANCH}" BUILD_DATE="${BUILD_DATE}"
9+
)

0 commit comments

Comments
 (0)