From a6e8b9190fd71d7f6057ffa45a60b363aa755b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Bompard?= Date: Fri, 22 Mar 2024 16:37:00 +0100 Subject: [PATCH] Badges: port cronjobs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Aurélien Bompard --- playbooks/openshift-apps/badges.yml | 10 +- .../badges/templates/cron-award.yml | 45 +++++++++ .../badges/templates/fm-fedbadges.toml | 99 ++++++++++++++++++- vars/apps/badges.yml | 14 +++ 4 files changed, 165 insertions(+), 3 deletions(-) create mode 100644 roles/openshift-apps/badges/templates/cron-award.yml create mode 100644 vars/apps/badges.yml diff --git a/playbooks/openshift-apps/badges.yml b/playbooks/openshift-apps/badges.yml index 1bdba71628..de4049f945 100644 --- a/playbooks/openshift-apps/badges.yml +++ b/playbooks/openshift-apps/badges.yml @@ -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 }}" diff --git a/roles/openshift-apps/badges/templates/cron-award.yml b/roles/openshift-apps/badges/templates/cron-award.yml new file mode 100644 index 0000000000..7b44c331c3 --- /dev/null +++ b/roles/openshift-apps/badges/templates/cron-award.yml @@ -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 %} diff --git a/roles/openshift-apps/badges/templates/fm-fedbadges.toml b/roles/openshift-apps/badges/templates/fm-fedbadges.toml index c21567f4ea..d32b2759e9 100644 --- a/roles/openshift-apps/badges/templates/fm-fedbadges.toml +++ b/roles/openshift-apps/badges/templates/fm-fedbadges.toml @@ -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 diff --git a/vars/apps/badges.yml b/vars/apps/badges.yml new file mode 100644 index 0000000000..239336cb7b --- /dev/null +++ b/vars/apps/badges.yml @@ -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"