languages: use templating for similar cronjobs & allow initial import with playbook tags

This commit is contained in:
Francois Andrieu 2021-03-29 16:49:00 +02:00 committed by kevin
parent 75d43faea6
commit 486d9f6c7f
3 changed files with 113 additions and 139 deletions

View file

@ -68,3 +68,33 @@
tags: tags:
- never - never
- delete - delete
post_tasks:
- name: run initial f.10 import
command: "oc create job stats-10-{{ lookup('pipe','date +%s') }}-init --from=cronjob/stats-10"
tags:
- never
- init
- f10
- name: run initial f.20 import
command: "oc create job stats-20-{{ lookup('pipe','date +%s') }}-init --from=cronjob/stats-20"
tags:
- never
- init
- f20
- name: run initial f.30 import
command: "oc create job stats-30-{{ lookup('pipe','date +%s') }}-init --from=cronjob/stats-30"
tags:
- never
- init
- f30
- name: run initial f.latest import
command: "oc create job stats-latest-{{ lookup('pipe','date +%s') }}-init --from=cronjob/stats-latest"
tags:
- never
- init
- latest

View file

@ -1,13 +1,14 @@
{% if env == "production" %} {% if env == "production" %}
{% for release in ("10", "20", "30") %}
apiVersion: batch/v1beta1 apiVersion: batch/v1beta1
kind: CronJob kind: CronJob
metadata: metadata:
name: stats-33 name: "stats-{{ release }}"
spec: spec:
successfulJobsHistoryLimit: 3 successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 2 failedJobsHistoryLimit: 2
concurrencyPolicy: Forbid concurrencyPolicy: Forbid
schedule: "0 2 * * *" schedule: "0 2 */16 * *"
startingDeadlineSeconds: 500 startingDeadlineSeconds: 500
jobTemplate: jobTemplate:
spec: spec:
@ -17,79 +18,17 @@ spec:
labels: labels:
parent: "cron_stats" parent: "cron_stats"
spec: spec:
volumes: {% filter indent(width=10, first=True) %}
- name: srpm-data {% include "cron_template.yml" %}
persistentVolumeClaim: {% endfilter %}
claimName: "languages-storage{{ '-stg' if env == 'staging' else '' }}"
restartPolicy: Never
initContainers:
- name: clean-tmp
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
env:
- name: RELEASEVER
value: "33"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
command: ["/bin/sh", "-c"]
args:
- >
[ -d ${TMPDIR} ] && rm -Rf ${TMPDIR} ;
mkdir -p ${TMPDIR}
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
- name: extract
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
command:
- ./build.py
- "--results"
- f$(RELEASEVER)
env:
- name: RELEASEVER
value: "33"
- name: DNF_CONF
value: "dnf{{ '_stg' if env == 'staging' else '' }}_$(RELEASEVER).conf"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
- name: THREAD_MAX_CONN
value: "3"
- name: THREAD_MAX_EXTR
value: "3"
- name: THREAD_MAX
value: "8"
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
containers:
- name: stats
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
command: ["/bin/sh", "-c"]
args:
- >
./build_language_list.py --results f$(RELEASEVER) --refresh &&
./build_language_list.py --results f$(RELEASEVER) --analyzealllang &&
./build_tm.py --results f$(RELEASEVER) --compress &&
./build_stats.py --results f$(RELEASEVER)
env:
- name: RELEASEVER
value: "33"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
--- ---
{% endfor %}
{% endif %} {% endif %}
{% set release="34" %}
apiVersion: batch/v1beta1 apiVersion: batch/v1beta1
kind: CronJob kind: CronJob
metadata: metadata:
name: stats-34 name: "stats-latest"
spec: spec:
successfulJobsHistoryLimit: 3 successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 2 failedJobsHistoryLimit: 2
@ -104,73 +43,9 @@ spec:
labels: labels:
parent: "cron_stats" parent: "cron_stats"
spec: spec:
volumes: {% filter indent(width=10, first=True) %}
- name: srpm-data {% include "cron_template.yml" %}
persistentVolumeClaim: {% endfilter %}
claimName: "languages-storage{{ '-stg' if env == 'staging' else '' }}"
restartPolicy: Never
initContainers:
- name: clean-tmp
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
env:
- name: RELEASEVER
value: "34"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
command: ["/bin/sh", "-c"]
args:
- >
[ -d ${TMPDIR} ] && rm -Rf ${TMPDIR} ;
mkdir -p ${TMPDIR}
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
- name: extract
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
command:
- ./build.py
- "--results"
- f$(RELEASEVER)
env:
- name: RELEASEVER
value: "34"
- name: DNF_CONF
value: "dnf{{ '_stg' if env == 'staging' else '' }}_$(RELEASEVER).conf"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
- name: THREAD_MAX_CONN
value: "3"
- name: THREAD_MAX_EXTR
value: "3"
- name: THREAD_MAX
value: "8"
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
containers:
- name: stats
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
command: ["/bin/sh", "-c"]
args:
- >
./build_language_list.py --results f$(RELEASEVER) --refresh &&
./build_language_list.py --results f$(RELEASEVER) --analyzealllang &&
./build_tm.py --results f$(RELEASEVER) --compress &&
./build_stats.py --results f$(RELEASEVER)
env:
- name: RELEASEVER
value: "34"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
--- ---
apiVersion: batch/v1beta1 apiVersion: batch/v1beta1
kind: CronJob kind: CronJob
@ -202,8 +77,9 @@ spec:
command: ["/bin/sh", "-c"] command: ["/bin/sh", "-c"]
args: args:
- > - >
./build_website.py -v --results f33 ; for rel in $(ls -1d results/f*); do
./build_website.py -v --results f34 ; ./build_website.py -v --results $(basename ${rel}) ;
done ;
cd website && hugo -D --baseURL https://languages{{ env_suffix }}.fedoraproject.org && cd website && hugo -D --baseURL https://languages{{ env_suffix }}.fedoraproject.org &&
cp -R public /src/results/ cp -R public /src/results/
volumeMounts: volumeMounts:

View file

@ -0,0 +1,68 @@
volumes:
- name: srpm-data
persistentVolumeClaim:
claimName: "languages-storage{{ '-stg' if env == 'staging' else '' }}"
restartPolicy: Never
initContainers:
- name: clean-tmp
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
env:
- name: RELEASEVER
value: "{{ release }}"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
command: ["/bin/sh", "-c"]
args:
- >
[ -d ${TMPDIR} ] && rm -Rf ${TMPDIR} ;
mkdir -p ${TMPDIR}
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
- name: extract
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
command:
- ./build.py
- "--results"
- f$(RELEASEVER)
env:
- name: RELEASEVER
value: "{{ release }}"
- name: DNF_CONF
value: "dnf{{ '_stg' if env == 'staging' else '' }}_$(RELEASEVER).conf"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
- name: THREAD_MAX_CONN
value: "3"
- name: THREAD_MAX_EXTR
value: "3"
- name: THREAD_MAX
value: "8"
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results
containers:
- name: stats
image: "docker-registry.default.svc:5000/languages/builder:latest"
imagePullPolicy: Always
command: ["/bin/sh", "-c"]
args:
- >
./build_language_list.py --results f$(RELEASEVER) --refresh &&
./build_language_list.py --results f$(RELEASEVER) --analyzealllang &&
./build_tm.py --results f$(RELEASEVER) --compress &&
./build_stats.py --results f$(RELEASEVER)
env:
- name: RELEASEVER
value: "{{ release }}"
- name: TMPDIR
value: /src/results/f$(RELEASEVER)/tmp
volumeMounts:
- name: srpm-data
readOnly: false
mountPath: /src/results