Merge pull request 'staging' (#5) from staging into master
Reviewed-on: #5
This commit is contained in:
commit
fe390527ce
|
|
@ -0,0 +1,97 @@
|
|||
name: 部署到开发环境
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
|
||||
env:
|
||||
IMAGE_NAME: ${{ gitea.repository_owner }}/cut.service
|
||||
PROJECT_NAME: Dolphin.ExamPictureCut.HttpApi.Host
|
||||
PUBLISH_PATH: marking.cut.service
|
||||
PUBLISH_HOST: 10.255.255.44
|
||||
PUBLISH_PORT: 22
|
||||
ASPNETCORE_ENVIRONMENT: Development
|
||||
|
||||
jobs:
|
||||
job1:
|
||||
name: 编译发布
|
||||
runs-on: linux-amd
|
||||
container:
|
||||
image: node:16-bullseye
|
||||
volumes:
|
||||
- /opt/.runner/nuget_packages:/root/.nuget/packages
|
||||
|
||||
steps:
|
||||
- name: 下载源码
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: 编译后端
|
||||
uses: actions/aspnet@8.0
|
||||
with:
|
||||
project_name: ${{ env.PROJECT_NAME }}
|
||||
|
||||
- name: 打包上传镜像
|
||||
uses: actions/docker@master
|
||||
with:
|
||||
registry: ${{ secrets.DOCKER_REGISTRY }}
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
image: ${{ env.IMAGE_NAME }}
|
||||
context: publish
|
||||
tags: latest,${{ gitea.ref_name }}
|
||||
|
||||
- name: 生成环境变量文件
|
||||
env:
|
||||
env_file: |
|
||||
REGISTRY=${{ secrets.DOCKER_REGISTRY }}
|
||||
OWNER=${{ gitea.repository_owner }}
|
||||
TAG=${{ gitea.ref_name }}
|
||||
ASPNETCORE_ENVIRONMENT=${{ env.ASPNETCORE_ENVIRONMENT }}
|
||||
run: |
|
||||
echo "$env_file">.env
|
||||
|
||||
- name: 复制发布脚本
|
||||
uses: docker://appleboy/drone-scp
|
||||
with:
|
||||
host: ${{ env.PUBLISH_HOST }}
|
||||
port: ${{ env.PUBLISH_PORT }}
|
||||
username: ${{ secrets.PUBLISH_USER_NAME }}
|
||||
password: ${{ secrets.PUBLISH_PASSWORD }}
|
||||
target: ${{ env.PUBLISH_PATH }}
|
||||
source: docker-compose.yaml,.env
|
||||
|
||||
- name: 部署到服务器
|
||||
uses: docker://appleboy/drone-ssh
|
||||
with:
|
||||
host: ${{ env.PUBLISH_HOST }}
|
||||
port: ${{ env.PUBLISH_PORT }}
|
||||
username: ${{ secrets.PUBLISH_USER_NAME }}
|
||||
password: ${{ secrets.PUBLISH_PASSWORD }}
|
||||
script: |
|
||||
|
||||
cd ${{ env.PUBLISH_PATH }}
|
||||
|
||||
[ -f .env ] && export $(sed '/^#/d' .env)
|
||||
|
||||
docker stack deploy -c docker-compose.yaml --with-registry-auth mk
|
||||
|
||||
- name: 发送构建通知
|
||||
if: ${{ always() }}
|
||||
uses: actions/webhook@master
|
||||
with:
|
||||
urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=fd8e4bfb-a906-4601-9894-e166b3ecedda
|
||||
content_type: application/json
|
||||
template: |
|
||||
{
|
||||
"msgtype": "markdown",
|
||||
"markdown": {
|
||||
"content": "${{ job.status == 'success' && '✅' || '❌' }}**${{ gitea.repository }}**
|
||||
>**构建结果**: ${{ job.status }}
|
||||
>**构建详情**: [点击查看](${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }})
|
||||
>**代码分支**: ${{ gitea.ref_name }}
|
||||
>**提交标识**: ${{ gitea.sha }}
|
||||
>**提交发起**: ${{ gitea.actor}}
|
||||
"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
name: 部署到测试环境
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- staging
|
||||
|
||||
env:
|
||||
IMAGE_NAME: ${{ gitea.repository_owner }}/cut.service
|
||||
PROJECT_NAME: Dolphin.ExamPictureCut.HttpApi.Host
|
||||
PUBLISH_PATH: marking.cut.service
|
||||
PUBLISH_HOST: 10.255.255.3
|
||||
PUBLISH_PORT: 22
|
||||
ASPNETCORE_ENVIRONMENT: Staging
|
||||
|
||||
jobs:
|
||||
job1:
|
||||
name: 编译发布
|
||||
runs-on: linux-amd
|
||||
container:
|
||||
image: node:16-bullseye
|
||||
volumes:
|
||||
- /opt/.runner/nuget_packages:/root/.nuget/packages
|
||||
|
||||
steps:
|
||||
- name: 下载源码
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: 编译后端
|
||||
uses: actions/aspnet@8.0
|
||||
with:
|
||||
project_name: ${{ env.PROJECT_NAME }}
|
||||
|
||||
- name: 打包上传镜像
|
||||
uses: actions/docker@master
|
||||
with:
|
||||
registry: ${{ secrets.DOCKER_REGISTRY }}
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
image: ${{ env.IMAGE_NAME }}
|
||||
context: publish
|
||||
tags: latest,${{ gitea.ref_name }}
|
||||
|
||||
- name: 生成环境变量文件
|
||||
env:
|
||||
env_file: |
|
||||
REGISTRY=${{ secrets.DOCKER_REGISTRY }}
|
||||
OWNER=${{ gitea.repository_owner }}
|
||||
TAG=${{ gitea.ref_name }}
|
||||
ASPNETCORE_ENVIRONMENT=${{ env.ASPNETCORE_ENVIRONMENT }}
|
||||
run: |
|
||||
echo "$env_file">.env
|
||||
|
||||
- name: 复制发布脚本
|
||||
uses: docker://appleboy/drone-scp
|
||||
with:
|
||||
host: ${{ env.PUBLISH_HOST }}
|
||||
port: ${{ env.PUBLISH_PORT }}
|
||||
username: ${{ secrets.PUBLISH_USER_NAME }}
|
||||
password: ${{ secrets.PUBLISH_PASSWORD }}
|
||||
target: ${{ env.PUBLISH_PATH }}
|
||||
source: docker-compose.yaml,.env
|
||||
|
||||
- name: 部署到服务器
|
||||
uses: docker://appleboy/drone-ssh
|
||||
with:
|
||||
host: ${{ env.PUBLISH_HOST }}
|
||||
port: ${{ env.PUBLISH_PORT }}
|
||||
username: ${{ secrets.PUBLISH_USER_NAME }}
|
||||
password: ${{ secrets.PUBLISH_PASSWORD }}
|
||||
script: |
|
||||
|
||||
cd ${{ env.PUBLISH_PATH }}
|
||||
|
||||
[ -f .env ] && export $(sed '/^#/d' .env)
|
||||
|
||||
docker stack deploy -c docker-compose.yaml --with-registry-auth mk
|
||||
|
||||
- name: 发送构建通知
|
||||
if: ${{ always() }}
|
||||
uses: actions/webhook@master
|
||||
with:
|
||||
urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=fd8e4bfb-a906-4601-9894-e166b3ecedda
|
||||
content_type: application/json
|
||||
template: |
|
||||
{
|
||||
"msgtype": "markdown",
|
||||
"markdown": {
|
||||
"content": "${{ job.status == 'success' && '✅' || '❌' }}**${{ gitea.repository }}**
|
||||
>**构建结果**: ${{ job.status }}
|
||||
>**构建详情**: [点击查看](${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }})
|
||||
>**代码分支**: ${{ gitea.ref_name }}
|
||||
>**提交标识**: ${{ gitea.sha }}
|
||||
>**提交发起**: ${{ gitea.actor}}
|
||||
"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
name: 部署到生产环境
|
||||
|
||||
on:
|
||||
release:
|
||||
types:
|
||||
- published
|
||||
|
||||
env:
|
||||
IMAGE_NAME: ${{ gitea.repository_owner }}/cut.service
|
||||
PROJECT_NAME: Dolphin.ExamPictureCut.HttpApi.Host
|
||||
PUBLISH_PATH: marking.cut.service
|
||||
# PUBLISH_HOST: 10.255.255.3
|
||||
# PUBLISH_PORT: 22
|
||||
ASPNETCORE_ENVIRONMENT: Production
|
||||
|
||||
jobs:
|
||||
job1:
|
||||
name: 编译发布
|
||||
runs-on: linux-amd
|
||||
container:
|
||||
image: node:16-bullseye
|
||||
volumes:
|
||||
- /opt/.runner/nuget_packages:/root/.nuget/packages
|
||||
|
||||
steps:
|
||||
- name: 下载源码
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: 编译后端
|
||||
uses: actions/aspnet@8.0
|
||||
with:
|
||||
project_name: ${{ env.PROJECT_NAME }}
|
||||
|
||||
- name: 打包上传镜像
|
||||
uses: actions/docker@master
|
||||
with:
|
||||
registry: ${{ secrets.DOCKER_REGISTRY }}
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
image: ${{ env.IMAGE_NAME }}
|
||||
context: publish
|
||||
tags: latest,${{ gitea.ref_name }}
|
||||
|
||||
- name: 打包压缩
|
||||
run: |
|
||||
tar -zcvf marking.cut.service.tar.gz publish
|
||||
|
||||
- name: 发送到web站点
|
||||
uses: docker://appleboy/drone-scp
|
||||
with:
|
||||
# 需要部署的主机地址
|
||||
host: 10.255.255.3
|
||||
# 主机ssh端口
|
||||
port: 22
|
||||
username: ${{ secrets.PUBLISH_USER_NAME }}
|
||||
password: ${{ secrets.PUBLISH_PASSWORD }}
|
||||
command_timeout: 2m
|
||||
overwrite: true
|
||||
target: /etc/nginx/wwwroot/static/marking
|
||||
source: marking.cut.service.tar.gz
|
||||
|
||||
- name: 启动生产环境105
|
||||
uses: docker://appleboy/drone-ssh
|
||||
with:
|
||||
host: minio.23544.com
|
||||
port: 22105
|
||||
username: marking
|
||||
password: ${{ secrets.PWD_105 }}
|
||||
script: |
|
||||
|
||||
mkdir /d/marking.cut.service
|
||||
cd /d/marking.cut.service
|
||||
curl "http://localhost:5244/publish/kill?processName=Dolphin.ExamPictureCut.HttpApi.Host"
|
||||
rm -rf marking.cut.service.tar.gz
|
||||
curl -O https://static.w.23544.com:8843/marking/marking.cut.service.tar.gz
|
||||
tar -zxvf marking.cut.service.tar.gz
|
||||
curl "http://localhost:5244/publish/run?execPath=D:/marking.cut.service/publish/Dolphin.ExamPictureCut.HttpApi.Host.exe&count=2"
|
||||
|
||||
- name: 启动生产环境106
|
||||
uses: docker://appleboy/drone-ssh
|
||||
with:
|
||||
host: minio.23544.com
|
||||
port: 22106
|
||||
username: marking
|
||||
password: ${{ secrets.PWD_106 }}
|
||||
script: |
|
||||
|
||||
mkdir /d/marking.cut.service
|
||||
cd /d/marking.cut.service
|
||||
curl "http://localhost:5244/publish/kill?processName=Dolphin.ExamPictureCut.HttpApi.Host"
|
||||
rm -rf marking.cut.service.tar.gz
|
||||
curl -O https://static.w.23544.com:8843/marking/marking.cut.service.tar.gz
|
||||
tar -zxvf marking.cut.service.tar.gz
|
||||
curl "http://localhost:5244/publish/run?execPath=D:/marking.cut.service/publish/Dolphin.ExamPictureCut.HttpApi.Host.exe&count=2"
|
||||
|
||||
- name: 发送构建通知
|
||||
if: ${{ always() }}
|
||||
uses: actions/webhook@master
|
||||
with:
|
||||
urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=fd8e4bfb-a906-4601-9894-e166b3ecedda
|
||||
content_type: application/json
|
||||
template: |
|
||||
{
|
||||
"msgtype": "markdown",
|
||||
"markdown": {
|
||||
"content": "${{ job.status == 'success' && '✅' || '❌' }}**${{ gitea.repository }}**
|
||||
>**构建结果**: ${{ job.status }}
|
||||
>**构建详情**: [点击查看](${{ gitea.server_url }}/${{ gitea.repository }}/actions/runs/${{ gitea.run_number }})
|
||||
>**代码分支**: ${{ gitea.ref_name }}
|
||||
>**提交标识**: ${{ gitea.sha }}
|
||||
>**提交发起**: ${{ gitea.actor}}
|
||||
"
|
||||
}
|
||||
}
|
||||
|
|
@ -47,7 +47,7 @@ public class ExamManager : DomainService, IExamManager
|
|||
public async Task ExamStudentGather(ExamStudentGatherEto eto)
|
||||
{
|
||||
var penSerial = eto.StudentExamNum;
|
||||
Logger.LogInformation("{ExamSubjectId} {penSerial} 开始收集...", eto.ExamSubjectId, penSerial);
|
||||
Logger.LogInformation($"开始收集... 参数:{JsonConvert.SerializeObject(eto)}");
|
||||
var guid = GuidGenerator.Create().ToString("N");
|
||||
|
||||
var templates = await Db.Queryable<GroupBookPaperTemplate>().Where(w => w.BookId == eto.BookId)
|
||||
|
|
@ -70,7 +70,7 @@ public class ExamManager : DomainService, IExamManager
|
|||
var paperIds = templates.Select(s => s.PaperId).ToList();
|
||||
|
||||
// 获取点阵数据
|
||||
var timespan = (long)(eto.LastCollectTime - new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds;
|
||||
var timespan = (long)(eto.LastCollectTime - TimeZoneInfo.ConvertTimeFromUtc(new DateTime(1970, 1, 1), TimeZoneInfo.Local)).TotalMilliseconds;
|
||||
var lattices = await DbPenOffline.Queryable<PenOfflineData>()
|
||||
.Where(w => w.PenSerial == penSerial && paperIds.Contains(w.PageSerial) && w.logType == LogType.作业 && w.Time <= timespan)
|
||||
.Select(s => new PenOfflineData
|
||||
|
|
@ -87,7 +87,7 @@ public class ExamManager : DomainService, IExamManager
|
|||
if (lattices.Count == 0)
|
||||
{
|
||||
await DbBiz.Updateable<ExamSubjectSchoolStudent>().SetColumns(s => s.CollectStatus == 2).Where(w => w.ExamSubjectSchoolId == eto.ExamSubjectSchoolId && w.StudentExamNum == penSerial).ExecuteCommandAsync();
|
||||
Logger.LogInformation("{ExamSubjectId} {penSerial} 无点阵数据", eto.ExamSubjectId, penSerial);
|
||||
Logger.LogInformation($"{eto.ExamSubjectId} {penSerial} {string.Join(',', paperIds)} {timespan} 无点阵数据");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ public class ExamManager : DomainService, IExamManager
|
|||
}).ToListAsync();
|
||||
|
||||
var gotoCount = 0;
|
||||
dotPenOriginalImg:
|
||||
dotPenOriginalImg:
|
||||
var zgtSettingDtls = await DbBiz.Queryable<MarkingSettingSubjective>().Where(w => w.ExamSubjectId == eto.ExamSubjectId).ToListAsync();
|
||||
|
||||
// 割原题
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ public class ExamAppService : DolphinAppService
|
|||
|
||||
public async Task Test()
|
||||
{
|
||||
await _examManager.ExamStudentGather(new() { SchoolId = 1, StudentExamNum = "BP2-3G3-07K-BZ", BookId = 528102717276229, ExamSubjectSchoolId = 528066671910982, ExamSubjectId = 528066655817797, LastCollectTime = DateTime.Now });
|
||||
await _examManager.ExamStudentGather(new() { SchoolId = 3, StudentExamNum = "BP2-3G3-07K-C1", BookId = 529493484986437, ExamSubjectSchoolId = 530151338438726, ExamSubjectId = 530151329325125, LastCollectTime = DateTime.Now });
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using Serilog;
|
||||
using Serilog;
|
||||
using Serilog.Events;
|
||||
|
||||
namespace Dolphin.ExamPictureCut;
|
||||
|
|
@ -28,6 +28,7 @@ public class Program
|
|||
try
|
||||
{
|
||||
Log.Information("Starting Dolphin.ExamPictureCut.HttpApi.Host.");
|
||||
Log.Information("Current Env:" + Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"));
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
builder.Host.AddAppSettingsSecretsJson()
|
||||
.UseAutofac()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"App": {
|
||||
"CorsOrigins": "https://*.23544.com"
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"marking_basic": "Server=102553.23544.com;Port=3306;Database=marking_basic;Uid=marking;Pwd=qwe123!@#;AllowLoadLocalInfile=true;",
|
||||
"penoffline": "host=47.108.209.28;port=8812;username=zhjs;password=zhjsniubi;database=qdb;ServerCompatibilityMode=NoTypeLoading;"
|
||||
},
|
||||
"Redis": {
|
||||
"Configuration": "102553.23544.com,password=qwe123!@#,defaultDatabase=1,idleTimeout=3000,poolsize=5,prefix=marking"
|
||||
},
|
||||
"StringEncryption": {
|
||||
"DefaultPassPhrase": "LB6Ts3T0sdE5VSNq"
|
||||
},
|
||||
"RabbitMQ": {
|
||||
"Connections": {
|
||||
"Default": {
|
||||
"HostName": "102553.23544.com",
|
||||
"Port": "5672",
|
||||
"UserName": "mkadmin",
|
||||
"Password": "poiuyt)(*&^%",
|
||||
"VirtualHost": "marking"
|
||||
}
|
||||
},
|
||||
"EventBus": {
|
||||
"ClientName": "collect_queue",
|
||||
"ExchangeName": "exam_gather_ex"
|
||||
}
|
||||
},
|
||||
"Aliyun": {
|
||||
"AccessKeyId": "LTAI5tJ6stiMWGhVU3TtRyAf",
|
||||
"AccessKeySecret": "A3pwnGx2SW1orvraCkXta6Lx4sV06e",
|
||||
"Endpoint": "https://oss-cn-chengdu.aliyuncs.com",
|
||||
"RegionId": "oss-cn-chengdu",
|
||||
"ContainerName": "mk-xk-test",
|
||||
"Host": "//mk-xk-test.23544.com"
|
||||
}
|
||||
}
|
||||
|
|
@ -3,11 +3,11 @@
|
|||
"CorsOrigins": "https://*.23544.com"
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"marking_basic": "Server=192.168.2.9;Port=3306;Database=marking_basic;Uid=root;Pwd=qwe123!@#;AllowLoadLocalInfile=true;",
|
||||
"marking_basic": "Server=mk-rds.23544.com;Port=33306;Database=marking_basic;Uid=marking;Pwd=poiuytPOIUYT098765)(*&^%;AllowLoadLocalInfile=true;",
|
||||
"penoffline": "host=47.108.209.28;port=8812;username=zhjs;password=zhjsniubi;database=qdb;ServerCompatibilityMode=NoTypeLoading;"
|
||||
},
|
||||
"Redis": {
|
||||
"Configuration": "192.168.2.7:6379,password=qwe123!@#,defaultDatabase=14,idleTimeout=3000,poolsize=5,prefix=marking"
|
||||
"Configuration": "47.109.67.254:16379,password=poiuyt)(*&^%,defaultDatabase=0,idleTimeout=3000,poolsize=5,prefix=marking"
|
||||
},
|
||||
"StringEncryption": {
|
||||
"DefaultPassPhrase": "LB6Ts3T0sdE5VSNq"
|
||||
|
|
@ -15,10 +15,10 @@
|
|||
"RabbitMQ": {
|
||||
"Connections": {
|
||||
"Default": {
|
||||
"HostName": "192.168.2.7",
|
||||
"HostName": "47.109.67.254",
|
||||
"Port": "5672",
|
||||
"UserName": "rabbit",
|
||||
"Password": "qwe123!@#",
|
||||
"UserName": "mkadmin",
|
||||
"Password": "poiuyt)(*&^%",
|
||||
"VirtualHost": "marking"
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
version: "3"
|
||||
|
||||
services:
|
||||
marking-cut-service:
|
||||
image: ${REGISTRY:-harbor.w.23544.com:8843}/marking/cut.service:${TAG:-latest}
|
||||
hostname: marking
|
||||
restart: always
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
ASPNETCORE_ENVIRONMENT: ${ASPNETCORE_ENVIRONMENT:-Development}
|
||||
# ports:
|
||||
# - 9925:80
|
||||
deploy:
|
||||
mode: replicated
|
||||
replicas: 1
|
||||
Loading…
Reference in New Issue