commit
5702aecca3
8 changed files with 595 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||
# Created by .ignore support plugin (hsz.mobi) |
|||
### Java template |
|||
# Compiled class file |
|||
*.class |
|||
|
|||
# Log file |
|||
*.log |
|||
|
|||
# BlueJ files |
|||
*.ctxt |
|||
|
|||
# Mobile Tools for Java (J2ME) |
|||
.mtj.tmp/ |
|||
|
|||
# Package Files # |
|||
*.jar |
|||
*.war |
|||
*.nar |
|||
*.ear |
|||
*.zip |
|||
*.tar.gz |
|||
*.rar |
|||
|
|||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml |
|||
hs_err_pid* |
|||
.idea/ |
|||
*.iml |
|||
target/ |
|||
|
|||
.DS_Store |
|||
|
|||
epmet-saas |
|||
venv |
|||
__pycache__ |
@ -0,0 +1,4 @@ |
|||
## epmet-cloud |
|||
|
|||
党群e事通后端服务相关代码库 |
|||
|
@ -0,0 +1,144 @@ |
|||
version : '3.8' |
|||
services: |
|||
epmet-admin-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-module/epmet-admin/Dockerfile_while |
|||
epmet-auth: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-auth/Dockerfile_while |
|||
epmet-gateway: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-gateway/Dockerfile_while |
|||
epmet-user-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-user/epmet-user-server/Dockerfile_while |
|||
data-aggregator-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/data-aggregator/data-aggregator-server/Dockerfile_while |
|||
data-report-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/data-report/data-report-server/Dockerfile_while |
|||
data-statistical-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/data-statistical/data-statistical-server/Dockerfile_while |
|||
epmet-actual-base: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-module/epmet-actual-base/Dockerfile_while |
|||
common-service-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-common-service/common-service-server/Dockerfile_while |
|||
epmet-ext-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-ext/epmet-ext-server/Dockerfile_while |
|||
epmet-heart-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-heart/epmet-heart-server/Dockerfile_while |
|||
epmet-job-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-job/epmet-job-server/Dockerfile_while |
|||
epmet-message-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-message/epmet-message-server/Dockerfile_while |
|||
epmet-oss-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-oss/epmet-oss-server/Dockerfile_while |
|||
epmet-point-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-point/epmet-point-server/Dockerfile_while |
|||
epmet-third-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/epmet-third/epmet-third-server/Dockerfile_while |
|||
gov-access-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-access/gov-access-server/Dockerfile_while |
|||
gov-grid-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-grid/gov-grid-server/Dockerfile_while |
|||
gov-issue-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-issue/gov-issue-server/Dockerfile_while |
|||
gov-mine-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-mine/gov-mine-server/Dockerfile_while |
|||
gov-org-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-org/gov-org-server/Dockerfile_while |
|||
gov-project-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-project/gov-project-server/Dockerfile_while |
|||
gov-voice-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/gov-voice/gov-voice-server/Dockerfile_while |
|||
open-data-worker-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/open-data-worker/open-data-worker-server/Dockerfile_while |
|||
oper-access-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/oper-access/oper-access-server/Dockerfile_while |
|||
oper-crm-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/oper-crm/oper-crm-server/Dockerfile_while |
|||
oper-customize-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/oper-customize/oper-customize-server/Dockerfile_while |
|||
resi-group-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/resi-group/resi-group-server/Dockerfile_while |
|||
resi-guide-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/resi-guide/resi-guide-server/Dockerfile_while |
|||
resi-hall-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/resi-hall/resi-hall-server/Dockerfile_while |
|||
resi-home-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/resi-home/resi-home-server/Dockerfile_while |
|||
resi-mine-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/resi-mine/resi-mine-server/Dockerfile_while |
|||
resi-partymember-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-legacy-module/resi-partymember/resi-partymember-server/Dockerfile_while |
|||
resi-voice-server: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-module/resi-voice/resi-voice-server/Dockerfile_while |
|||
epmet-governance: |
|||
build: |
|||
context: . |
|||
dockerfile: ./epmet-module/epmet-governance/Dockerfile_while |
|||
|
|||
# 使用方式: docker-compose -f docker-compose-dev.yml -f docker-compose-build.yml build epmet-gateway |
@ -0,0 +1 @@ |
|||
5b0ad41e70f65873bfcb096b74c4d16e3c7a4898 |
@ -0,0 +1,170 @@ |
|||
# This is a sample Python script. |
|||
|
|||
# Press <no shortcut> to execute it or replace it with your code. |
|||
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings. |
|||
|
|||
import os |
|||
import re |
|||
import requests |
|||
from flask import Flask |
|||
|
|||
app = Flask(__name__) |
|||
|
|||
epmet_root_services = ['epmet-auth', 'epmet-gateway'] |
|||
epmet_root_svc_name_reg = "^([^/]+)/.*$" |
|||
epmet_module_svc_name_reg = "^epmet-module/([^/]+)/.*$" |
|||
commit_regex = "^([0-9a-z]{40}) .*$" |
|||
|
|||
max_commit_qty = 20 |
|||
|
|||
|
|||
def findIndexOfLastCommit(commits: list, last_commit_ver: str): |
|||
idx: int = None |
|||
for c in commits: |
|||
if c.startswith(last_commit_ver): |
|||
return idx |
|||
else: |
|||
if not idx: |
|||
idx = 0 |
|||
idx += 1 |
|||
|
|||
return idx |
|||
|
|||
|
|||
def findLatestCommits(commits: list, last_commit_ver: str, max_amount: int): |
|||
""" |
|||
过滤出肯能需要发布服务的提交列表 |
|||
:param commits: |
|||
:param last_commit_ver: |
|||
:param max_amount: |
|||
:return: |
|||
""" |
|||
rst: list = [] |
|||
idx: int = 0 |
|||
for c in commits: |
|||
if idx > max_amount: |
|||
return rst |
|||
|
|||
commit_ver = c.split(" ")[0] |
|||
if commit_ver != last_commit_ver: |
|||
rst.append(commit_ver) |
|||
idx += 1 |
|||
if commit_ver == last_commit_ver: |
|||
return rst |
|||
return rst |
|||
|
|||
|
|||
def findModuleList(commits: str): |
|||
""" |
|||
根据提交列表,找出所有需要发布的服务模块 |
|||
:param commits: |
|||
:return: |
|||
""" |
|||
service_set: set = set() |
|||
for c in commits: |
|||
try: |
|||
rst = os.popen("cd epmet-saas && git show {} --stat --name-only|grep 'epmet-'".format(c)) |
|||
files = rst.readlines() |
|||
for file in files: |
|||
svc_name = find_service_name_from_file(file) |
|||
if svc_name: |
|||
# 有些文件可能是不需要发的,比如commons/clients等 |
|||
service_set.add(svc_name) |
|||
|
|||
finally: |
|||
rst.close() |
|||
|
|||
return service_set |
|||
|
|||
|
|||
def find_service_name_from_file(file_rel_path: str): |
|||
""" |
|||
根据提交的文件路径,找出他的服务名称 |
|||
:param file_rel_path: |
|||
:return: |
|||
""" |
|||
if file_rel_path.startswith("epmet-module/"): |
|||
match = re.match(epmet_module_svc_name_reg, file_rel_path) |
|||
return match.group(1) |
|||
|
|||
if file_rel_path.startswith("epmet-gateway") or file_rel_path.startswith("epmet-auth"): |
|||
match = re.match(epmet_root_svc_name_reg, file_rel_path) |
|||
return match.group(1) |
|||
|
|||
|
|||
def read_last_commit_ver(): |
|||
""" |
|||
读取上次发布到的版本号(包含) |
|||
:return: |
|||
""" |
|||
with open('./lastcommit.txt', 'rt') as lastcommit_file: |
|||
line_contents = lastcommit_file.readlines() |
|||
if len(line_contents) > 0: |
|||
return line_contents[0] |
|||
|
|||
|
|||
def write_last_commit_ver(new_ver): |
|||
""" |
|||
写入上次发布到的版本号(包含) |
|||
:return: |
|||
""" |
|||
with open('./lastcommit.txt', 'wt') as lastcommit_file: |
|||
lastcommit_file.write(new_ver) |
|||
|
|||
|
|||
def deploy_svcs(svc_list): |
|||
""" |
|||
发布服务 |
|||
:param svc_list: |
|||
:return: |
|||
""" |
|||
for svc in svc_list: |
|||
rst = requests.post( |
|||
"http://192.168.1.140:9610/jenkins/generic-webhook-trigger/invoke?MODULE_NAME={}&OPERATION=Deploy&token=11a600e78ec001d7864a73f7cf1555ae1a".format( |
|||
svc)) |
|||
print(rst.content.decode('utf-8')) |
|||
|
|||
|
|||
def do(): |
|||
# 切换分支 |
|||
os.system("cd epmet-saas && git checkout dev") |
|||
|
|||
# 更新代码 |
|||
os.system("cd epmet-saas && git pull") |
|||
|
|||
last_commit_ver = read_last_commit_ver() |
|||
|
|||
try: |
|||
stream = os.popen("cd epmet-saas && git log --pretty=oneline --no-merges -20") |
|||
commits = stream.readlines() |
|||
|
|||
# 根据commits找出最近提交的commits |
|||
last_commits = findLatestCommits(commits, last_commit_ver, max_commit_qty) |
|||
|
|||
if not last_commits or len(last_commits) == 0: |
|||
print("没有找到可发布的提交") |
|||
return |
|||
|
|||
# 找到这些commits下提交的文件对应的微服务 |
|||
svc_set = findModuleList(last_commits) |
|||
|
|||
# 记录本次发布版本号 |
|||
write_last_commit_ver(last_commits[0]) |
|||
|
|||
# 执行jenkins远程部署 |
|||
print("要发布的服务:", svc_set) |
|||
deploy_svcs(svc_set) |
|||
|
|||
|
|||
finally: |
|||
stream.close() |
|||
|
|||
@app.route(rule='/on-dev-push', methods=['GET']) |
|||
def on_dev_push(): |
|||
do() |
|||
return "success" |
|||
|
|||
|
|||
app.run(host="0.0.0.0", port=7998, debug=True) # 多线程模式 |
|||
|
|||
# python main.py runserver 0.0.0.0:7999 |
@ -0,0 +1,228 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
|||
<modelVersion>4.0.0</modelVersion> |
|||
|
|||
|
|||
<parent> |
|||
<groupId>org.springframework.boot</groupId> |
|||
<artifactId>spring-boot-starter-parent</artifactId> |
|||
<version>2.1.11.RELEASE</version> |
|||
</parent> |
|||
|
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-saas</artifactId> |
|||
<version>2.0.0</version> |
|||
<packaging>pom</packaging> |
|||
<description>Elink Party Masses Easily Together Saas</description> |
|||
|
|||
<organization> |
|||
<name>青岛亿联信息科技股份有限公司</name> |
|||
<url>http://www.elinkchina.com.cn/</url> |
|||
</organization> |
|||
|
|||
<modules> |
|||
<module>epmet-commons</module> |
|||
<module>epmet-gateway</module> |
|||
<module>epmet-auth</module> |
|||
<module>epmet-module</module> |
|||
<module>epmet-clients</module> |
|||
<module>epmet-cloud-generator</module> |
|||
<!--<module>epmet-legacy-module</module>--> |
|||
</modules> |
|||
|
|||
<properties> |
|||
<alibaba-dingtalk-service-sdk.version>2.0.0</alibaba-dingtalk-service-sdk.version> |
|||
<kotlin-stdlib.version>1.3.70</kotlin-stdlib.version> |
|||
<okhttp.version>4.9.0</okhttp.version> |
|||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
|||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
|||
<java.version>1.8</java.version> |
|||
<spring.cloud.version>Greenwich.SR4</spring.cloud.version> |
|||
<spring.cloud.alibaba.version>2.1.0.RELEASE</spring.cloud.alibaba.version> |
|||
<spring.boot.admin.version>2.1.6</spring.boot.admin.version> |
|||
<mysql.version>8.0.18</mysql.version> |
|||
<epmet.version>2.0.0</epmet.version> |
|||
</properties> |
|||
|
|||
<dependencies> |
|||
<dependency> |
|||
<groupId>org.springframework.boot</groupId> |
|||
<artifactId>spring-boot-starter-test</artifactId> |
|||
<scope>test</scope> |
|||
</dependency> |
|||
</dependencies> |
|||
|
|||
<dependencyManagement> |
|||
<dependencies> |
|||
<dependency> |
|||
<groupId>org.springframework.cloud</groupId> |
|||
<artifactId>spring-cloud-dependencies</artifactId> |
|||
<version>${spring.cloud.version}</version> |
|||
<type>pom</type> |
|||
<scope>import</scope> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.alibaba.cloud</groupId> |
|||
<artifactId>spring-cloud-alibaba-dependencies</artifactId> |
|||
<version>${spring.cloud.alibaba.version}</version> |
|||
<type>pom</type> |
|||
<scope>import</scope> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>mysql</groupId> |
|||
<artifactId>mysql-connector-java</artifactId> |
|||
<version>${mysql.version}</version> |
|||
</dependency> |
|||
<!--<dependency> |
|||
<groupId>com.alibaba.cloud</groupId> |
|||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> |
|||
<version>2.1.1.RELEASE</version> |
|||
</dependency>--> |
|||
<!-- 钉钉机器人 --> |
|||
<dependency> |
|||
<groupId>com.aliyun</groupId> |
|||
<artifactId>alibaba-dingtalk-service-sdk</artifactId> |
|||
<version>${alibaba-dingtalk-service-sdk.version}</version> |
|||
</dependency> |
|||
<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp --> |
|||
<dependency> |
|||
<groupId>com.squareup.okhttp3</groupId> |
|||
<artifactId>okhttp</artifactId> |
|||
<version>${okhttp.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>org.jetbrains.kotlin</groupId> |
|||
<artifactId>kotlin-stdlib</artifactId> |
|||
<version>${kotlin-stdlib.version}</version> |
|||
</dependency> |
|||
|
|||
<!-- epmet commons通用jar start --> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-common-clienttoken</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-dynamic-datasource</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-extapp-auth</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-feignclient</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-mybatis</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-openapi</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-rocketmq</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-security</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-service-call</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-thirdplat</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-tools</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-tools-phone</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-tools-wx-ma</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-commons-tools-wx-mp</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<!-- epmet commons通用 jar end --> |
|||
|
|||
<!-- epmet clients jar start --> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-actual-base-client</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-admin-client</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<dependency> |
|||
<groupId>com.epmet</groupId> |
|||
<artifactId>epmet-auth-client</artifactId> |
|||
<version>${epmet.version}</version> |
|||
</dependency> |
|||
<!-- epmet clients jar end --> |
|||
</dependencies> |
|||
</dependencyManagement> |
|||
|
|||
<repositories> |
|||
<repository> |
|||
<id>public</id> |
|||
<name>aliyun nexus</name> |
|||
<url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
|||
<releases> |
|||
<enabled>true</enabled> |
|||
</releases> |
|||
</repository> |
|||
<repository> |
|||
<id>epmet</id> |
|||
<name>maven-releases</name> |
|||
<url>https://nexus.elinkservice.cn/repository/maven-releases/</url> |
|||
</repository> |
|||
</repositories> |
|||
<pluginRepositories> |
|||
<pluginRepository> |
|||
<id>public</id> |
|||
<name>aliyun nexus</name> |
|||
<url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
|||
<releases> |
|||
<enabled>true</enabled> |
|||
</releases> |
|||
<snapshots> |
|||
<enabled>false</enabled> |
|||
</snapshots> |
|||
</pluginRepository> |
|||
</pluginRepositories> |
|||
<distributionManagement> |
|||
<repository> |
|||
<id>epmet</id> |
|||
<url>https://nexus.elinkservice.cn/repository/maven-releases/</url> |
|||
</repository> |
|||
</distributionManagement> |
|||
|
|||
</project> |
@ -0,0 +1,7 @@ |
|||
import re |
|||
|
|||
epmet_module_svc_name_reg = "^epmet-module/([^/]+)/.*$" |
|||
url = "epmet-module/gov-org-server/abc.java" |
|||
|
|||
match = re.match(epmet_module_svc_name_reg, url) |
|||
print(match.groups()) |
@ -0,0 +1,7 @@ |
|||
renren-cloud【人人微服务】版权声明 |
|||
|
|||
1. renren-cloud【人人微服务】已申请软件著作权,未经授权的企业或个人,请购买正版授权,否则我们会根据事态轻重追究相应法律责任。 |
|||
2. 授权者可将授权后的产品用于任意符合国家法律法规的应用平台,并且不受域名和项目数量限制。 |
|||
3. 授权者如果使用人人开源付费产品开发的商业项目(如ERP、CMS等),需保留授权产品的源码头注释和出处。 |
|||
4. 授权者务必尊重知识产权,严格保证不恶意传播产品源码、不得直接对授权的产品本身进行二次转售或倒卖、不得对授权的产品进行简单包装后声称为自己的产品等。否则我们有权利收回产品授权,并根据事态轻重追究相应法律责任。 |
|||
5. 最终解释权归 renren.io 所有 |
Loading…
Reference in new issue