gitlab-ci.yml 项目实战

2023-05-16

gitlab-ci.yml   文件内容

image: localhost:5000/wondershare/ws-builder:latest

# Cache modules in between jobs
cache:
  key: npm_cache
  paths:
  - node_modules/

stages:
  - test
  - build
  - deploy

test:
  tags:
    - node
  script:
    - yarn && yarn run lint

build-image:
  tags:
    - node
  stage: build
  only:
    - /^develop$/
    - tags
    - schedules
  except:
    - /^prod-/
    - /export-srv/
  script:
    - bash ./scripts/build_staging_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG} ${CI_COMMIT_SHA}

deploy-image:
  tags:
    - deploy
  stage: deploy
  only:
    - tags
    - schedules
  except:
    - /^prod-/
    - /export-srv/
  script:
    - bash ./scripts/deploy_staging_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG}

build-prod-image:
  tags:
    - node
  stage: build
  only:
    - /^prod-/
  except:
    - /export-srv/
  script:
    - bash ./scripts/build_prod_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG} ${CI_COMMIT_SHA}

deploy-prod-image:
  tags:
    - deploy
  stage: deploy
  only:
    - /^prod-/
  except:
    - /export-srv/
  script:
    - bash ./scripts/deploy_prod_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG}

build-export-srv:
  tags:
    - node
  stage: build
  only:
    - /export-srv/
  script:
    - bash ./scripts/build_export_srv_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG}

deploy-export-srv:
  tags:
    - deploy
  stage: deploy
  only:
    - /^export-srv-/
  script:
    - bash ./scripts/deploy_export_srv_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG}

deploy-prod-export-srv:
  tags:
    - deploy
  stage: deploy
  only:
    - /^prod-export-srv-/
  script:
    - bash ./scripts/deploy_export_srv_prod_image.sh ${VERSION:-$CI_COMMIT_REF_SLUG}

after_script:
  - date

 ./scripts/build_staging_image.sh

#!/bin/bash
DATE=`date +%Y%m%d%H%M-UTC`
CI_COMMIT_REF_SLUG=${1:-develop}
CI_COMMIT_SHA=${2:-unknown}
DOCKER_REGISTRY=localhost:5000
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/graph-design-editor:${CI_COMMIT_REF_SLUG}

echo "VUE_APP_COMMIT=${CI_COMMIT_SHA}" >> .env
echo "VUE_APP_TAG=${CI_COMMIT_REF_SLUG}" >> .env
echo "VUE_APP_BUILD=${DATE}" >> .env

yarn
NODE_ENV=staging yarn run build

docker build -t ${IMAGE_TAG} .
docker push ${IMAGE_TAG}

./scripts/deploy_staging_image.sh 

#!/bin/bash
CI_COMMIT_REF_SLUG=${1:-develop}
DOCKER_REGISTRY=localhost:5100
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/graph-design-editor:${CI_COMMIT_REF_SLUG}
DOCKER_NAME=graph-design-editor
SSH_KEY_PATH=/tmp/ecs_ssh_key

STAGING_SERVER="10.10.17.44"
#STAGING_SERVER="10.10.17.64"

SSH_USER="sudo_root"
SSH_PORT="2016"

WS_REGISTRY="harbor01.wondershare.cn"
WS_IMAGE_TAG=${WS_REGISTRY}/n400/graph-design-editor:${CI_COMMIT_REF_SLUG}

echo "$ECS_SSH_KEY" > $SSH_KEY_PATH ; chmod 0600 $SSH_KEY_PATH

PROXY_COMMAND="ssh -W %h:%p -oStrictHostKeyChecking=no -i $SSH_KEY_PATH -l ws 10.14.1.1"
SSH_CMD="-oProxyCommand='$PROXY_COMMAND' -i $SSH_KEY_PATH -l $SSH_USER -p $SSH_PORT -oStrictHostKeyChecking=no $STAGING_SERVER"

bash -c "ssh ${SSH_CMD[@]} -R 5100:0:5000 docker pull $IMAGE_TAG"

bash -c "ssh ${SSH_CMD[@]} docker tag $IMAGE_TAG $WS_IMAGE_TAG"
bash -c "ssh ${SSH_CMD[@]} docker push $WS_IMAGE_TAG"

bash -c "ssh ${SSH_CMD[@]} docker rm -f $DOCKER_NAME"
bash -c "ssh ${SSH_CMD[@]} docker run -d -p 80:80 --name $DOCKER_NAME --restart=always $IMAGE_TAG"

if [ `echo $IMAGE_TAG | grep -c "stable"` -gt 0 ]; then
  bash -c "ssh ${SSH_CMD[@]} docker run -d -p 88:80 --name $DOCKER_NAME-stable --restart=always $IMAGE_TAG"
fi

rm -f $SSH_KEY_PATH

exit 0

./scripts/build_prod_image.sh  
#!/bin/bash
DATE=`date +%Y%m%d%H%M-UTC`
CI_COMMIT_REF_SLUG=${1:-develop}
CI_COMMIT_SHA=${2:-unknown}
DOCKER_REGISTRY=localhost:5000
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/graph-design-editor:${CI_COMMIT_REF_SLUG}

echo "VUE_APP_COMMIT=${CI_COMMIT_SHA}" >> .env
echo "VUE_APP_TAG=${CI_COMMIT_REF_SLUG}" >> .env
echo "VUE_APP_BUILD=${DATE}" >> .env

yarn
NODE_ENV=production yarn run build

docker build -t ${IMAGE_TAG} .
docker push ${IMAGE_TAG}

 ./scripts/deploy_prod_image.sh

#!/bin/bash
CI_COMMIT_REF_SLUG=${1:-develop}
DOCKER_REGISTRY=localhost:5100
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/graph-design-editor:${CI_COMMIT_REF_SLUG}
DOCKER_NAME=graph-design-editor-prod
SSH_KEY_PATH=/tmp/ecs_ssh_key

SSH_USER="eus_active_devadmin"
SSH_PORT="2018"

PROD_SERVER1="47.254.90.53"
PROD_SERVER2="47.254.90.101"

echo "$ECS_SSH_KEY" > $SSH_KEY_PATH ; chmod 0600 $SSH_KEY_PATH

for PROD_SERVER in $PROD_SERVER1 $PROD_SERVER2; do
  SSH_CMD="-i $SSH_KEY_PATH -l $SSH_USER -p $SSH_PORT -oStrictHostKeyChecking=no $PROD_SERVER"
  bash -c "ssh ${SSH_CMD[@]} -R 5100:0:5000 docker pull $IMAGE_TAG"
done

SSH_CMD="-i $SSH_KEY_PATH -l $SSH_USER -p $SSH_PORT -oStrictHostKeyChecking=no $PROD_SERVER1"
bash -c "ssh ${SSH_CMD[@]} docker service update --image $IMAGE_TAG --update-delay 30s --no-resolve-image --force $DOCKER_NAME"
rm -f $SSH_KEY_PATH

exit 0

./scripts/build_export_srv_image.sh  
#!/bin/bash
DATE=`date +%Y%m%d%H%M-UTC`
CI_COMMIT_REF_SLUG=${1:-develop}
DOCKER_REGISTRY=localhost:5000
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/canvas-export:${CI_COMMIT_REF_SLUG}

cd srv/canvas-export

docker build -t ${IMAGE_TAG} .
docker push ${IMAGE_TAG}

./scripts/deploy_export_srv_image.sh  
#!/bin/bash
CI_COMMIT_REF_SLUG=${1:-develop}
DOCKER_REGISTRY=localhost:5100
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/canvas-export:${CI_COMMIT_REF_SLUG}
DOCKER_NAME=canvas-export
SSH_KEY_PATH=/tmp/ecs_ssh_key

STAGING_SERVER="10.10.17.44"
SSH_USER="sudo_root"
SSH_PORT="2016"

WS_REGISTRY="harbor01.wondershare.cn"
WS_IMAGE_TAG=${WS_REGISTRY}/n400/canvas-export:${CI_COMMIT_REF_SLUG}

echo "$ECS_SSH_KEY" > $SSH_KEY_PATH ; chmod 0600 $SSH_KEY_PATH

PROXY_COMMAND="ssh -W %h:%p -oStrictHostKeyChecking=no -i $SSH_KEY_PATH -l ws 10.14.1.1"
SSH_CMD="-oProxyCommand='$PROXY_COMMAND' -i $SSH_KEY_PATH -l $SSH_USER -p $SSH_PORT -oStrictHostKeyChecking=no $STAGING_SERVER"

bash -c "ssh ${SSH_CMD[@]} -R 5100:0:5000 docker pull $IMAGE_TAG"

bash -c "ssh ${SSH_CMD[@]} docker tag $IMAGE_TAG $WS_IMAGE_TAG"
bash -c "ssh ${SSH_CMD[@]} docker push $WS_IMAGE_TAG"

bash -c "ssh ${SSH_CMD[@]} docker rm -f $DOCKER_NAME"
bash -c "ssh ${SSH_CMD[@]} docker run -d --net host --name $DOCKER_NAME -e MC_ADDR=172.17.0.1:11211 --restart=always $IMAGE_TAG"

rm -f $SSH_KEY_PATH

exit 0

./scripts/deploy_export_srv_prod_image.sh  
#!/bin/bash
CI_COMMIT_REF_SLUG=${1:-develop}
DOCKER_REGISTRY=localhost:5100
IMAGE_TAG=${DOCKER_REGISTRY}/wondershare/canvas-export:${CI_COMMIT_REF_SLUG}
DOCKER_NAME=canvas-export-prod
SSH_KEY_PATH=/tmp/ecs_ssh_key

SSH_USER="eus_active_devadmin"
SSH_PORT="2018"

PROD_SERVER1="47.254.90.53"
PROD_SERVER2="47.254.90.101"

echo "$ECS_SSH_KEY" > $SSH_KEY_PATH ; chmod 0600 $SSH_KEY_PATH

for PROD_SERVER in $PROD_SERVER1 $PROD_SERVER2; do
  SSH_CMD="-i $SSH_KEY_PATH -l $SSH_USER -p $SSH_PORT -oStrictHostKeyChecking=no $PROD_SERVER"
  bash -c "ssh ${SSH_CMD[@]} -R 5100:0:5000 docker pull $IMAGE_TAG"
done

SSH_CMD="-i $SSH_KEY_PATH -l $SSH_USER -p $SSH_PORT -oStrictHostKeyChecking=no $PROD_SERVER1"
bash -c "ssh ${SSH_CMD[@]} docker service update --image $IMAGE_TAG --update-delay 30s --no-resolve-image --force $DOCKER_NAME"
rm -f $SSH_KEY_PATH

exit 0

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gitlab-ci.yml 项目实战 的相关文章

随机推荐

  • workbox学习笔记

    workbox学习笔记 一 PWA介绍 1 1 学习workbox之前先了解一下PWA xff08 如果了解请跳过 xff09 PWA xff08 全称 xff1a Progressive Web App xff09 也就是说这是个渐进式的
  • Python 学习笔记 (1)输出语句

    题主是大一学生 xff0c 刚刚开始学习python xff0c 但是题主有一定的c语言基础 xff0c 在这里以两者对比的形式做一些学习笔记 这里准备把输出语句单独拿出来写一篇文章 xff0c 因为笔者觉得python 的输出语句语法很繁
  • Error: L6218E: Undefined symbol XXXX (referred from main.o)

    学习keil5 问题记录 报错Error L6218E Undefined symbol XXXX referred from main o 是因为没有在User里添加需要的 c文件 在此处添加写好的文件 C 右击User点击Add Exu
  • Debian/Ubuntu 系统环境配置

    目录 一 Debian下使用Vi方向键变字母的解决办法二 Debian打开locales中文编码支持三 Debian 安装中文输入法四 Debian 超强vim配置文件简易安装方法 xff1a 自己手动安装 xff1a 其它VIM配置参考链
  • Ubuntu 20.04 安装配置 及 ZYNQMP开发环境搭建

    Ubuntu 20 04 安装配置 及 ZYNQMP开发环境搭建 一 磁盘文件选单个文件二 安装界面显示不全三 安装类型四 VMware tools安装失败五 更换软件源五 安装开发环境六 开机自动挂载硬盘七 Xilinx Vitis安装1
  • POSTGRESQL 插入数据时主键冲突异常

    异常 xff1a 表INSERT不了数据 postgres 61 insert into t rows name values 39 b 39 ERROR duplicate key value violates unique constr
  • C语言的变长参数 va_arg

    void simple va fun int i va list arg ptr char s 61 NULL va start arg ptr i s 61 va arg arg ptr char va end arg ptr print
  • 通俗讲解 同步、异步、阻塞、非阻塞 编程

    真正意义上的 异步IO 是说内核直接将数据拷贝至用户态的内存单元 xff0c 再通知程序直接去读取数据 select poll epoll 都是同步IO的多路复用模式 1 同步和异步 同步和异步关注的是消息通信机制 所谓同步 xff0c 就
  • Nginx 提示 504 Gateway Time-out(The gateway did not receive a timely response from the...)解决办法

    本文介绍nginx出现504 Gateway Time out问题的原因 xff0c 分析问题并提供解决方法 1 问题分析 nginx访问出现504 Gateway Time out xff0c 一般是由于程序执行时间过长导致响应超时 xf
  • MySQL8 设置远程访问授权

    开启 MySQL 的远程登陆帐号有三大步 xff1a 1 确定服务器上的防火墙没有阻止 3306 端口 MySQL 默认的端口是 3306 xff0c 需要确定防火墙没有阻止 3306 端口 xff0c 否则远程是无法通过 3306 端口连
  • 三次握手,四次挥手,为什么是三次握手四次挥手

    三次握手 两次握手 xff08 情况1 xff09 两次握手 xff08 情况2 xff09 OK xff0c 下面正经地来回答下这个问题 xff0c 要搞清楚这个问题 xff0c 首先得了解TCP究竟是如何保证可靠传输的 PS xff1a
  • VirtualBox 磁盘扩容(亲测有效)

    参考 xff1a VirtualBox和VMware虚拟机centos dev mapper centos root 磁盘扩容 亲测有效 蜡笔小新儿的博客 CSDN博客 virtualbox虚拟机磁盘扩容 虚拟机磁盘扩容一 VirtualB
  • 完美解决 Could not find a version that satisfies the requirement 安装包名字 (from versions: )

    大家在刚开始使用python 时会遇到缺少python 库的问题 xff0c 提示 No module named 安装包名字 问题 在解决安装包问题中在网上找了很多的方法 xff0c 方法很多各种各样 xff0c 对一部分人有用 xff0
  • Go语言实现对称加密算法AES、DES、3DES和非对称加密算法RSA

    1 对称加密算法 1 1 特点 加密和解密使用的是同一个密钥 数据私密性双向保证 也就是加密和解密都不能泄露密码 1 2 优缺点 优点 加密效率高 适合大些的数据加密 缺点 安全性相对非对称低 1 3 go语言实现对称加密算法 1 3 1
  • Ubuntu 上安装 MozJpeg 详解

    参考 xff1a How to Install MozJpeg on Ubuntu 18 04 3 CodeFAQ 2023 04 26 花了很多时间 xff0c 绕了很多弯路才成功安装 mozjpeg 图片压缩命令 xff1b 特记录一下
  • ElasticSearch + Grafana 实现日志监控告警

    配置步骤 点击左边栏 x1f514 进入告警管理中心 xff1a Alert rules xff1a 告警规则管理 Contact points xff1a 告警联系人管理 Notification policies xff1a 告警通知策
  • sprintf函数

    sprintf指的是字符串格式化命令 头文件 xff1a include lt stdio h gt 功能 xff1a 把格式化的数据读入某个字符串中 xff08 最终结果是字符串类型 xff09 格式 xff1a char str 100
  • android 127.0.0.1/localhost connection refused 问题的

    下载 php java javascript 相关 api 手册的下载 调试中通过android simulator模拟器链接localhost或者127 0 0 1 xff0c 因为我在电脑上面建立了apache xff0c 我的代码大概
  • 配置MacVim,高亮+自动缩进+行号+折叠+优化

    将一下代码copy到 用户目录下 新建文件为 vimrc 保存即可生效 xff1b 如果想所有用户生效 请修改 etc vimrc 建议先cp一份 span style background color ffcc99 34 61 61 61
  • gitlab-ci.yml 项目实战

    gitlab ci yml 文件内容 image localhost 5000 wondershare ws builder latest Cache modules in between jobs cache key npm cache