用于CMake Windows构建的Gitlab CI/CD yml变量



我正在为安装在本地机器上的Windows Gitlab运行程序编写CI/CD管道:

variables:
RT_VERSION: "0.1"
build-win64:
tags:
- "win64"
stage: build
script:
- echo $RT_VERSION
- mkdir build 
- cd build
- cmake ../ -G "Visual Studio 16 2019" -DRELEASE_VERSION=$RT_VERSION -DCMAKE_BUILD_TYPE=Release
- cmake --build . --config Release --target package
artifacts:
name: "raytracing-$RT_VERSION.zip"
paths:
- build/raytracing-$RT_VERSION-win64.7z
expire_in: 24 hours

相应的cmake文件:

if(WIN32)
set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} /Wall /WX /EHcs")
else()
set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Werror -Wextra")
set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Wall -std=c++1z -pedantic")
endif()
include_directories(. ../output)
add_executable(raytracing
main.cpp
)
set(CPACK_SOURCE_GENERATOR "7Z")
set(CPACK_GENERATOR "7Z")
string(TIMESTAMP BUILD_VERSION "%Y.%m.%d.%H" UTC)
message(STATUS "DRAFT VERSION: " ${BUILD_VERSION})
set(RELEASE_VERSION "" CACHE STRING "program version")
if(NOT RELEASE_VERSION STREQUAL "")
set(BUILD_VERSION ${RELEASE_VERSION})
message(STATUS "RV: " ${RELEASE_VERSION})
endif()
message(STATUS "VERSION: ${BUILD_VERSION}")
set(CPACK_PACKAGE_VERSION ${BUILD_VERSION})
install (TARGETS raytracing RUNTIME DESTINATION bin)
include(CPack)

CI/CD作业分叉良好,构建版本除外:

...
Building Custom Rule D:/Programming/Gitlab/builds/Y3ZUwhN5/0/ktator/raytracing/CMakeLists.txt
CPack: Create package using 7Z
CPack: Install projects
CPack: - Install project: raytracing [Release]
CPack: Create package
CPack: - package: D:/Programming/Gitlab/builds/Y3ZUwhN5/0/ktator/raytracing/build/raytracing-$RT_VERSION-win64.7z generated.
...
Uploading artifacts...
Runtime platform                                    arch=amd64 os=windows pid=11828 revision=bbcb5aba version=15.3.0
WARNING: build/raytracing-0.1-win64.7z: no matching files. Ensure that the artifact path is relative to the working directory 
ERROR: No files to upload     

变量在artifacts部分工作正常,在script部分不工作。请帮我解决这个问题。

我还试着用百分比符号代替美元。这也于事无补。

- cmake ../ -G "Visual Studio 16 2019" -DRELEASE_VERSION=%RT_VERSION% -DCMAKE_BUILD_TYPE=Release

找到了解决方案!$RT_VERSION应该用引号括起来。

有一个正确的gitlab.yml:

variables:
RT_VERSION: "0.1"
build-win64:
tags:
- "win64"
stage: build
script:
- echo $RT_VERSION
- mkdir build 
- cd build
- cmake ../ -G "Visual Studio 16 2019" -DRELEASE_VERSION="$RT_VERSION" -DCMAKE_BUILD_TYPE=Release
- cmake --build . --config Release --target package
artifacts:
name: "raytracing-$RT_VERSION.zip"
paths:
- build/raytracing-$RT_VERSION-win64.7z
expire_in: 24 hours

最新更新