Feat: Add automatic copy from Nexus3 to DockerHub 54/104054/5
authorBengt Thuree <bthuree@linuxfoundation.org>
Tue, 17 Jan 2023 04:57:14 +0000 (15:57 +1100)
committerBengt Thuree <bthuree@linuxfoundation.org>
Thu, 2 Feb 2023 00:09:31 +0000 (11:09 +1100)
Copying new docker images from Nexus3 to DockerHub on a daily base.

Signed-off-by: Bengt Thuree <bthuree@linuxfoundation.org>
Change-Id: I4c5f35135cf10923a0b3fb1aba1a510194648cc8

jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/config-params.yaml [new file with mode: 0644]
jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/content [new symlink]
jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/serverCredentialMappings.sandbox.yaml [new symlink]
jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/serverCredentialMappings.yaml [new file with mode: 0644]
jjb/lf-infra-releasedockerhub.yaml [new file with mode: 0644]
jjb/run_releasedockerhub.sh [new file with mode: 0644]

diff --git a/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/config-params.yaml b/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/config-params.yaml
new file mode 100644 (file)
index 0000000..03a5446
--- /dev/null
@@ -0,0 +1,3 @@
+---
+name: "odl-releasedockerhub-authz-settings"
+comment: "odl-releasedockerhub-authz-settings"
diff --git a/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/content b/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/content
new file mode 120000 (symlink)
index 0000000..e830ebd
--- /dev/null
@@ -0,0 +1 @@
+../../../managed-config-templates/mavenSettings-content
\ No newline at end of file
diff --git a/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/serverCredentialMappings.sandbox.yaml b/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/serverCredentialMappings.sandbox.yaml
new file mode 120000 (symlink)
index 0000000..8f92057
--- /dev/null
@@ -0,0 +1 @@
+../../../managed-config-templates/mavenSettings-serverCredentialMappings.sandbox.yaml
\ No newline at end of file
diff --git a/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/serverCredentialMappings.yaml b/jenkins-config/managed-config-files/mavenSettings/odl-releasedockerhub-authz-settings/serverCredentialMappings.yaml
new file mode 100644 (file)
index 0000000..4d9da3e
--- /dev/null
@@ -0,0 +1,6 @@
+---
+serverCredentialMappings:
+  - serverId: "nexus3.opendaylight.org:10002"
+    credentialsId: "read-only-docker"
+  - serverId: "docker.io"
+    credentialsId: "odl_dockerhub_creds"
diff --git a/jjb/lf-infra-releasedockerhub.yaml b/jjb/lf-infra-releasedockerhub.yaml
new file mode 100644 (file)
index 0000000..682f0f6
--- /dev/null
@@ -0,0 +1,68 @@
+---
+- builder:
+    name: lf-odl-releasedockerhub-macro
+    builders:
+      - shell: !include-raw-escape:
+        - ./run_releasedockerhub.sh
+        ##- ../shell/run_releasedockerhub.sh "{org} {summary} {verbose} {copy}"
+
+
+- job:
+    name: lf-odl-release-docker-hub
+    build-timeout: 90
+
+    project-type: freestyle
+    node: ubuntu1804-docker-4c-4g
+    disable-job: false
+    disabled: '{disable-job}'
+
+    # Runs once a day
+    triggers:
+      - timed: '@daily'
+
+#   Define needed parameters for lf-infra-docker-login
+    parameters:
+      - string:
+          name: DOCKER_REGISTRY
+          default: 'nexus3.opendaylight.org'
+      - string:
+          name: REGISTRY_PORTS
+          default: '10002'
+      - string:
+          name: DOCKERHUB_REGISTRY
+          default: 'docker.io'
+
+#   Define needed parameters for lf-odl-releasedockerhub-macro
+      - string:
+          name: RELEASEDOCKERHUB_ORG
+          default: 'opendaylight'
+          description: ''
+      - string:
+          name: RELEASEDOCKERHUB_REPO
+          default: ''
+          description: 'Only match repos that contains this string'
+      - string:
+          name: RELEASEDOCKERHUB_EXACT
+          default: ''
+          description: 'Repo has to exactly match RELEASEDOCKERHUB_REPO '
+      - string:
+          name: RELEASEDOCKERHUB_SUMMARY
+          default: 'Yes'
+          description: 'Provides a brief statistic summary of what it found, and what it should do. Activate with Yes'
+      - string:
+          name: RELEASEDOCKERHUB_VERBOSE
+          default: ''
+          description: 'Provides a verbose output of the operations. Activate with Yes'
+      - string:
+          name: RELEASEDOCKERHUB_COPY
+          default: 'Yes'
+          description: 'If a copy operation should be done from Nexus3 to docker hub. Activate with Yes'
+
+
+    builders:
+      - lf-infra-pre-build                                  ## shell/python-tools-install.sh
+      - lf-infra-docker-login:
+          global-settings-file: 'global-settings'
+          settings-file: 'odl-releasedockerhub-authz-settings'
+      - lf-odl-releasedockerhub-macro:
+
diff --git a/jjb/run_releasedockerhub.sh b/jjb/run_releasedockerhub.sh
new file mode 100644 (file)
index 0000000..474911d
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+# SPDX-License-Identifier: EPL-1.0
+##############################################################################
+# Copyright (c) 2019 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+echo "---> run_releasedockerhub.sh"
+# Ensure we fail the job if any steps fail
+# Disable 'globbing'
+set -euf -o pipefail
+
+# shellcheck disable=SC1090
+source ~/lf-env.sh
+
+lf-activate-venv zipp==1.1.0 lftools
+
+if [ ! -v RELEASEDOCKERHUB_ORG ]
+then
+  echo "RELEASEDOCKERHUB_ORG is not defined. For onap set it to 'onap'"
+  exit 1
+fi
+
+cmd_str="--org $RELEASEDOCKERHUB_ORG"
+if [ -v RELEASEDOCKERHUB_SUMMARY ]
+then
+    cmd_str+=" --summary"
+fi
+if [ -v RELEASEDOCKERHUB_VERBOSE ]
+then
+    cmd_str+=" --verbose"
+fi
+if [ -v RELEASEDOCKERHUB_REPO ]
+then
+    cmd_str+=" --repo $RELEASEDOCKERHUB_REPO"
+fi
+if [ -v RELEASEDOCKERHUB_EXACT ]
+then
+    cmd_str+=" --exact"
+fi
+
+
+if [ -v RELEASEDOCKERHUB_COPY ]
+then
+    cmd_str+=" --copy"
+fi
+
+echo "cmd_str = >>$cmd_str<<"
+
+# Run the releasedockerhub command in lftools
+lftools nexus docker releasedockerhub  $cmd_str