Badges: port cronjobs

Signed-off-by: Aurélien Bompard <aurelien@bompard.org>
This commit is contained in:
Aurélien Bompard 2024-03-22 16:37:00 +01:00
parent c6571e6ff6
commit a6e8b9190f
No known key found for this signature in database
GPG key ID: 31584CFEB9BF64AD
4 changed files with 165 additions and 3 deletions

View file

@ -12,7 +12,7 @@
- /srv/web/infra/ansible/vars/global.yml
- /srv/private/ansible/vars.yml
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
# - /srv/web/infra/ansible/vars/apps/badges.yml
- /srv/web/infra/ansible/vars/apps/badges.yml
tasks:
- name: DB user
@ -36,7 +36,7 @@
- /srv/web/infra/ansible/vars/global.yml
- /srv/private/ansible/vars.yml
- /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml
# - /srv/web/infra/ansible/vars/apps/badges.yml
- /srv/web/infra/ansible/vars/apps/badges.yml
roles:
- role: rabbit/user
@ -139,6 +139,12 @@
file: deploymentconfig.yml
objectname: deploymentconfig.yml
# Cron jobs
- role: openshift/object
app: badges
template: cron-award.yml
objectname: cron-award.yml
- role: openshift/start-build
app: badges
buildname: "{{ item }}"

View file

@ -0,0 +1,45 @@
#
### Badges-awarding cron jobs
#
{% for cronjob in badges_award_cronjobs %}
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: award-{{ cronjob.name }}
spec:
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
concurrencyPolicy: Forbid
schedule: "{{ cronjob.schedule }}"
startingDeadlineSeconds: 500
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: badges
image: image-registry.openshift-image-registry.svc:5000/badges/fedbadges:latest
command: ["/opt/app-root/bin/award-{{ cronjob.name }}"]
volumeMounts:
- name: etc-badges
mountPath: "/etc/badges"
readOnly: true
- name: ipa-config-volume
mountPath: /etc/ipa
readOnly: true
- name: keytab-volume
mountPath: /etc/keytabs
readOnly: true
volumes:
- name: etc-badges
configMap:
name: badges
- name: ipa-config-volume
configMap:
name: ipa-client-config
- name: keytab-volume
secret:
secretName: keytab
{% endfor %}

View file

@ -47,7 +47,7 @@ consume_delay = 1
# This is a sqlalchemy URI that points to the Badges DB. In
# production, this will be a postgres URI.
database_uri = "postgresql://{{ tahrirDBUser }}:{{ (env == 'production')|ternary(tahrirDBPassword, tahrirstgDBPassword) }}@db01{{ env_suffix }}/tahrir"
database_uri = "postgresql://{{ tahrirDBUser }}:{{ (env == 'production')|ternary(tahrirDBPassword, tahrirstgDBPassword) }}@{{ badges_db_host }}/{{ badges_db_name }}"
# Datanommer database URI
datanommer_db_uri = "postgresql://{{ datanommerDBUser }}:{{ (env == 'production')|ternary(datanommerDBPassword, datanommer_stg_db_password) }}@db-datanommer{{ (env == 'production')|ternary('02', '01') }}{{ env_suffix }}/datanommer2"
@ -65,6 +65,103 @@ issuer_name = "Fedora Project"
issuer_url = "http://fedoraproject.org"
issuer_email = "badges@fedoraproject.org"
# Members and Sponsors of these groups get the corresponding badge
[[consumer_config.group_badges]]
group = "3d-printing-sig"
badge = "3d-printing-sig-member"
[[consumer_config.group_badges]]
group = "cla_done"
badge = "involvement"
[[consumer_config.group_badges]]
group = "advocates"
badge = "fedora-advocate"
[[consumer_config.group_badges]]
group = "ambassadors"
badge = "ambassador"
[[consumer_config.group_badges]]
group = "ambassadors"
memberships = ["sponsor"]
badge = "ambassadors-sponsor"
[[consumer_config.group_badges]]
group = "commops"
badge = "commops-superstar"
[[consumer_config.group_badges]]
group = "council"
badge = "council-member"
[[consumer_config.group_badges]]
group = "designteam"
badge = "pixel-ninja"
[[consumer_config.group_badges]]
group = "dotnet-team"
badge = "dotnet-sig-member"
[[consumer_config.group_badges]]
group = "fedora-hams"
badge = "amateur-radio-sig-member"
[[consumer_config.group_badges]]
group = "fi-apprentice"
badge = "no-longer-a-ronin"
[[consumer_config.group_badges]]
group = "gitfedora-web"
badge = "rock-the-web!"
[[consumer_config.group_badges]]
group = "git-fedora-electronic-lab"
badge = "fel-member"
[[consumer_config.group_badges]]
group = "iot"
badge = "iot-working-group-member"
[[consumer_config.group_badges]]
group = "irc-support-operators"
badge = "your-call-may-be-monitored-for-quality-assurance"
[[consumer_config.group_badges]]
group = "kde-sig"
badge = "kde-sig"
[[consumer_config.group_badges]]
group = "lxqt-sig"
badge = "lxqt-sig-member"
[[consumer_config.group_badges]]
group = "marketing"
badge = "called-to-action"
[[consumer_config.group_badges]]
group = "mindshare"
badge = "meeting-of-the-minds"
[[consumer_config.group_badges]]
group = "modularity-wg"
badge = "modularity-wg-member"
[[consumer_config.group_badges]]
group = "neuro-sig"
badge = "neurofedora-sig-member"
[[consumer_config.group_badges]]
group = "packager"
memberships = ["sponsor"]
badge = "packager-sponsor"
[[consumer_config.group_badges]]
group = "provenpackager"
badge = "proven-packager"
[[consumer_config.group_badges]]
group = "proventesters"
badge = "proven-tester"
[[consumer_config.group_badges]]
group = "robotics-sig"
badge = "domo-arigato"
[[consumer_config.group_badges]]
group = "ruby-sig"
badge = "ruby-sig-member"
[[consumer_config.group_badges]]
group = "security-team"
badge = "security-team"
[[consumer_config.group_badges]]
group = "summer-coding"
badge = "summer-coder"
[[consumer_config.group_badges]]
group = "sysadmin-main"
badge = "trust-me,-i-know-what-i-am-doing"
[[consumer_config.group_badges]]
group = "sysadmin-badges"
badge = "inside-job"
[[consumer_config.group_badges]]
group = "videos"
badge = "videographer"
[qos]
prefetch_size = 0

14
vars/apps/badges.yml Normal file
View file

@ -0,0 +1,14 @@
---
badges_db_host: "db01{{ env_suffix }}"
badges_db_name: "tahrir"
badges_award_cronjobs:
- name: group-membership
schedule: "25 13 * * *"
- name: libravatar
schedule: "40 14 */2 * *"
- name: mirror
schedule: "20 */2 * * *"
- name: lifecycle
schedule: "40 2 * * 3"
- name: badges-dev
schedule: "40 2 * * 4"