diff --git a/jenkins-cron.yaml b/jenkins-cron.yaml new file mode 100644 index 0000000..fc9a0a8 --- /dev/null +++ b/jenkins-cron.yaml @@ -0,0 +1,86 @@ +kind: ConfigMap +apiVersion: v1 +data: + config.yaml: |- + gradle: + caches: + - /home/gradle/caches + + jenkins: + schema: https + url: jenkins-ops.shasoapp.com + user: admin ## 需要替换 + token: xxxx ## 需要替换 + number: lastBuild + default_parameters: + - only_build: true ## jenkins中配置 + + jobs: # 需要编译的项目列表 + - echo-rework + - turing-message-center + - turing-payment-service + - turing-dmp + - turing-faceup + - turing-fluenty + - turing-maxxhealth + + +--- +kind: CronJob +apiVersion: batch/v1 +metadata: + name: jenkins-cron + namespace: ops + annotations: + description: 定时清理gradle缓存并刷新 +spec: + schedule: 0 3 * * * # 每天3点开始执行 + concurrencyPolicy: Replace + suspend: false + jobTemplate: + metadata: + creationTimestamp: null + spec: + template: + metadata: + creationTimestamp: null + labels: + app: jenkins-cron + version: v1 + spec: + volumes: + - name: gradle + persistentVolumeClaim: + claimName: pvc-jenkins-m2 ## gradle使用的缓存目录 + - name: config + configMap: + name: jenkins-cron-cm + defaultMode: 420 + containers: + - name: jenkins-cron + image: swr.cn-east-3.myhuaweicloud.com/turingsyn/ops/jenkins-cron:v1.9 + command: + - /app/jenkins-cron + resources: {} + volumeMounts: + - name: gradle + mountPath: /home/gradle + - name: config + mountPath: /app/config.yaml + subPath: config.yaml + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + imagePullPolicy: IfNotPresent + restartPolicy: OnFailure + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + securityContext: {} + imagePullSecrets: + - name: default-secret ## 镜像仓库认证文件 + schedulerName: default-scheduler + dnsConfig: + options: + - name: single-request-reopen + successfulJobsHistoryLimit: 3 + failedJobsHistoryLimit: 1 + diff --git a/readme.md b/readme.md index 2857fad..ee959cf 100644 --- a/readme.md +++ b/readme.md @@ -1 +1,22 @@ +## 原理 +jenkins-cron项目访问到jenkins使用gradle编译项目的缓存目录,删除缓存目录中的文件,达到清理缓存的目的。 +触发jenkins中相应job编译,刷新缓存。 + +## 使用方法 +* 前提 * +* 1. jenkins中对应的job需要配置布尔类型的only_build参数,当该参数为true时,仅编译,不进行发布。 * +* 2. jenkins中对应的job中需要配置触发远程构建时的身份令牌,目前只支持同一个身份令牌。 * + +## 编译 +```shell CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o jenkins-cron +``` + +## 打包镜像 +```shell +docker build -t swr.cn-east-3.myhuaweicloud.com/turingsyn/ops/jenkins-cron:v1.9 . +docker push swr.cn-east-3.myhuaweicloud.com/turingsyn/ops/jenkins-cron:v1.9 +``` + +## k8s使用 +* 需要挂载gradle使用的缓存目录