forked from JointCloud/JCC-RIP
refactor ci/cd
This commit is contained in:
parent
9728ed7a26
commit
98cb200798
|
@ -1,92 +0,0 @@
|
||||||
version: 2
|
|
||||||
name: 腾讯云dev环境
|
|
||||||
description: ""
|
|
||||||
global:
|
|
||||||
concurrent: 1
|
|
||||||
param:
|
|
||||||
- ref: secret_name
|
|
||||||
name: ""
|
|
||||||
value: '"jcce-aliyuncs"'
|
|
||||||
required: false
|
|
||||||
type: STRING
|
|
||||||
hidden: false
|
|
||||||
- ref: project_name
|
|
||||||
name: ""
|
|
||||||
value: '"kubex-frontend"'
|
|
||||||
required: false
|
|
||||||
type: STRING
|
|
||||||
hidden: false
|
|
||||||
trigger:
|
|
||||||
webhook: gitlink@1.0.0
|
|
||||||
event:
|
|
||||||
- ref: create_tag
|
|
||||||
ruleset:
|
|
||||||
- param-ref: tag
|
|
||||||
operator: EQ
|
|
||||||
value: '""'
|
|
||||||
ruleset-operator: AND
|
|
||||||
workflow:
|
|
||||||
- ref: start
|
|
||||||
name: 开始
|
|
||||||
task: start
|
|
||||||
- ref: git_clone_0
|
|
||||||
name: git clone
|
|
||||||
task: git_clone@1.2.6
|
|
||||||
input:
|
|
||||||
ssh_key: ((test.gitlink_sshkey))
|
|
||||||
remote_url: '"git@code.gitlink.org.cn:JCCE/kubex-frontend.git"'
|
|
||||||
ref: '"refs/heads/earth"'
|
|
||||||
commit_id: '""'
|
|
||||||
depth: 1
|
|
||||||
needs:
|
|
||||||
- start
|
|
||||||
- ref: docker_image_build_0
|
|
||||||
name: docker镜像构建
|
|
||||||
task: docker_image_build@1.6.0
|
|
||||||
input:
|
|
||||||
docker_username: ((test.docker_user))
|
|
||||||
docker_password: ((test.docker_password))
|
|
||||||
image_name: '"registry.cn-hangzhou.aliyuncs.com/jcce/kubex-frontend"'
|
|
||||||
image_tag: git_clone_0.commit_time
|
|
||||||
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
|
|
||||||
docker_build_path: git_clone_0.git_path
|
|
||||||
workspace: git_clone_0.git_path
|
|
||||||
image_clean: true
|
|
||||||
image_push: true
|
|
||||||
build_args: '""'
|
|
||||||
needs:
|
|
||||||
- shell_0
|
|
||||||
- ref: end
|
|
||||||
name: 结束
|
|
||||||
task: end
|
|
||||||
needs:
|
|
||||||
- kubectl_deploy_0
|
|
||||||
- ref: kubectl_deploy_0
|
|
||||||
name: kubectl部署资源
|
|
||||||
task: kubectl_deploy@1.1.0
|
|
||||||
input:
|
|
||||||
command: '"apply"'
|
|
||||||
resource_file_path: git_clone_0.git_path + '/deploy/k8s/kubex-frontend.yaml'
|
|
||||||
certificate_authority_data: ((dev.k8s_cad))
|
|
||||||
server: '"https://119.45.100.73:6443"'
|
|
||||||
client_certificate_data: ((dev.k8s_ccd))
|
|
||||||
client_key_data: ((dev.k8s_ckd))
|
|
||||||
hosts: '""'
|
|
||||||
needs:
|
|
||||||
- docker_image_build_0
|
|
||||||
- ref: shell_0
|
|
||||||
name: shell
|
|
||||||
image: docker.jianmuhub.com/library/debian:buster-slim
|
|
||||||
env:
|
|
||||||
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/kubex-frontend"'
|
|
||||||
IMAGE_TAG: git_clone_0.commit_time
|
|
||||||
SECRET_NAME: global.secret_name
|
|
||||||
PROJECT_NAME: global.project_name
|
|
||||||
PROJECT_PATH: git_clone_0.git_path + '/deploy/k8s/'
|
|
||||||
script:
|
|
||||||
- cd ${PROJECT_PATH}
|
|
||||||
- sed -i "s#image_name#${IMAGE_NAME}:${IMAGE_TAG}#" ${PROJECT_NAME}.yaml
|
|
||||||
- sed -i "s#secret_name#${SECRET_NAME}#" ${PROJECT_NAME}.yaml
|
|
||||||
- cat ${PROJECT_NAME}.yaml
|
|
||||||
needs:
|
|
||||||
- git_clone_0
|
|
|
@ -34,7 +34,7 @@ workflow:
|
||||||
task: git_clone@1.2.6
|
task: git_clone@1.2.6
|
||||||
input:
|
input:
|
||||||
ssh_key: ((test.gitlink_sshkey))
|
ssh_key: ((test.gitlink_sshkey))
|
||||||
remote_url: '"git@code.gitlink.org.cn:JCCE/kubex-frontend.git"'
|
remote_url: '"https://gitlink.org.cn/JointCloud/JCC-RIP.git"'
|
||||||
ref: '"refs/heads/earth"'
|
ref: '"refs/heads/earth"'
|
||||||
commit_id: '""'
|
commit_id: '""'
|
||||||
depth: 1
|
depth: 1
|
||||||
|
@ -46,7 +46,7 @@ workflow:
|
||||||
input:
|
input:
|
||||||
docker_username: ((test.docker_user))
|
docker_username: ((test.docker_user))
|
||||||
docker_password: ((test.docker_password))
|
docker_password: ((test.docker_password))
|
||||||
image_name: '"registry.cn-hangzhou.aliyuncs.com/jcce/kubex-frontend"'
|
image_name: '"registry.cn-hangzhou.aliyuncs.com/jcce/jcc-rip'
|
||||||
image_tag: git_clone_0.commit_time
|
image_tag: git_clone_0.commit_time
|
||||||
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
|
registry_address: '"registry.cn-hangzhou.aliyuncs.com"'
|
||||||
docker_build_path: git_clone_0.git_path
|
docker_build_path: git_clone_0.git_path
|
||||||
|
@ -66,7 +66,7 @@ workflow:
|
||||||
task: kubectl_deploy@1.1.0
|
task: kubectl_deploy@1.1.0
|
||||||
input:
|
input:
|
||||||
command: '"apply"'
|
command: '"apply"'
|
||||||
resource_file_path: git_clone_0.git_path + '/deploy/k8s/kubex-frontend.yaml'
|
resource_file_path: git_clone_0.git_path + '/deploy/k8s/jcc-rip-frontend.yaml'
|
||||||
certificate_authority_data: ((test.k8s_cad))
|
certificate_authority_data: ((test.k8s_cad))
|
||||||
server: '"https://47.92.39.128:6443"'
|
server: '"https://47.92.39.128:6443"'
|
||||||
client_certificate_data: ((test.k8s_ccd))
|
client_certificate_data: ((test.k8s_ccd))
|
||||||
|
@ -78,7 +78,7 @@ workflow:
|
||||||
name: shell
|
name: shell
|
||||||
image: docker.jianmuhub.com/library/debian:buster-slim
|
image: docker.jianmuhub.com/library/debian:buster-slim
|
||||||
env:
|
env:
|
||||||
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/kubex-frontend"'
|
IMAGE_NAME: '"registry.cn-hangzhou.aliyuncs.com/jcce/jcc-rip"'
|
||||||
IMAGE_TAG: git_clone_0.commit_time
|
IMAGE_TAG: git_clone_0.commit_time
|
||||||
SECRET_NAME: global.secret_name
|
SECRET_NAME: global.secret_name
|
||||||
PROJECT_NAME: global.project_name
|
PROJECT_NAME: global.project_name
|
||||||
|
|
|
@ -18,7 +18,7 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.sjtug.sjtu.edu.cn/g' /etc/apk/repos
|
||||||
apk add --update tzdata && \
|
apk add --update tzdata && \
|
||||||
rm -rf /var/cache/apk/*
|
rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
COPY --from=builder /app/dist /usr/share/nginx/html/jcce
|
COPY --from=builder /app/dist /usr/share/nginx/html/jcc-rip
|
||||||
RUN rm /etc/nginx/conf.d/default.conf
|
RUN rm /etc/nginx/conf.d/default.conf
|
||||||
COPY deploy/nginx/default.conf /etc/nginx/conf.d/default.conf
|
COPY deploy/nginx/default.conf /etc/nginx/conf.d/default.conf
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
def JOB_NAME = "${env.JOB_NAME}"
|
|
||||||
def BUILD_NUMBER = "${env.BUILD_NUMBER}"
|
|
||||||
def label = "jenkins-${JOB_NAME}-${BUILD_NUMBER}-${UUID.randomUUID().toString()}"
|
|
||||||
def secret_name = "harbor-auth"
|
|
||||||
|
|
||||||
podTemplate(label: label, containers: [
|
|
||||||
containerTemplate(name: 'nodejs', image: 'node:14.20.0-alpine3.16', command: 'cat', ttyEnabled: true),
|
|
||||||
containerTemplate(name: 'docker', image: 'docker:latest', command: 'cat', ttyEnabled: true),
|
|
||||||
containerTemplate(name: 'kubectl', image: 'jcce/kubectl:1.23.7', command: 'cat', ttyEnabled: true)
|
|
||||||
], serviceAccount: 'jenkins', volumes: [
|
|
||||||
hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
|
|
||||||
]) {
|
|
||||||
node(label) {
|
|
||||||
def myRepo = checkout scm
|
|
||||||
// 获取 git commit id 作为镜像标签
|
|
||||||
def imageTag = sh(script: "git rev-parse --short HEAD", returnStdout: true).trim()
|
|
||||||
// 仓库地址
|
|
||||||
def registryUrl = "hub.jcce.dev:18443/repository/docker-hub"
|
|
||||||
def imageEndpoint = "jcce/kubex-frontend"
|
|
||||||
// 镜像
|
|
||||||
def image = "${registryUrl}/${imageEndpoint}:${imageTag}"
|
|
||||||
def imageLatest = "${registryUrl}/${imageEndpoint}:latest"
|
|
||||||
|
|
||||||
stage('单元测试') {
|
|
||||||
echo "1.测试阶段"
|
|
||||||
}
|
|
||||||
stage('代码编译打包') {
|
|
||||||
try {
|
|
||||||
container('nodejs') {
|
|
||||||
echo "2.代码编译打包阶段"
|
|
||||||
sh('npm install --registry=https://registry.npmmirror.com')
|
|
||||||
sh('npm run build:prod')
|
|
||||||
}
|
|
||||||
} catch (exc) {
|
|
||||||
println "构建失败 - ${currentBuild.fullDisplayName}"
|
|
||||||
throw(exc)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('构建 Docker 镜像') {
|
|
||||||
withCredentials([[$class: 'UsernamePasswordMultiBinding',
|
|
||||||
credentialsId: 'docker-auth',
|
|
||||||
usernameVariable: 'DOCKER_USER',
|
|
||||||
passwordVariable: 'DOCKER_PASSWORD']]) {
|
|
||||||
container('docker') {
|
|
||||||
echo "3. 构建 Docker 镜像阶段"
|
|
||||||
sh('cat /etc/resolv.conf')
|
|
||||||
sh("docker login '${registryUrl}' -u '${DOCKER_USER}' -p '${DOCKER_PASSWORD}' ")
|
|
||||||
sh("docker build -t '${image}' -t '${imageLatest}' .")
|
|
||||||
sh("docker push '${image}'")
|
|
||||||
sh("docker push '${imageLatest}'")
|
|
||||||
sh("docker rmi '${image}' '${imageLatest}'")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('运行 Kubectl 部署到k8s平台') {
|
|
||||||
withCredentials([file(credentialsId: 'kubeconfig', variable: 'KUBECONFIG')]) {
|
|
||||||
container('kubectl') {
|
|
||||||
echo "5.部署应用"
|
|
||||||
sh('mkdir -p ~/.kube && cp ${KUBECONFIG} ~/.kube/config')
|
|
||||||
sh("sed -i 's#IMAGE_NAME#${image}#' deploy/k8s/deployment.yaml")
|
|
||||||
sh("sed -i 's#SECRET_NAME#${secret_name}#' deploy/k8s/deployment.yaml")
|
|
||||||
sh('kubectl apply -f deploy/k8s/')
|
|
||||||
sh('sleep 3')
|
|
||||||
echo "6.查看应用"
|
|
||||||
sh('kubectl get all -n jcce-system -l app=${JOB_NAME}')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +1,25 @@
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
metadata:
|
metadata:
|
||||||
name: kubex-frontend-deployment
|
name: jcc-rip-frontend
|
||||||
namespace: jcce-system
|
namespace: jcce-system
|
||||||
labels:
|
labels:
|
||||||
k8s-app: kubex-frontend
|
k8s-app: jcc-rip
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
k8s-app: kubex-frontend
|
k8s-app: jcc-rip
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
name: kubex-frontend
|
name: jcc-rip
|
||||||
labels:
|
labels:
|
||||||
k8s-app: kubex-frontend
|
k8s-app: jcc-rip
|
||||||
spec:
|
spec:
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
- name: secret_name
|
- name: secret_name
|
||||||
containers:
|
containers:
|
||||||
- name: kubex-frontend
|
- name: jcc-rip
|
||||||
image: image_name
|
image: image_name
|
||||||
resources: {}
|
resources: {}
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
|
@ -49,12 +49,12 @@ apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
namespace: jcce-system
|
namespace: jcce-system
|
||||||
name: kubex-frontend-service
|
name: jcc-rip-service
|
||||||
labels:
|
labels:
|
||||||
k8s-service: kubex-frontend
|
k8s-service: jcc-rip
|
||||||
spec:
|
spec:
|
||||||
selector:
|
selector:
|
||||||
k8s-app: kubex-frontend
|
k8s-app: jcc-rip
|
||||||
ports:
|
ports:
|
||||||
- name: web
|
- name: web
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
upstream backend-up {
|
upstream jcc-backend {
|
||||||
server jcce-gateway-service:8000;
|
server dev.jointcloud.net:443;
|
||||||
|
}
|
||||||
|
|
||||||
|
upstream pcm-backend {
|
||||||
|
server pcm-core-api:8999;
|
||||||
}
|
}
|
||||||
|
|
||||||
server {
|
server {
|
||||||
|
@ -10,21 +14,21 @@ server {
|
||||||
error_log /var/log/nginx/error.log error;
|
error_log /var/log/nginx/error.log error;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
root /usr/share/nginx/html/jcce; #站点目录
|
root /usr/share/nginx/html/jcc-rip; #站点目录
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
}
|
}
|
||||||
|
|
||||||
#monitor项目
|
#monitor项目
|
||||||
location /monitor {
|
location /monitor {
|
||||||
alias /usr/share/nginx/html/jcce/;
|
alias /usr/share/nginx/html/jcc-rip/;
|
||||||
try_files $uri $uri/ /monitor/index.html; #解决页面刷新404问题
|
try_files $uri $uri/ /monitor/index.html; #解决页面刷新404问题
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
autoindex on;
|
autoindex on;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /apis/ {
|
location /pcm/ {
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_pass http://backend-up/;
|
proxy_pass http://pcm-backend/pcm/;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
@ -33,14 +37,15 @@ server {
|
||||||
index index.html index.htm;
|
index index.html index.htm;
|
||||||
}
|
}
|
||||||
|
|
||||||
#虚拟机
|
location /apis/ {
|
||||||
location ^~/jcc-vm/ {
|
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
|
proxy_pass https://jcc-backend/apis/;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-NginX-Proxy true;
|
client_max_body_size 12288m;
|
||||||
proxy_pass https://10.101.14.2/;
|
root html;
|
||||||
|
index index.html index.htm;
|
||||||
}
|
}
|
||||||
|
|
||||||
error_page 500 502 503 504 /50x.html;
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
|
Loading…
Reference in New Issue