From: robert.tomczyk Date: Tue, 28 May 2019 10:43:02 +0000 (+0100) Subject: OpenDev: Introducing OpenDev to Nordix X-Git-Url: https://gerrit.nordix.org/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F96%2F1296%2F1;p=infra%2Fcicd.git OpenDev: Introducing OpenDev to Nordix Adding initial OpenStack repositories: - Openstack Neutron - Openstack Nova Change-Id: I4f2505d10d0879500182320a972b4957a5e32711 --- diff --git a/jjb/global/jjb-macros.yaml b/jjb/global/jjb-macros.yaml index 1a2f8d2b..3f37cb8b 100644 --- a/jjb/global/jjb-macros.yaml +++ b/jjb/global/jjb-macros.yaml @@ -90,6 +90,22 @@ default: ssh://$GERRIT_USER@git.opendaylight.org:29418 description: SSH URL to Project Repo on ODL Gerrit to clone repo +- parameter: + name: opendev-gerrit-parameters + parameters: + - string: + name: GERRIT_USER + default: nordix + description: Non-interactive user to stream Gerrit Events on OpenDev Gerrit + - string: + name: GIT_BASE_HTTPS + default: https://review.opendev.org + description: HTTPS URL to Project Repo on OpenDev Gerrit to clone repo + - string: + name: GIT_BASE_SSH + default: ssh://$GERRIT_USER@review.opendev.org:29418 + description: SSH URL to Project Repo on OpenDev Gerrit to clone repo + # defaults for job build history - property: name: logrotate-default @@ -273,6 +289,28 @@ silent: true silent-start: true +# triggers for OpenDev Gerrit +- trigger: + name: opendev-gerrit-trigger-change-merged + triggers: + - gerrit: + server-name: 'OpenDev Gerrit' + trigger-on: + - change-merged-event + - comment-added-contains-event: + comment-contains-value: 'remerge' + projects: + - project-compare-type: 'ANT' + project-pattern: '{project}' + branches: + - branch-compare-type: 'ANT' + branch-pattern: '**/{branch}' + file-paths: + - compare-type: 'ANT' + pattern: '{files}' + silent: true + silent-start: true + # wrappers to use for jobs - wrapper: name: nordixinfra-jjb-creds-wrapper diff --git a/opendev/global-templates-opendev-push-upstream.yaml b/opendev/global-templates-opendev-push-upstream.yaml new file mode 100644 index 00000000..385fdd4d --- /dev/null +++ b/opendev/global-templates-opendev-push-upstream.yaml @@ -0,0 +1,41 @@ +- job-template: + name: 'opendev-{project-name}-{stream}-push-upstream' + + node: infra-build01-ubuntu1804 + + disabled: false + + concurrent: true + + properties: + - logrotate + + parameters: + - project-parameters: + project: 'opendev/{project}' + branch: '{branch}' + - nordix-gerrit-parameters + + scm: + - git-scm-gerrit: + ssh-credentials-id: nordixinfra-nordix-gerrit-ssh + branch: '{branch}' + refspec: $GERRIT_REFSPEC + + triggers: + - nordix-gerrit-push-upstream: + project: 'opendev/{project}' + branch: '{branch}' + files: '**' + + wrappers: + - build-timeout: + timeout: 10 + + builders: + - shell: + !include-raw-escape: ./push-upstream-jobs.sh + + publishers: + - notify-slack: + slack-channel: '#infra' diff --git a/opendev/global-templates-opendev-rebase.yaml b/opendev/global-templates-opendev-rebase.yaml new file mode 100644 index 00000000..c376ed40 --- /dev/null +++ b/opendev/global-templates-opendev-rebase.yaml @@ -0,0 +1,46 @@ +- job-template: + name: 'opendev-{project-name}-{stream}-rebase' + + node: infra-build01-ubuntu1804 + + disabled: false + + concurrent: false + + properties: + - logrotate + + parameters: + - project-parameters: + project: '{project}' + branch: '{branch}' + - opendev-gerrit-parameters + - string: + name: NORDIX_REMOTE + default: 'ssh://infra@gerrit.nordix.org:29418/opendev/{project}.git' + description: The remote to add for Nordix. + + scm: + - git-scm: + ssh-credentials-id: nordixinfra-lfn-gerrit-ssh + branch: '{branch}' + refspec: '' + + triggers: + - opendev-gerrit-trigger-change-merged: + project: '{project}' + branch: '{branch}' + files: '**' + - timed: "@midnight" + + wrappers: + - build-timeout: + timeout: 10 + + builders: + - shell: + !include-raw-escape: ../global/rebase-jobs.sh + + publishers: + - notify-slack: + slack-channel: '#infra' diff --git a/opendev/openstack-neutron/openstack-neutron-push-upstream-jobs.yml b/opendev/openstack-neutron/openstack-neutron-push-upstream-jobs.yml new file mode 100644 index 00000000..d206b1b6 --- /dev/null +++ b/opendev/openstack-neutron/openstack-neutron-push-upstream-jobs.yml @@ -0,0 +1,29 @@ +--- +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +# +- project: + name: openstack-neutron-push-upstream + project: openstack/neutron + project-name: openstack-neutron + stream: + - master: + branch: '{stream}' + + jobs: + - 'opendev-{project-name}-{stream}-push-upstream' diff --git a/opendev/openstack-neutron/openstack-neutron-rebase-jobs.yml b/opendev/openstack-neutron/openstack-neutron-rebase-jobs.yml new file mode 100644 index 00000000..a3d650e7 --- /dev/null +++ b/opendev/openstack-neutron/openstack-neutron-rebase-jobs.yml @@ -0,0 +1,29 @@ +--- +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +# +- project: + name: openstack-neutron-rebase + project: openstack/neutron + project-name: openstack-neutron + stream: + - master: + branch: '{stream}' + + jobs: + - 'opendev-{project-name}-{stream}-rebase' diff --git a/opendev/openstack-nova/openstack-nova-push-upstream-jobs.yml b/opendev/openstack-nova/openstack-nova-push-upstream-jobs.yml new file mode 100644 index 00000000..59b9bbe7 --- /dev/null +++ b/opendev/openstack-nova/openstack-nova-push-upstream-jobs.yml @@ -0,0 +1,29 @@ +--- +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +# +- project: + name: openstack-nova-push-upstream + project: openstack/nova + project-name: openstack-nova + stream: + - master: + branch: '{stream}' + + jobs: + - 'opendev-{project-name}-{stream}-push-upstream' diff --git a/opendev/openstack-nova/openstack-nova-rebase-jobs.yml b/opendev/openstack-nova/openstack-nova-rebase-jobs.yml new file mode 100644 index 00000000..6515943c --- /dev/null +++ b/opendev/openstack-nova/openstack-nova-rebase-jobs.yml @@ -0,0 +1,29 @@ +--- +# ============LICENSE_START======================================================= +# Copyright (C) 2019 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +# +- project: + name: openstack-nova-rebase + project: openstack/nova + project-name: openstack-nova + stream: + - master: + branch: '{stream}' + + jobs: + - 'opendev-{project-name}-{stream}-rebase' diff --git a/opendev/push-upstream-jobs.sh b/opendev/push-upstream-jobs.sh new file mode 100755 index 00000000..148b2b09 --- /dev/null +++ b/opendev/push-upstream-jobs.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# ============LICENSE_START======================================================= +# Copyright (C) 2019 The Nordix Foundation. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +# +# This script will take the changes that are pushed to Nordix Gerrit and push upstream to OpenDev +# Pre-requisites for script to run successfully: +# - Author name in Nordix Gerrit have to be the same as OpenDev username +# i.e. need to run "git config --global user.name " +# - infra public key on build server needs to be added to your users SSH Public Keys in OpenDev Gerrit +# +set -o nounset +set -o pipefail + +cd $WORKSPACE +echo "Retrieving information from commit to push towards OpenDev" +project=$(git config --local remote.origin.url | awk -F "29418/opendev/" '{print $2}') +message=$(git show -s --pretty=%B | grep -vi 'Signed-off-by') +username=$(git show -s --pretty=%an) + +pattern=" " +if [[ "$username" =~ $pattern ]] +then + echo "Incorrect username, use OpenDev username as git user.name when pushing to Nordix" + exit 1 +fi + +echo "Setting user name and email" +git config user.email $(git show -s --pretty=%ae) +git config user.name $username + +echo "Checking out branch on master with new changes" +git reset HEAD~1 --soft +git checkout -b delivery_branch origin/$BRANCH + +git config --get remote.upstream.url +retVal=$? + +if [[ $retVal -eq 0 ]] +then + git remote rm upstream + git remote add upstream "ssh://$username@review.opendev.org:29418/$project.git" +else + git remote add upstream "ssh://$username@review.opendev.org:29418/$project.git" +fi + +echo "Committing changes and pushing upstream" +git commit -as -m "$message" +git push upstream HEAD:refs/for/$BRANCH + +retVal1=$? +if [[ $retVal1 -eq 0 ]] +then + echo "Push upstream to OpenDev succeeded" +else + echo "Push upstream to OpenDev failed" + exit 2 +fi + +git checkout $BRANCH +git branch -D delivery_branch