简体中文 | English
DevOps Service
DevOps Service是Choerodon平台实现持续交付的基础. 当前版本为: 1.1.0
DevOps Service通过自主整合的DevOps工具链,集成相关的开源工具,以此形成了计划、编码、测试、部署、运维以及监控的DevOps闭环。 并且只需通过简单的配置,您便能获得最佳的开发体验。
注意:原本的前端代码已经移动到这里
DevOps Service
含有以下功能:
应用服务管理
:对应用服务进行管理应用服务版本管理
:对持续集成
(Continuous Integration)过程中产生的可以直接在Kubernetes
集群中进行部署的服务版本进行管理代码管理及版本控制
:对服务的代码进行版本控制和管理分支管理
:能够对服务的Git
分支进行相应的操作代码质量监测
:在CI
过程中进行代码质量数据收集,集成sonarqube
对代码质量进行监测持续集成概览
:查看服务的持续集成过程部署管理
:对持续集成所产生的服务版本通过GitOps
进行部署持续部署流水线管理
:使用工作流实现持续部署资源管理
:对部署的资源(如:网络,域名,密文等)进行管理集群管理
:管理Kubernetes
集群DevOps Service
基于Java8进行开发DevOps Service
使用GitLab
进行代码的托管。同时,通过基于GitLab Runner
实现持续集成以完成代码编译,单元测试执行,代码质量分析,docker镜像生成,helm chart打包,服务版本发布等自动化过程DevOps Service
的数据持久化choerodon-register
: 注册中心,在线上环境代替本地的eureka-server
choerodon-iam
:用户服务,与用户有关的操作依赖与此服务choerodon-gateway
: 网关服务choerodon-oauth
: 授权服务choerodon-asgard
: 事务一致性服务choerodon-message
: 通知服务gitlab-service
:gitlab服务workflow-service
:工作流服务agile-service
:敏捷服务,查询与分支有关的敏捷Issue需要依赖此服务bootstrap.yml
:
server:
port: 8060
spring:
application:
name: devops-service
cloud:
config:
failFast: true
retry:
maxAttempts: 6
multiplier: 1.5
maxInterval: 2000
uri: localhost:8010
enabled: false
mvc:
static-path-pattern: /**
resources:
static-locations: classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,file:/dist
management:
server:
port: 8061
endpoints:
web:
exposure:
include: '*'
application.yml
:
spring:
datasource:
url: jdbc:mysql://localhost/devops_service?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: choerodon
password: choerodon
hikari:
maximum-pool-size: 15 # 数据库连接池连接数
redis:
host: localhost
database: ${SPRING_REDIS_DATABASE:1}
http:
encoding:
charset: UTF-8
force: true
enabled: true
services:
harbor:
baseUrl: "harbor.example.com" # harbor地址
username: "123456" # harbor用户名
password: "123456" # 对应harbor用户名的密码
insecureSkipTlsVerify: false
gitlab:
url: "gitlab.example.com" # gitlab地址
sshUrl: "gitlab.example.com" # 用于ssh操作的gitlab地址
projectLimit: 100 # gitlab用户可以创建的项目的数量限制
helm:
url: "helm.example.com" # 存放helm chart包的仓库地址
gateway:
url: "http://api.example.com" # 网关地址
hzero:
service:
platform:
name: choerodon-platform
oauth:
name: choerodon-oauth
iam:
name: choerodon-iam
file:
name: choerodon-file
message:
name: choerodon-message
admin:
name: choerodon-admin
swagger:
name: choerodon-swagger
gateway:
name: choerodon-gateway
monitor:
name: choerodon-monitor
websocket:
# 用于连接websocket的路径
websocket: /websocket
# 与当前服务的redis数据库一致
redisDb: ${SPRING_REDIS_DATABASE:1}
# 后端长连通信密钥
secretKey: devops_ws
choerodon:
saga:
consumer:
core-thread-num: 20
max-thread-num: 20 # 消费线程数
poll-interval: 3 # 拉取消息的间隔(秒),默认1秒
enabled: true # 是否启用消费端
schedule:
consumer:
enabled: true # 启用任务调度消费端
thread-num: 1 # 任务调度消费线程数
poll-interval-ms: 1000 # 拉取间隔,默认1000毫秒
resource:
jwt:
ignore: /workflow/**, /sonar/**, /ci, /sonar/info, /v2/api-docs, /agent/**, /ws/**, /gitlab/email, /webhook/**, /v2/choerodon/**, /choerodon/**, /actuator/**, /prometheus, /devops/**, /pre_stop, /websocket
agent:
version: "0.5.0" # devops-service此版本所预期的 choerodon-agent 的版本
serviceUrl: "agent.example.com" # 用于 choerodon-agent 连接 devops-service 的地址
certManagerUrl: "agent.example.com" # 存放CertManager的地址,用于安装
repoUrl: "helm.example.com" # 存放agent的地址,用于安装
mybatis:
mapperLocations: classpath*:/mapper/*.xml
configuration:
mapUnderscoreToCamelCase: true
feign:
hystrix:
shareSecurityContext: true
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 30000
ribbon:
ConnectTimeout: 50000
ReadTimeout: 50000
asgard-servie:
ribbon:
ConnectTimeout: 50000
ReadTimeout: 50000
devops:
ansible:
image: registry.cn-shanghai.aliyuncs.com/c7n/kubeadm-ha:0.1.0
# helm 下载地址
helm:
download-url: https://file.choerodon.com.cn/kubernetes-helm/v3.2.4/helm-v3.2.4-linux-amd64.tar.gz
# 流水线生成Gitlab Ci文件中默认的runner 镜像地址
ci:
default:
image: registry.cn-shanghai.aliyuncs.com/c7n/cibase:0.9.1
pipeline:
sync:
executor:
# 核心线程池大小
corePoolSize: 5
# 最大线程池大小
maxPoolSize: 8
unterminated:
# ci流水线对未终结的流水线进行数据补偿的时间阈值, 单位: 毫秒 (默认600秒)
thresholdMilliSeconds: 600000
pending:
# ci流水线对pending的流水线进行数据补偿的时间阈值, 单位: 毫秒 (默认600秒)
thresholdMilliSeconds: 600000
jobEmpty:
# ci流水线对非跳过状态的且没有job信息流水线进行数据补偿的时间阈值, 单位: 毫秒 (默认600秒)
thresholdMilliSeconds: 600000
refresh:
# redisKey的过期时间, 用于控制同一条流水线的刷新间隔, 减少对gitlab的访问次数
periodSeconds: 60
# 批量部署的请求条数限制
batch:
deployment:
maxSize: 20
# websocket的最大缓冲区大小,单位字节byte
websocket:
buffer:
maxTextMessageSize: 4194304
maxBinaryMessageSize: 4194304
创建数据库devops_service
,创建用户choerodon
,并为用户分配权限:
CREATE USER 'choerodon'@'%' IDENTIFIED BY "choerodon";
CREATE DATABASE devops_service DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON devops_service.* TO choerodon@'%';
FLUSH PRIVILEGES;
拉取DevOps Service
代码到本地:
git clone https://github.com/choerodon/devops-service.git
在项目根目录执行命令: mvn clean package spring-boot:repackage -Dmaven.test.skip=true && bash init-database.sh
使用下列命令运行或直接在集成环境中运行 DevopsServiceApplication
mvn clean spring-boot:run
如果您发现任何缺陷或bug,请及时 issue告知我们 。
欢迎参与我们的项目,了解更多有关如何参与贡献的信息。