我正在hub.docker.com上为服务构建docker映像。在编译期间,将源的提交哈希作为参数传递给CMake(以便可以将其嵌入版本信息中)。根据{{3}},提交哈希自动作为SOURCE_COMMIT
环境变量提供。
为了使用该信息调用cmake,请按照以下步骤进行操作-我不确定这个迷宫是最简单的方法:
1。 hooks/build
这实际上是将变量传递给docker build(取自Advanced options for Autobuild and Autotest):
#!/bin/bash
docker build --build-arg SOURCE_COMMIT=$SOURCE_COMMIT -f $DOCKERFILE_PATH -t $IMAGE_NAME .
2。 Dockerfile
使用这两行来获取值:
ARG SOURCE_COMMIT # get it from the --build-arg
ENV SOURCE_COMMIT $SOURCE_COMMIT # set shell variable (of the same name)
最后被传递给cmake
RUN cmake -DGIT_REVISION_HASH=$SOURCE_COMMIT # and so on ...
总而言之,将构建器外壳的环境变量作为build参数传递,然后获取并分配给内部外壳环境变量,然后将其扩展并作为cmake参数传递。
我错过了什么吗?还是一定很复杂?