From 341dccfb5d9279a9f87ac05450c34dc2368b4132 Mon Sep 17 00:00:00 2001
From: Thierry Carrez <thierry@openstack.org>
Date: Tue, 7 Apr 2020 15:57:54 +0200
Subject: [PATCH] Introduce job for granular GitHub mirroring

Create a openstack-mirror-on-github job that uses the
openstack-mirroring user on GitHub (and its SSH key) to
individually mirror repositories to the "openstack"
organization on GitHub.

That will allow us to turn off global replication of the
'openstack/* repositories at Gerrit-level.

Enable the new job on openstack/release-test as a test. It
should be able to run concurrently with Gerrit-wide
mirroring as this is an indempotent operation.

Once this merges and is validated, we can apply the job to
all official/active openstack projects, before disabling the
Gerrit-wide replication (see https://review.opendev.org/718478).

Change-Id: Ie7b4f520d6f47d56a71c812dcc06fd5d26da8fe0
---
 zuul.d/jobs.yaml     | 11 +++++++
 zuul.d/projects.yaml |  6 ++++
 zuul.d/secrets.yaml  | 78 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 95 insertions(+)

diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 78cd2dc580..e5e8e008a4 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -744,6 +744,17 @@
       - npm_credentials
       - gpg_key
 
+- job:
+    name: openstack-mirror-on-github
+    parent: upload-git-mirror
+    description: Mirrors official projects to github's openstack org
+    vars:
+      git_mirror_repository: openstack/{{ zuul.project.short_name }}
+    secrets:
+      - name: git_mirror_credentials
+        secret: openstack-github-mirroring
+        pass-to-parent: true
+
 - job:
     name: propose-updates
     pre-run: playbooks/proposal/pre.yaml
diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml
index 0dc3ff24e0..b3f97bf155 100644
--- a/zuul.d/projects.yaml
+++ b/zuul.d/projects.yaml
@@ -3911,6 +3911,12 @@
     templates:
       - publish-to-pypi
 
+- project:
+    name: openstack/release-test
+    post:
+      jobs:
+        - openstack-mirror-on-github
+
 - project:
     name: openstack/renderspec
     templates:
diff --git a/zuul.d/secrets.yaml b/zuul.d/secrets.yaml
index eea5aa2edc..110b4caff8 100644
--- a/zuul.d/secrets.yaml
+++ b/zuul.d/secrets.yaml
@@ -744,3 +744,81 @@
           3MX5nl+WG/X0P2tygYBnNz5Gg8jD7s2JMiK4SxiW/Eh0OedJjT/4xQJWn5FXNT9Rr68LQ
           vmUXAIAaetiUdqeMWPRmwjMN+AicClbNWmLNFGXP3eqWQwp/Jp0fWY+8dV3aeHlB+kc92
           D9dOc6WmAHlzOJsvrZYWpizB2MW4ScVSUFbVe2d3FxzR6++mxM5t71D6tTqTW4=
+
+- secret:
+    name: openstack-github-mirroring
+    data:
+      user: openstack-mirroring
+      host: github.com
+      host_key: github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
+      ssh_key: !encrypted/pkcs1-oaep
+        - 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