总结陈词:没啥新任务,只在月底给了个sql优化,工作部分
1、第一个月的几个定时任务修补,基本1个钟就搞完了
2、前端js任务(新增关联未恢复IMS工单字段),最后卡在上级自己手里,没下文
3、nginx rewrite,这个是个巨坑
http://xxx/url=http[s]://xxx 跳转到http://xxx
网址还带个链接,nginx默认rewrite会把http:// 变成http:/ 少了个斜杠,贼恶心,匹配//的正则也是各种坑,后端还不处理跨域,正则是写不出来了,暂时如下临时处理:
server {
listen 80;
server_name xxx;
location ~* /shorturl/https {
rewrite ^/shorturl/(https:/)+(.*)$ /xxx?url=https://$2 break;
proxy_set_header Host $host;
proxy_pass http://;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type,Authorization';
}
location ~* /shorturl/http {
rewrite ^/shorturl/(http:/)+(.*)$ /xxx?url=http://$2 break;
proxy_set_header Host $host;
proxy_pass http://;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Content-Type,Authorization';
}
location ~* /shorturl/ {
return 406 'request uri should include http https';
}
}
4、sql优化任务,这也是个巨坑
一个表关联用户表,存在多个字段关联,并且还是逗号分隔的id,贼恶心,外包改不了代码,只能硬着头皮改sql语句,每个关联都是用子查询去处理,用了group_concat find_in_set,要优化的语句如下:
SELECT a.cab_number, a.submiterid, a.submitime, a.cab_type, a.need_source
, a.event_number, a.release_type, a.emergency_release_reason, b.attrCiname, b.col_538_ AS "cmdb_id"
, a.systen_level, a.isneedcab, a.cab_title, a.source_describe, a.sourceinfo
, a.related_notify, a.inform_way, a.other_description, c.name AS "nofify_principal", d.cknowpeos
, e.review_result, a.weekend_test, a.weekend_test_type, f.coordinator_in_test, g.test_participants
, a.resource_fp_description
FROM gfzq_cab a
LEFT JOIN ci b ON a.change_system = b.ci_id
LEFT JOIN k_user c ON a.nofify_principal = c.id
LEFT JOIN (
SELECT a.cab_number, group_concat(b.name) AS "cknowpeos"
FROM (
SELECT cab_number, cknowpeos
FROM gfzq_cab
WHERE cknowpeos != ''
) a, k_user b
WHERE FIND_IN_SET(b.uuid, a.cknowpeos)
GROUP BY a.cab_number
) d
ON a.cab_number = d.cab_number
LEFT JOIN (
SELECT a.cab_number, group_concat(b.name) AS "review_result"
FROM (
SELECT cab_number, review_result
FROM gfzq_cab
WHERE review_result != ''
) a, k_user b
WHERE FIND_IN_SET(b.uuid, a.review_result)
GROUP BY a.cab_number
) e
ON a.cab_number = e.cab_number
LEFT JOIN (
SELECT a.cab_number, group_concat(b.name) AS "coordinator_in_test"
FROM (
SELECT cab_number, coordinator_in_test
FROM gfzq_cab
WHERE coordinator_in_test != ''
) a, k_user b
WHERE FIND_IN_SET(b.uuid, a.coordinator_in_test)
GROUP BY a.cab_number
) f
ON a.cab_number = f.cab_number
LEFT JOIN (
SELECT a.cab_number, group_concat(b.name) AS "test_participants"
FROM (
SELECT cab_number, test_participants
FROM gfzq_cab
WHERE test_participants != ''
) a, k_user b
WHERE FIND_IN_SET(b.uuid, a.test_participants)
GROUP BY a.cab_number
) g
ON a.cab_number = g.cab_number
WHERE a.weekend_test = '涉及'\G;
自我学习部分:
1、 把第一个月写的java spring demo 用gitlab-ci部署了下,学了下gitlab-ci的模板库封装,跟jenkins的共享库一个东西,只不过gitlab-ci的引用更人性化一点,
.gitlab-ci.yml文件如下,shell runner,没用docker in docker
include:
- project: "yw/cicd"
file: "templates/notify.yml"
stages:
- print
- compile
- build
- run
- notify
variables:
NAMESPACE: ms-test
SERVICE: sb-test
TAG: $CI_COMMIT_SHORT_SHA
job_print:
stage: print
script:
- "echo CI_COMMIT_REF_NAME $CI_COMMIT_REF_NAME"
- "echo DockerUser global var $DockerUser"
- "echo DockerUrl set in yml $DockerUrl"
- "echo CI_COMMIT_TIMESTAMP $CI_COMMIT_TIMESTAMP"
- "echo GITLAB_USER_NAME $GITLAB_USER_NAME"
- "echo CI_PROJECT_NAME $CI_PROJECT_NAME"
- "echo COMMIT ID $CI_COMMIT_SHA"
- "echo COMMIT_MESSAGE $CI_COMMIT_MESSAGE"
- "echo CI_COMMIT_BRANCH $CI_COMMIT_BRANCH"
- "echo CI_PIPELINE_URL $CI_PIPELINE_URL"
- "echo CI_COMMIT_SHORT_SHA $CI_COMMIT_SHORT_SHA"
- "echo CI_COMMIT_TAG $CI_COMMIT_TAG"
job_compile:
stage: compile
script:
- "echo build"
- "mvn package -Dmaven.skip.test=true"
tags:
- shell-runner-201
artifacts:
paths:
- target/*.jar
job_build:
stage: build
script:
- "docker build -t $HARBOR_REGISTRY/$NAMESPACE/$SERVICE:$TAG ."
tags:
- shell-runner-201
only:
- develop
job_push
stage: push
script:
- "docker login -u$dockerHubUser -p$dockerHubPassword $HARBOR_REGISTRY"
- "if [ $? -eq 0 ];then docker push $HARBOR_REGISTRY/$NAMESPACE/$SERVICE:$TAG ;done"
tags:
- shell-runner-201
only:
- develop
job_run:
stage: run
script:
- "docker stop test && docker rm test"
- "docker run -d -p 9988:9988 -e JAVA_OPTS='-Xmx512M -Xms512M -Xmn256M -XX:MaxMetaspaceSize=64M -XX:MetaspaceSize=64M' --name test $HARBOR_REGISTRY/$NAMESPACE/$SERVICE:$TAG "
tags:
- shell-runner-201
only:
- develop
notifyOnSuccess:
tags:
- shell-runner-201
notifyOnFail:
tags:
- shell-runner-201
2、学习itsm js脚本 ,这种外包项目大量重复代码,layui+封装,这种内部工单流程项目都是巨长的form表单,粪坑
3、简单的定时任务管理已经写完了,推荐给上级,暂时没用,就这样了
4、postgresql学了下。
基本就这些,每天坐冷板凳,依然靠自己,还不到一个月快过年了