use*_*695 9 yaml node.js gitlab-ci package.json
我正在为我的nodejs应用程序使用gitLab CI.在我的YML文件中,我需要调用脚本来构建一个docker镜像.但不是使用latest我需要使用当前版本的项目.
可以package.json在存储库的文件中找到此版本值.
是否可以读取package.json文件的版本值以替换latest当前版本?
# ...
variables:
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest # need version value instead of latest
build:
stage: build
script:
# ...
- cd /opt/core/bundle && docker build -t $CONTAINER_RELEASE_IMAGE .
- docker push $CONTAINER_RELEASE_IMAGE
Run Code Online (Sandbox Code Playgroud)
dx_*_*_dt 20
我认为version从您那里检索的最简单方法package.json是使用节点本身。
build:
stage: build
script:
- export VERSION=$(node -p "require('./package.json').version")
- export CONTAINER_RELEASE_IMAGE=$CI_REGISTRY_IMAGE:$VERSION
- cd /opt/core/bundle && docker build -t $CONTAINER_RELEASE_IMAGE .
- docker push $CONTAINER_RELEASE_IMAGE
Run Code Online (Sandbox Code Playgroud)
-p/标志--print表示计算表达式并打印结果。它在功能上相当于使用-e/--eval=标志并将表达式包装在console.log(...).
Jak*_*nia 11
如果您不反对安装可以使用的其他软件包,那么可以jq提供更大的灵活性(在Ubuntu和Alpine的存储库中都可用).安装后(例如apt-get update && apt-get install -yqq jq在Ubuntu上):
- export VERSION=$(cat package.json | jq -r .version)
- cd /opt/core/bundle && docker build -t $CI_REGISTRY_IMAGE:$VERSION .
- docker push $CI_REGISTRY_IMAGE:$VERSION
Run Code Online (Sandbox Code Playgroud)
小智 7
变量:
PACKAGE_VERSION: $(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]') `
Run Code Online (Sandbox Code Playgroud)
在您的工作或模板中
.package-template: &package_template
image: docker-hub.registry.integ.fr.auchan.com/docker:latest
stage: package
tags:
- stocks
script:
- export VERSION= ``eval $PACKAGE_VERSION``
- echo "======> Getting VERSION: $VERSION" `
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3969 次 |
| 最近记录: |