102 lines
3.7 KiB
YAML
102 lines
3.7 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: security-vue
|
|
|
|
steps:
|
|
- name: build-package-react
|
|
image: node:16.18.0
|
|
volumes:
|
|
- name: cache
|
|
path: /drone/src/node_modules
|
|
- name: build
|
|
path: /app/build
|
|
commands:
|
|
- export CI=false
|
|
- rm -rf /app/build/react/*
|
|
- cp deployment.yml /app/build/react/
|
|
- cp Dockerfile /app/build/react/
|
|
- cp .dockerignore /app/build/react/
|
|
- cp default.conf /app/build/react/
|
|
- cp docker.sh /app/build/react/
|
|
- cp nginx.conf /app/build/react/
|
|
- npm -v
|
|
- mkdir -p ./node_modules
|
|
- export NODE_MODULES_PATH=`pwd`/node_modules
|
|
# - npm config set registry https://registry.npm.taobao.org
|
|
# - set NODE_OPTIONS=--openssl-legacy-provider
|
|
- npm install
|
|
- npm run build
|
|
- ls /app/build/react/
|
|
- echo $NODE_MODULES_PATH
|
|
- mkdir -p /app/build/react
|
|
- cp -r build /app/build/react
|
|
|
|
|
|
- name: build-docker # 制作docker镜像
|
|
image: docker # 使用官方docker镜像
|
|
volumes: # 将容器内目录挂载到宿主机
|
|
- name: build
|
|
path: /app/build
|
|
- name: docker
|
|
path: /var/run/docker.sock # 挂载宿主机的docker
|
|
- name: config
|
|
path: /config
|
|
environment: # 获取到密文的docker用户名和密码
|
|
DOCKER_USERNAME:
|
|
from_secret: docker_username
|
|
DOCKER_PASSWORD:
|
|
from_secret: docker_password
|
|
REGISTRY:
|
|
from_secret: registry
|
|
REGISTRY_NAMESPACE:
|
|
from_secret: registry_namespace
|
|
commands: # 定义在Docker容器中执行的shell命令
|
|
- cd /app/build/react/
|
|
- cat Dockerfile
|
|
- sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml
|
|
- sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml
|
|
- sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' deployment.yml
|
|
- sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' deployment.yml
|
|
# - sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' docker.sh
|
|
# - sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' docker.sh
|
|
# docker登录,不能在脚本中登录,并且不能使用docker login -u -p
|
|
- echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin
|
|
- chmod +x docker.sh
|
|
- cat docker.sh
|
|
- sh docker.sh
|
|
# 执行完脚本删除本次制作的docker镜像,避免多次后当前runner空间不足
|
|
- docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}')
|
|
|
|
- name: drone-rancher # rancher运行
|
|
image: registry.cn-hangzhou.aliyuncs.com/claywang/kubectl #阿里云的kubectl镜像,里面包含kubectl命令行工具
|
|
volumes: # 将容器内目录挂载到宿主机
|
|
- name: build
|
|
path: /app/build # 将应用打包好的Jar和执行脚本挂载出来
|
|
- name: config
|
|
path: /app/config # 将kubectl 配置文件挂载出来
|
|
commands: # 定义在Docker容器中执行的shell命令
|
|
- cd /app/build/react/
|
|
# 将deployment中定义的变量替换为drone中的内置变量
|
|
- cat deployment.yml
|
|
# 通过kubectl指令运行deployment.yml,并指定授权文件kubectl_conf.yml
|
|
# - kubectl apply -f deployment.yml -n $DRONE_COMMIT_BRANCH --kubeconfig=/app/config/kubectl_conf.yml
|
|
- kubectl apply -f deployment.yml -n dev --kubeconfig=/app/config/kubectl_conf.yml
|
|
|
|
|
|
volumes:
|
|
- name: build
|
|
host:
|
|
path: /home/build
|
|
- name: cache
|
|
host:
|
|
path: /var/lib/npm/cache
|
|
- name: config # k8s对接的配置文件
|
|
host:
|
|
path: /.kube/config
|
|
- name: maven-cache # maven的缓存文件
|
|
host:
|
|
path: /home/data/maven/cache
|
|
- name: docker # 宿主机中的docker
|
|
host:
|
|
path: /var/run/docker.sock
|