coding 持续集成的Jenkinsfile

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 --restart=always containrrr/watchtower --label-enable --cleanup

从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存储_什么值得买 

你可能感兴趣的:(ci/cd,docker,容器)