简体中文 | English
prod-repo-service
prod-repo-service prod-repo-service是Choerodon平台管理制品库的基础. 当前版本为: 0.23.0
prod-repo-service通过整合nexus、harbor,提供管理maven包、npm包、docker镜像等功能。
特性
prod-repo-service 含有以下功能:
自定义nexus服务 :maven、npm制品库的创建可以使用默认的nexus服务,也可添加自己的nexus服务
创建制品库 :创建/更新maven、npm、docker制品仓库
镜像/包管理:查看仓库下发布的制品列表、发布制品指引
用户权限:分配项目成员的权限
权限管理:分配权限、更新权限、删除权限
操作日志:记录了权限分配/镜像操作的操作日志
前置要求
- JAVA:
prod-repo-service基于Java8进行开发
- GitLab:
prod-repo-service使用GitLab进行代码的托管。同时,通过基于GitLab Runner实现持续集成以完成代码编译,单元测试执行,代码质量分析,docker镜像生成,helm chart打包,服务版本发布等自动化过程
- Harbor:企业级Docker registry 服务,用于存放服务版本所对应的docker镜像
- Kubernetes:容器编排管理工具,用于部署服务版本所对应的helm chart包
- ChartMuseum:Helm Chart仓库,用于存放服务版本所对应的helm chart包
- Sonarqube:管理代码质量的开放平台,用于管理服务的代码质量
- MySQL:主流数据库之一,用于数据持久化
- Redis:内存数据库,用于数据缓存和部分非持久化数据存储
- Nexus:
Sonatype Nexus OSS是一个自由开源的仓库管理系统。
- Harbor:
Harbor是一个企业级DockerRegistry管理系统
服务依赖
choerodon-register: 注册中心,在线上环境代替本地的eureka-server
choerodon-platform:平台服务
choerodon-iam: 用户服务,与用户有关的操作依赖与此服务
choerodon-gateway: 网关服务
choerodon-oauth: 授权服务
choerodon-asgard : 事务一致性服务
choerodon-file : 文件服务
服务配置
-
bootstrap.yml:
server:
port: 7144
management:
server:
port: 7145
endpoints:
web:
exposure:
include: '*'
spring:
profiles:
active: default
cloud:
config:
fail-fast: false
enabled: ${SPRING_CLOUD_CONFIG_ENABLED:false}
uri: ${SPRING_CLOUD_CONFIG_URI:http://dev.hzero.org:8010}
retry:
maxAttempts: 6
multiplier: 1.1
maxInterval: 2000
label: ${SPRING_CLOUD_CONFIG_LABEL:}
eureka:
instance:
preferIpAddress: ${EUREKA_INSTANCE_PREFER_IP_ADDRESS:true}
leaseRenewalIntervalInSeconds: 10
leaseExpirationDurationInSeconds: 30
metadata-map:
VERSION: 1.2.0.RELEASE
client:
serviceUrl:
defaultZone: ${EUREKA_DEFAULT_ZONE:http://hzero-register.staging.saas.hand-china.com/}
registryFetchIntervalSeconds: 10
disable-delta: true
-
application.yml:
spring:
application:
name: prod-repo-service
datasource:
url: ${SPRING_DATASOURCE_URL:jdbc:mysql://db.hzero.org:3306/hrds_prod_repo?useUnicode=true&characterEncoding=utf-8&useSSL=false}
username: ${SPRING_DATASOURCE_USERNAME:root}
password: ${SPRING_DATASOURCE_PASSWORD:handhand}
hikari:
minimum-idle: ${SPRING_DATASOURCE_MINIMUM_IDLE:20}
maximum-pool-size: ${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:200}
connection-timeout: ${SPRING_DATASOURCE_CONNECTION_TIMEOUT:30000}
redis:
host: redis.hzero.org
port: 6379
database: 1
jedis:
pool:
max-active: ${SPRING_REDIS_POOL_MAX_ACTIVE:50}
max-idle: ${SPRING_REDIS_POOL_MAX_IDLE:50}
max-wait: ${SPRING_REDIS_POOL_MAX_WAIT:5000}
resources:
cache.period: 3600
chain.gzipped: true
chain.cache: true
server:
undertow:
io-threads: ${SERVER_UNDERTOW_IO_THREADS:4}
worker-threads: ${SERVER_UNDERTOW_WORKER_THREADS:128}
buffer-size: ${SERVER_UNDERTOW_BUFFER_SIZE:1024}
direct-buffers: true
max-http-post-size: 10485760
allow-unescaped-characters-in-url: true
feign:
hystrix:
enabled: true
hystrix:
threadpool:
default:
coreSize: 1000
maximumSize: 1000
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: ${HYSTRIX_COMMAND_TIMEOUT_IN_MILLISECONDS:40000}
ribbon:
ReadTimeout: ${RIBBON_READ_TIMEOUT:30000}
ConnectTimeout: ${RIBBON_CONNECT_TIMEOUT:3000}
OkToRetryOnAllOperations: true
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 1
mybatis:
mapperLocations: classpath*:/mapper/*.xml
configuration:
mapUnderscoreToCamelCase: true
key-generator: snowflake
snowflake:
start-timestamp: 1577808000000
meta-provider: redis
meta-provider-redis-db: 1
meta-provider-redis-refresh-interval: 540000
meta-provider-redis-expire: 600000
data-center-id: 1
worker-id: 1
logging:
level:
org.apache.ibatis: ${LOGGING_LEVEL:debug}
io.choerodon: ${LOGGING_LEVEL:debug}
org.hzero: ${LOGGING_LEVEL:debug}
org.hrds.rdupm: ${LOGGING_LEVEL:debug}
hzero:
scheduler:
autoRegister: false
lock:
pattern: single
single-server:
address: ${SPRING_REDIS_HOST:localhost}
port: ${SPRING_REDIS_PORT:6379}
service:
platform:
name: cherodon-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
choerodon:
category:
enabled: true
devops:
message: true
eureka:
event:
max-cache-size: 300
retry-time: 5
retry-interval: 3
skip-services: config**, **register-server, **gateway**, zipkin**, hystrix**, oauth**
saga:
service: choerodon-asgard
consumer:
enabled: true
thread-num: 2
max-poll-size: 200
poll-interval-ms: 1000
schedule:
consumer:
enabled: true
thread-num: 1
poll-interval-ms: 1000
cleanPermission: false
harbor:
baseUrl: ${HARBOR_BASE_URL:https://hzero.org}
username: ${HARBOR_USER_NAME:xxx}
password: ${HARBOR_PASSWORD:xxx}
init:
defaultRepoUrl: ${HARBOR_INIT_DEFAULT_REPO_URL:jdbc:mysql://db.hzero.org:3306/hzero_platform?useUnicode=true&characterEncoding=utf-8&useSSL=false}
defaultRepoUsername: ${HARBOR_INIT_DEFAULT_REPO_USERNAME:xxx}
defaultRepoPassword: ${HARBOR_INIT_DEFAULT_REPO_PASSWORD:xxx}
customRepoUrl: ${HARBOR_INIT_CUSTOM_REPO_URL:jdbc:mysql://db.hzero.org:3306/devops_service?useUnicode=true&characterEncoding=utf-8&useSSL=false}
customRepoUsername: ${HARBOR_INIT_CUSTOM_REPO_USERNAME:xxx}
customRepoPassword: ${HARBOR_INIT_CUSTOM_REPO_PASSWORD:xxx}
nexus:
default:
serverUrl: ${NEXUS_DEFAULT_BASE_URL:https://localhost}
username: ${NEXUS_DEFAULT_USER_NAME:admin}
password: ${NEXUS_DEFAULT_PASSWORD:admin}
enableAnonymousFlag: ${NEXUS_DEFAULT_ENABLE_ANONYMOUS_FLAG:0}
anonymousUser: ${NEXUS_DEFAULT_ANONYMOUS_USER:test}
anonymousRole: ${NEXUS_DEFAULT_ANONYMOUS_ROLE:test}
DesEncrypt:
desKey: ${DES_ENCRYPT_DES_KEY:xxx}
desIV: ${DES_ENCRYPT_DES_IV:xxxxxxxx}
安装和启动步骤
-
创建数据库hrds_prod_repo,创建用户choerodon,并为用户分配权限:
CREATE USER 'choerodon'@'%' IDENTIFIED BY "choerodon";
CREATE DATABASE hrds_prod_repo DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON hrds_prod_repo.* TO choerodon@'%';
FLUSH PRIVILEGES;
-
拉取prod-repo-service代码到本地:
git clone https://github.com/choerodon/prod-repo-service.git
-
在项目根目录执行命令: sh init-database.sh
-
使用下列命令运行或直接在集成环境中运行 RdudmApplication
mvn clean spring-boot:run
链接
更新日志
反馈途径
如果您发现任何缺陷或bug,请及时 issue告知我们 。
如何参与
欢迎参与我们的项目,了解更多有关如何参与贡献的信息。