pipeline {
agent any
stages {
stage('检出') {
steps {
checkout([
$class: 'GitSCM',
branches: [[name: GIT_BUILD_REF]],
userRemoteConfigs: [[
url: GIT_REPO_URL,
credentialsId: CREDENTIALS_ID
]]])
}
}
stage('Node.js') {
steps {
sh 'rm -rf /usr/lib/node_modules/npm/'
dir('/root/.cache/downloads') {
sh 'wget -nc "https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz" -O node-v16.14.0-linux-x64.tar.xz | true'
sh 'tar -xf node-v16.14.0-linux-x64.tar.xz -C /usr --strip-components 1'
}
sh 'npm install yarn -g'
}
}
stage('安装依赖并打包') {
steps {
sh 'yarn install'
sh 'cd packages/eee_energy/ && npm run build'
echo '打包成功'
}
}
stage('制作docker镜像后上传coding') {
steps {
sh 'docker -v'
sh 'docker login -u energy -p 838838 xxxx-docker.pkg.coding.net'
sh 'cd packages/ssss/ && ./energy_xxx_build.sh'
echo '制作镜像成功'
echo '上传成功'
}
}
}
}
energy_xxx_build.sh 文件内容(制作docker镜像上传coding 制品库 和导出docker镜像)
#!/bin/bash
# 设置变量
IMAGE_NAME="xxx-docker.pkg.coding.net/yyyyy/enejjd/xxxxs" # 镜像名称
IMAGE_TAG="latest" # 镜像标签
EXPORT_PATH="./mmmm.tar" # 导出路径和文件名
PUTH_NAME="coding" # 导出路径和文件名
# 执行 Docker 构建
docker rmi "$IMAGE_NAME"
docker build -t "$IMAGE_NAME:$IMAGE_TAG" .
docker push "$IMAGE_NAME:$IMAGE_TAG"
echo "镜像已push到 $PUTH_NAME"
# 导出镜像为 tar 文件
# docker save "$IMAGE_NAME:$IMAGE_TAG" -o "$EXPORT_PATH"
# echo "镜像已导出到 $EXPORT_PATH"
制作镜像并起docker服务的sh文件
#!/bin/bash
# 设置变量
IMAGE_NAME="werr" # 镜像名称
IMAGE_TAG="latest" # 镜像标签
EXPORT_PATH="./eeee.tar" # 导出路径和文件名
docker stop "$IMAGE_NAME"
docker rm "$IMAGE_NAME"
# 执行 Docker 构建
docker rmi "$IMAGE_NAME"
docker build -t "$IMAGE_NAME:$IMAGE_TAG" .
docker run --name "$IMAGE_NAME" -itd -p 8048:80 "$IMAGE_NAME:$IMAGE_TAG"
echo "前端服务已启动 http://localhost:8048/xxxx/"
自动化部署服务器安装npm环境
stage('Node.js') {
steps {
sh 'rm -rf /usr/lib/node_modules/npm/'
dir('/root/.cache/downloads') {
sh 'wget -nc "https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz" -O node-v16.14.0-linux-x64.tar.xz | true'
sh 'tar -xf node-v16.14.0-linux-x64.tar.xz -C /usr --strip-components 1'
}
sh 'npm install yarn -g'
}
}
测试环境第一次部署
安装并启动watchtower 镜像
当然,如果你只想让Watchtower更新特定容器,那可以将以上思路进行反向选择:即在Watchtower的命令行参数中使用了--label-enable
,那么Watchtower将只更新那些带有标签com.centurylinklabs.watchtower.enable=true
的容器。这种情况下,你只需要在你想要Watchtower更新的容器上添加这个标签即可,其他没有这个标签的容器都会被Watchtower忽略。
那么Watchtower建立时的命令行参数应该修改为:
docker run -d --name=watchtower -v /var/run/docker.sock:/var/run/docker.sock -v /root/.docker/config.json:/config.json --restart=always containrrr/watchtower --label-enable --cleanup --interval 60
从coding制品库拉取镜像
docker pull xxxx-docker.pkg.coding.net/xxxn/dddd/fffds:latest
第二步 起服务 但是要加上 --label=com.centurylinklabs.watchtower.enable=true
docker run --label=com.centurylinklabs.watchtower.enable=true --name rgy_sqqqdom -itd -p 8048:80 xxxx-docker.pkg.coding.net/xxxn/dddd/fffds:latest
参考 docker妙用 篇七:docker自动更新容器——Watchtower全攻略(含大部分常用参数)_NAS存储_什么值得买