Hello community,
here is the log from the commit of package openSUSE-release-tools for
openSUSE:Factory checked in at 2019-09-07 11:50:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Sat Sep 7 11:50:01 2019 rev:214 rq:728471 version:20190905.a24bcf0f
Changes:
--------
---
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
2019-09-05 12:42:03.751482309 +0200
+++
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.7948/openSUSE-release-tools.changes
2019-09-07 11:50:08.394302094 +0200
@@ -1,0 +2,70 @@
+Thu Sep 05 11:00:15 UTC 2019 - [email protected]
+
+- Update to version 20190905.a24bcf0f:
+ * Fix syntax of build-fail-reminder.gocd.yaml (endless story)
+
+-------------------------------------------------------------------
+Thu Sep 05 10:30:13 UTC 2019 - [email protected]
+
+- Update to version 20190905.87de492d:
+ * New basic test case
+ * Don't use the webui for project status
+ * Add little SMTP server that does not send mails for testing
+ * Fix filename of the build-fail-reminder gocd config
+ * Inline the mail text for the mailing list post - easier to map
+ * Deduplicate the 2 mail sending functions
+ * build-fail-notification: Mail to -factory after 4, dr after 6 weeks
+
+-------------------------------------------------------------------
+Wed Sep 04 21:39:25 UTC 2019 - [email protected]
+
+- Update to version 20190904.1b3a6e1f:
+ * osclib/core: request_action_key(): handle add_role/set_bugowner against
project.
+ * osclib/core: request_action_key(): include set_bugowner in top level
condition.
+
+-------------------------------------------------------------------
+Wed Sep 04 16:12:21 UTC 2019 - [email protected]
+
+- Update to version 20190904.41587803:
+ * Continue python3 port of abichecker
+ * Fix cron for openqa - it's supposed to run every 10 minutes
+
+-------------------------------------------------------------------
+Wed Sep 04 14:19:48 UTC 2019 - [email protected]
+
+- Update to version 20190904.3d286c35:
+ * Fix group name for the abichecker pipeline
+
+-------------------------------------------------------------------
+Wed Sep 04 14:13:52 UTC 2019 - [email protected]
+
+- Update to version 20190904.f5eee13e:
+ * Run abichecker on botmaster as well
+
+-------------------------------------------------------------------
+Wed Sep 04 12:17:27 UTC 2019 - [email protected]
+
+- Update to version 20190904.fb0c4142:
+ * oqamaint: fix more python3 issues and add _OBSOLETE=1
+
+-------------------------------------------------------------------
+Wed Sep 04 11:54:12 UTC 2019 - [email protected]
+
+- Update to version 20190904.3ba02675:
+ * also remove 42.3 from apimap
+ * remove leap 42.3 add 15.2
+
+-------------------------------------------------------------------
+Wed Sep 04 11:43:43 UTC 2019 - [email protected]
+
+- Update to version 20190904.0f9d84a0:
+ * oqamaint: Take the default modules
+
+-------------------------------------------------------------------
+Wed Sep 04 11:12:19 UTC 2019 - [email protected]
+
+- Update to version 20190904.72915933:
+ * Python3 port of openqa maintenance bot
+ * Run openqa-maintenance on botmaster as well
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20190903.79a13ddd.obscpio
New:
----
openSUSE-release-tools-20190905.a24bcf0f.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.WoucgR/_old 2019-09-07 11:50:11.090301712 +0200
+++ /var/tmp/diff_new_pack.WoucgR/_new 2019-09-07 11:50:11.098301710 +0200
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20190903.79a13ddd
+Version: 20190905.a24bcf0f
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.WoucgR/_old 2019-09-07 11:50:11.126301707 +0200
+++ /var/tmp/diff_new_pack.WoucgR/_new 2019-09-07 11:50:11.142301704 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
- <param
name="changesrevision">d3f6c62ea01fca8fd46cfa51506b46153511440f</param>
+ <param
name="changesrevision">3d7b3fbb03d78d8f9eb9fe36cf24e3b5eec7bd13</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20190903.79a13ddd.obscpio ->
openSUSE-release-tools-20190905.a24bcf0f.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/abichecker/abichecker.py
new/openSUSE-release-tools-20190905.a24bcf0f/abichecker/abichecker.py
--- old/openSUSE-release-tools-20190903.79a13ddd/abichecker/abichecker.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/abichecker/abichecker.py
2019-09-05 12:59:37.000000000 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
from optparse import OptionParser
from pprint import pformat, pprint
@@ -15,20 +15,13 @@
import abichecker_dbmodel as DB
import sqlalchemy.orm.exc
-try:
- from xml.etree import cElementTree as ET
-except ImportError:
- import cElementTree as ET
+from xml.etree import cElementTree as ET
import osc.conf
import osc.core
from osc.util.cpio import CpioRead
-try:
- from urllib.error import HTTPError
-except ImportError:
- # python 2.x
- from urllib2 import HTTPError
+from urllib.error import HTTPError
import rpm
from collections import namedtuple
@@ -759,11 +752,11 @@
h = self.ts.hdrFromFdno(fd)
except rpm.error as e:
if str(e) == "public key not available":
- print str(e)
+ print(str(e))
if str(e) == "public key not trusted":
- print str(e)
+ print(str(e))
if str(e) == "error reading package header":
- print str(e)
+ print(str(e))
h = None
return h
@@ -792,7 +785,7 @@
h = self.readRpmHeaderFD(fh)
if h is None:
raise FetchError("failed to read rpm header for
%s"%ch.filename)
- m = rpm_re.match(ch.filename)
+ m = rpm_re.match(ch.filename.decode('utf-8'))
if m:
yield m.group(1), h
os.unlink(tmpfile.name)
@@ -947,7 +940,7 @@
# common with repochecker
def _md5_disturl(self, disturl):
"""Get the md5 from the DISTURL from a RPM file."""
- return os.path.basename(disturl).split('-')[0]
+ return os.path.basename(disturl.decode('utf-8')).split('-')[0]
def disturl_matches_md5(self, disturl, md5):
if self._md5_disturl(disturl) != md5:
@@ -982,7 +975,7 @@
if h['sourcepackage']:
continue
pkgname = h['name']
- if pkgname.endswith('-32bit') or pkgname.endswith('-64bit'):
+ if pkgname.endswith(b'-32bit') or pkgname.endswith(b'-64bit'):
# -32bit and -64bit packages are just repackaged, so
# we skip them and only check the original one.
continue
@@ -990,10 +983,10 @@
if not self.disturl_matches(h['disturl'], prj, srcinfo):
raise DistUrlMismatch(h['disturl'], srcinfo)
pkgs[pkgname] = (rpmfn, h)
- if debugpkg_re.match(pkgname):
+ if debugpkg_re.match(pkgname.decode('utf-8')):
continue
for fn, mode, lnk in zip(h['filenames'], h['filemodes'],
h['filelinktos']):
- if so_re.match(fn):
+ if so_re.match(fn.decode('utf-8')):
if S_ISREG(mode):
self.logger.debug('found lib: %s'%fn)
lib_packages.setdefault(pkgname, set()).add(fn)
@@ -1007,6 +1000,7 @@
liblist = dict()
# check whether debug info exists for each lib
for pkgname in sorted(lib_packages.keys()):
+ pkgname = pkgname.decode('utf-8')
dpkgname = pkgname+'-debuginfo'
if not dpkgname in pkgs:
missing_debuginfo.add((prj, pkg, repo, arch, pkgname))
@@ -1071,7 +1065,7 @@
@cmdln.option('-r', '--revision', metavar="number", type="int",
help="revision number")
def do_diff(self, subcmd, opts, src_project, src_package, dst_project,
dst_package):
src_rev = opts.revision
- print self.checker.check_source_submission(src_project, src_package,
src_rev, dst_project, dst_package)
+ print(self.checker.check_source_submission(src_project, src_package,
src_rev, dst_project, dst_package))
if __name__ == "__main__":
app = CommandLineInterface()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/build-fail-reminder.py
new/openSUSE-release-tools-20190905.a24bcf0f/build-fail-reminder.py
--- old/openSUSE-release-tools-20190903.79a13ddd/build-fail-reminder.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/build-fail-reminder.py
2019-09-05 12:59:37.000000000 +0200
@@ -6,16 +6,14 @@
import osc.core
import osc.conf
import xml.etree.ElementTree as ET
-import smtplib
-from email.mime.text import MIMEText
-import email.utils
+import cgi
import logging
import argparse
import sys
from collections import namedtuple
+from osclib.util import mail_send_with_details
+import email.utils
-# FIXME: compute from apiurl
-URL="https://build.opensuse.org/project/status/%s?ignore_pending=true&limit_to_fails=true&include_versions=false&format=json"
# for maintainer search
FACTORY='openSUSE:Factory'
@@ -74,8 +72,18 @@
Kind regards,
%(sender)s
-"""
-)
+""")
+
+def SendMail(logger, project, sender, to, fullname, subject, text):
+ try:
+ xmailer = '{} - Failure Notification'.format(project)
+ to = email.utils.formataddr((to, fullname))
+ mail_send_with_details(sender=sender, to=to,
+ subject=subject, text=text, xmailer=xmailer,
+ relay=args.relay, dry=args.dry)
+ except Exception as e:
+ print(e)
+ logger.error("Failed to send an email to %s (%s)" % (fullname, to))
def main(args):
@@ -91,7 +99,13 @@
project = args.project
logger.debug('loading build fails for %s'%project)
- json_data = osc.core.http_GET(URL%project)
+ url = osc.core.makeurl(apiurl, ['project', 'status', project],
+ { 'ignore_pending': True,
+ 'limit_to_fails': True,
+ 'include_versions': False,
+ 'format': 'json'
+ })
+ json_data = osc.core.http_GET(url)
data = json.load(json_data)
json_data.close()
@@ -112,6 +126,7 @@
Reminded = {}
Person = {}
+ ProjectComplainList = []
# Go through all the failed packages and update the reminder
for package in data:
@@ -157,6 +172,7 @@
for userid in maintainers:
to = Person[userid][1]
fullname = Person[userid][2]
+ subject = '%s - %s - Build fail notification' % (project,
package)
text = MAIL_TEMPLATES[Reminded[package].remindCount-1] % {
'recepient': to,
'sender': sender,
@@ -164,30 +180,45 @@
'package' : package,
'date':
time.ctime(Reminded[package].firstfail),
}
- msg = MIMEText(text, _charset='UTF-8')
- msg['Subject'] = '%s - %s - Build fail notification' %
(project, package)
- msg['To'] = email.utils.formataddr((to, fullname))
- msg['From'] = sender
- msg['Date'] = email.utils.formatdate()
- msg['Message-ID'] = email.utils.make_msgid()
- msg.add_header('Precedence', 'bulk')
- msg.add_header('X-Mailer', '%s - Failure Notification' %
project)
- logger.info("%s: %s", msg['To'], msg['Subject'])
- if args.dry:
- logger.debug(msg.as_string())
- else:
- try:
- s = smtplib.SMTP(args.relay)
- s.sendmail(msg['From'], {msg['To'], sender },
msg.as_string())
- s.quit()
- except:
- logger.error("Failed to send an email to %s (%s)"
% (fullname, to))
- pass
-
- elif Reminded[package].remindCount == 3:
- logger.warning( "Package '%s' has been failing for three weeks
- let's create a bug report" % package)
- else:
- logger.warning( "Package '%s' is no longer maintained - send a
mail to factory maintainers..." % package)
+ SendMail(logger, project, sender, to, fullname, subject,
text)
+ elif Reminded[package].remindCount == 4:
+ # Package has failed for 4 weeks - Collect packages to send a
mail to openSUSE-factory@ (one mail per day max)
+ ProjectComplainList.append(package)
+ elif Reminded[package].remindCount == 6:
+ # Package failed to build for 6 weeks - file a delete request
+ r = osc.core.Request()
+ r.add_action('delete', tgt_project=project,
tgt_package=package)
+ r.description = cgi.escape("[botdel] Package has failed to
build for >= 6 weeks")
+ r.create(apiurl)
+
+ if len(ProjectComplainList):
+ # At least to report to the project for not building - send a mail to
openSUSE-Factory
+ ProjectComplainList.sort()
+ to = '[email protected]'
+ fullname = "openSUSE Factory - Mailing List"
+ subject = "%(project)s - Build fail notification" % {'project':
project}
+
+ text = u"""Dear Package maintainers and hackers.
+
+ Below package(s) in %(project)s have been failing to build for at
+ least 4 weeks. We tried to send out notifications to the
+ configured bugowner/maintainers of the package(s), but so far no
+ fix has been submitted. This probably means that the
+ maintainer/bugowner did not yet find the time to look into the
+ matter and he/she would certainly appreciate help to get this
+ sorted.
+
+ """ % { 'project': project }
+ for pkg in ProjectComplainList:
+ text += "- %s\n" % pkg
+ text += u"""
+ Unless somebody is stepping up and submitting fixes, the listed
+ package(s) are going to be removed from %(project)s.
+
+ Kind regards,
+ %(sender)s
+ """ % { 'project': project, 'sender': sender }
+ SendMail(logger, project, sender, to, fullname, subject, text)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='boilerplate python commmand
line program')
@@ -213,4 +244,3 @@
logging.basicConfig(level = level)
sys.exit(main(args))
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/data/apimap.json
new/openSUSE-release-tools-20190905.a24bcf0f/data/apimap.json
--- old/openSUSE-release-tools-20190903.79a13ddd/data/apimap.json
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/data/apimap.json
2019-09-05 12:59:37.000000000 +0200
@@ -129,11 +129,6 @@
"x86_64"
]
},
- "openSUSE:Leap:42.3:Update" : {
- "version": "42.3",
- "flavor": "DVD-Incidents",
- "distri": "opensuse"
- },
"openSUSE:Leap:15.0:Update" : {
"version": "15.0",
"flavor": "DVD-Incidents",
@@ -143,5 +138,10 @@
"version": "15.1",
"flavor": "DVD-Incidents",
"distri": "opensuse"
+ },
+ "openSUSE:Leap:15.2:Update" : {
+ "version": "15.2",
+ "flavor": "DVD-Incidents",
+ "distri": "opensuse"
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/data/incidents.json
new/openSUSE-release-tools-20190905.a24bcf0f/data/incidents.json
--- old/openSUSE-release-tools-20190903.79a13ddd/data/incidents.json
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/data/incidents.json
2019-09-05 12:59:37.000000000 +0200
@@ -140,12 +140,6 @@
"VERSION" : "12-SP2",
"ARCH" : "x86_64"
},
- "openSUSE:Leap:42.3:Update": {
- "DISTRI": "opensuse",
- "FLAVOR": "DVD-Incidents",
- "VERSION": "42.3",
- "ARCH": "x86_64"
- },
"openSUSE:Leap:15.0:Update": {
"DISTRI": "opensuse",
"FLAVOR": "DVD-Incidents",
@@ -157,5 +151,11 @@
"FLAVOR": "DVD-Incidents",
"VERSION": "15.1",
"ARCH": "x86_64"
+ },
+ "openSUSE:Leap:15.2:Update": {
+ "DISTRI": "opensuse",
+ "FLAVOR": "DVD-Incidents",
+ "VERSION": "15.2",
+ "ARCH": "x86_64"
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/data/repos.json
new/openSUSE-release-tools-20190905.a24bcf0f/data/repos.json
--- old/openSUSE-release-tools-20190903.79a13ddd/data/repos.json
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/data/repos.json
2019-09-05 12:59:37.000000000 +0200
@@ -1,45 +1,45 @@
{
"https://openqa.opensuse.org" : {
- "openSUSE:Leap:42.3:Update" : {
+ "openSUSE:Leap:15.0:Update" : {
"settings" : {
"OS_TEST_ISSUES" : "",
"FLAVOR" : "DVD-Updates",
"DISTRI" : "opensuse",
- "VERSION" : "42.3",
+ "VERSION" : "15.0",
"ARCH" : "x86_64"
},
"test" : "kde",
"repos" : [
- "http://download.opensuse.org/update/leap/42.3/oss/",
- "http://download.opensuse.org/update/leap/42.3/non-oss/"
+ "http://download.opensuse.org/update/leap/15.0/oss/",
+ "http://download.opensuse.org/update/leap/15.0/non-oss/"
]
},
- "openSUSE:Leap:15.0:Update" : {
+ "openSUSE:Leap:15.1:Update" : {
"settings" : {
"OS_TEST_ISSUES" : "",
"FLAVOR" : "DVD-Updates",
"DISTRI" : "opensuse",
- "VERSION" : "15.0",
+ "VERSION" : "15.1",
"ARCH" : "x86_64"
},
"test" : "kde",
"repos" : [
- "http://download.opensuse.org/update/leap/15.0/oss/",
- "http://download.opensuse.org/update/leap/15.0/non-oss/"
+ "http://download.opensuse.org/update/leap/15.1/oss/",
+ "http://download.opensuse.org/update/leap/15.1/non-oss/"
]
},
- "openSUSE:Leap:15.1:Update" : {
+ "openSUSE:Leap:15.2:Update" : {
"settings" : {
"OS_TEST_ISSUES" : "",
"FLAVOR" : "DVD-Updates",
"DISTRI" : "opensuse",
- "VERSION" : "15.1",
+ "VERSION" : "15.2",
"ARCH" : "x86_64"
},
"test" : "kde",
"repos" : [
- "http://download.opensuse.org/update/leap/15.1/oss/",
- "http://download.opensuse.org/update/leap/15.1/non-oss/"
+ "http://download.opensuse.org/update/leap/15.2/oss/",
+ "http://download.opensuse.org/update/leap/15.2/non-oss/"
]
}
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/dist/ci/docker-compose.yml
new/openSUSE-release-tools-20190905.a24bcf0f/dist/ci/docker-compose.yml
--- old/openSUSE-release-tools-20190903.79a13ddd/dist/ci/docker-compose.yml
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/dist/ci/docker-compose.yml
2019-09-05 12:59:37.000000000 +0200
@@ -33,10 +33,14 @@
servicedispatch:
<<: *obs
command: chroot --userspec=obsrun / /usr/lib/obs/server/bs_servicedispatch
+ smtp:
+ <<: *testenv
+ command: python3 /code/dist/ci/smtp/eml-server.py
test:
<<: *testenv
depends_on:
- api
+ - smtp
command: /code/dist/ci/docker-compose-test.sh
cap_add:
- SYS_PTRACE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/dist/ci/smtp/eml-server.py
new/openSUSE-release-tools-20190905.a24bcf0f/dist/ci/smtp/eml-server.py
--- old/openSUSE-release-tools-20190903.79a13ddd/dist/ci/smtp/eml-server.py
1970-01-01 01:00:00.000000000 +0100
+++ new/openSUSE-release-tools-20190905.a24bcf0f/dist/ci/smtp/eml-server.py
2019-09-05 12:59:37.000000000 +0200
@@ -0,0 +1,32 @@
+#! /usr/bin/python3
+
+# https://www.djangosnippets.org/snippets/96/
+# Considered public domain
+
+from datetime import datetime
+import asyncore
+from smtpd import SMTPServer
+
+class EmlServer(SMTPServer):
+ no = 0
+
+ def process_message(self, peer, mailfrom, rcpttos, data):
+ filename = '%s-%d.eml' % (datetime.now().strftime('%Y%m%d%H%M%S'),
+ self.no)
+ f = open(filename, 'w')
+ f.write(data)
+ f.close
+ print('%s saved.' % filename)
+ self.no += 1
+
+
+def run():
+ foo = EmlServer(('0.0.0.0', 25), None)
+ try:
+ asyncore.loop()
+ except KeyboardInterrupt:
+ pass
+
+
+if __name__ == '__main__':
+ run()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/gocd/abichecker.gocd.yaml
new/openSUSE-release-tools-20190905.a24bcf0f/gocd/abichecker.gocd.yaml
--- old/openSUSE-release-tools-20190903.79a13ddd/gocd/abichecker.gocd.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/openSUSE-release-tools-20190905.a24bcf0f/gocd/abichecker.gocd.yaml
2019-09-05 12:59:37.000000000 +0200
@@ -0,0 +1,20 @@
+format_version: 3
+pipelines:
+ SUSE.Abichecker:
+ group: SLE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-abichecker
+ materials:
+ script:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ timer:
+ spec: 0 */15 * ? * *
+ only_on_changes: false
+ stages:
+ - Run:
+ approval: manual
+ resources:
+ - repo-checker
+ tasks:
+ - script: ./abichecker/abichecker.py --no-review --verbose -A
https://api.suse.de --web-url=http://abichecker.suse.de project
SUSE:Maintenance maintenance_incident
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/gocd/announcer.gocd.yaml
new/openSUSE-release-tools-20190905.a24bcf0f/gocd/announcer.gocd.yaml
--- old/openSUSE-release-tools-20190903.79a13ddd/gocd/announcer.gocd.yaml
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/gocd/announcer.gocd.yaml
2019-09-05 12:59:37.000000000 +0200
@@ -54,7 +54,7 @@
- staging-bot
tasks:
- script: ./factory-package-news/announcer.py --config
config/announcer/openSUSE:MicroOS.yml --verbose --state-file
/home/go/config/announcer.yaml
- Announcer.Leap:
+ Announcer.Leap:15.2:
group: openSUSE.Checkers
lock_behavior: unlockWhenFinished
environment_variables:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/gocd/build-fail-reminder.gocd.yaml
new/openSUSE-release-tools-20190905.a24bcf0f/gocd/build-fail-reminder.gocd.yaml
---
old/openSUSE-release-tools-20190903.79a13ddd/gocd/build-fail-reminder.gocd.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/openSUSE-release-tools-20190905.a24bcf0f/gocd/build-fail-reminder.gocd.yaml
2019-09-05 12:59:37.000000000 +0200
@@ -0,0 +1,38 @@
+format_version: 3
+pipelines:
+ BuildFailReminder.Factory:
+ group: openSUSE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ timer:
+ spec: 0 0 0 ? * *
+ only_on_changes: false
+ stages:
+ - Run:
+ approval: manual
+ resources:
+ - staging-bot
+ tasks:
+ - script: ./build-fail-reminder.py --sender="DimStar / Dominique
Leuenberger <[email protected]>" --project=openSUSE:Factory
--relay=relay.suse.de --json=/home/go/config/openSUSE:Factory.reminded.json
--debug
+ BuildFailReminder.Leap152:
+ group: openSUSE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-repo-checker
+ materials:
+ scripts:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ timer:
+ spec: 0 0 0 ? * *
+ only_on_changes: false
+ stages:
+ - Run:
+ approval: manual
+ resources:
+ - staging-bot
+ tasks:
+ - script: ./build-fail-reminder.py --sender="Ludwig Nussel
<[email protected]>" --project=openSUSE:Leap:15.2 --relay=relay.suse.de
--json=/home/go/config/openSUSE:Leap:15.2.reminded.json --debug
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/gocd/build-fail-reminder.yaml
new/openSUSE-release-tools-20190905.a24bcf0f/gocd/build-fail-reminder.yaml
--- old/openSUSE-release-tools-20190903.79a13ddd/gocd/build-fail-reminder.yaml
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/gocd/build-fail-reminder.yaml
1970-01-01 01:00:00.000000000 +0100
@@ -1,21 +0,0 @@
-format_version: 3
-pipelines:
- BuildFailReminder.Factory:
- group: openSUSE.Checkers
- lock_behavior: unlockWhenFinished
- environment_variables:
- OSC_CONFIG: /home/go/config/oscrc-totest-manager
- materials:
- scripts:
- git: https://github.com/openSUSE/openSUSE-release-tools.git
- timer:
- spec: 0 0 0 ? * *
- only_on_changes: false
- stages:
- - Run:
- approval: manual
- resources:
- - staging-bot
- tasks:
- - script: |-
- ./build-fail-reminder.py --sender="DimStar / Dominique Leuenberger
<[email protected]>" --project=openSUSE:Factory --relay=relay.suse.de
--json=/home/go/config/openSUSE:Factory.reminded.json --debug
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/gocd/openqa.gocd.yaml
new/openSUSE-release-tools-20190905.a24bcf0f/gocd/openqa.gocd.yaml
--- old/openSUSE-release-tools-20190903.79a13ddd/gocd/openqa.gocd.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/openSUSE-release-tools-20190905.a24bcf0f/gocd/openqa.gocd.yaml
2019-09-05 12:59:37.000000000 +0200
@@ -0,0 +1,21 @@
+format_version: 3
+pipelines:
+ openSUSE.QA.Maint:
+ group: openSUSE.Checkers
+ lock_behavior: unlockWhenFinished
+ environment_variables:
+ OSC_CONFIG: /home/go/config/oscrc-openqa-maintenance
+ materials:
+ script:
+ git: https://github.com/openSUSE/openSUSE-release-tools.git
+ timer:
+ spec: 0 */10 * ? * *
+ only_on_changes: false
+ stages:
+ - Run:
+ approval: manual
+ resources:
+ - staging-bot
+ tasks:
+ - script: |-
+ ./openqa-maintenance.py --group qam-openqa
--review-mode=accept-onpass --debug --openqa https://openqa.opensuse.org
--apiurl https://api.opensuse.org review
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/openqa-maintenance.py
new/openSUSE-release-tools-20190905.a24bcf0f/openqa-maintenance.py
--- old/openSUSE-release-tools-20190903.79a13ddd/openqa-maintenance.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/openqa-maintenance.py
2019-09-05 12:59:37.000000000 +0200
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
from oqamaint.cli import CommandLineInterface
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/cli.py
new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/cli.py
--- old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/cli.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/cli.py
2019-09-05 12:59:37.000000000 +0200
@@ -3,7 +3,7 @@
# standard library
import logging
import os.path as opa
-import simplejson as json
+import json
import sys
# external dependency
@@ -11,10 +11,10 @@
# from package itself
import osc
-from openqabot import OpenQABot
-from opensuse import openSUSEUpdate
+from oqamaint.openqabot import OpenQABot
+from oqamaint.opensuse import openSUSEUpdate
import ReviewBot
-from suse import SUSEUpdate
+from oqamaint.suse import SUSEUpdate
class CommandLineInterface(ReviewBot.CommandLineInterface):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/openqabot.py
new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/openqabot.py
--- old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/openqabot.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/openqabot.py
2019-09-05 12:59:37.000000000 +0200
@@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
+import hashlib
from datetime import date
-import md5
from pprint import pformat
-from urllib2 import HTTPError
-from urllib import quote_plus
+from urllib.error import HTTPError
+from urllib.parse import quote_plus
from osclib.comments import CommentAPI
import requests
@@ -12,18 +12,10 @@
import ReviewBot
-from suse import SUSEUpdate
+from oqamaint.suse import SUSEUpdate
-try:
- from xml.etree import cElementTree as ET
-except ImportError:
- from xml.etree import ElementTree as ET
-
-
-try:
- import simplejson as json
-except ImportError:
- import json
+from xml.etree import cElementTree as ET
+import json
QA_UNKNOWN = 0
QA_INPROGRESS = 1
@@ -91,9 +83,9 @@
# check a set of repos for their primary checksums
@staticmethod
def calculate_repo_hash(repos, incidents):
- m = md5.new()
+ m = hashlib.md5()
# if you want to force it, increase this number
- m.update('b')
+ m.update(b'b')
for url in repos:
url += '/repodata/repomd.xml'
try:
@@ -102,9 +94,9 @@
raise
cs = root.find(
'.//{http://linux.duke.edu/metadata/repo}data[@type="primary"]/{http://linux.duke.edu/metadata/repo}checksum')
- m.update(cs.text)
+ m.update(cs.text.encode('utf-8'))
# now add the open incidents
- m.update(json.dumps(incidents, sort_keys=True))
+ m.update(json.dumps(incidents, sort_keys=True).encode('utf-8'))
digest = m.hexdigest()
open_incidents = sorted(incidents.keys())
if open_incidents:
@@ -219,6 +211,7 @@
s[x] = y
s['BUILD'] = buildnr
s['REPOHASH'] = repohash
+ s['_OBSOLETE'] = '1'
self.logger.debug("Prepared: {}".format(pformat(s)))
if not self.dryrun:
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/opensuse.py
new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/opensuse.py
--- old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/opensuse.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/opensuse.py
2019-09-05 12:59:37.000000000 +0200
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
-from update import Update
import re
from collections import namedtuple
import osc.core
+from oqamaint.update import Update
try:
from xml.etree import cElementTree as ET
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/suse.py
new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/suse.py
--- old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/suse.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/suse.py
2019-09-05 12:59:37.000000000 +0200
@@ -5,14 +5,14 @@
import osc.core
-from update import Update
+from oqamaint.update import Update
MINIMALS = {
x.rstrip()
for x in requests.get(
'https://gitlab.suse.de/qa-maintenance/metadata/raw/master/packages-to-be-tested-on-minimal-systems').iter_lines()
- if len(x) > 0 and not(x.startswith("#") or x.startswith(' '))}
+ if len(x) > 0 and not(x.startswith(b"#") or x.startswith(b' '))}
class SUSEUpdate(Update):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/update.py
new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/update.py
--- old/openSUSE-release-tools-20190903.79a13ddd/oqamaint/update.py
2019-09-03 22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/oqamaint/update.py
2019-09-05 12:59:37.000000000 +0200
@@ -4,23 +4,8 @@
import requests
-# python 3 has gzip decompress function
-try:
- from gzip import decompress
-except ImportError:
- from gzip import GzipFile
- import io
-
- def decompress(data):
- with GzipFile(fileobj=io.BytesIO(data)) as f:
- return f.read()
-
-# use cElementTree by default, fallback to pure python
-try:
- from xml.etree import cElementTree as ET
-except ImportError:
- from xml.etree import ElementTree as ET
-
+from gzip import decompress
+from xml.etree import cElementTree as ET
import osc.core
from osclib.memoize import memoize
@@ -31,7 +16,6 @@
def __init__(self, settings):
self._settings = settings
- self._settings['_NOOBSOLETEBUILD'] = '1'
self.opensuse = True
def get_max_revision(self, job):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/osclib/core.py
new/openSUSE-release-tools-20190905.a24bcf0f/osclib/core.py
--- old/openSUSE-release-tools-20190903.79a13ddd/osclib/core.py 2019-09-03
22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/osclib/core.py 2019-09-05
12:59:37.000000000 +0200
@@ -781,9 +781,10 @@
def request_action_key(action):
identifier = []
- if action.type in ['add_role', 'change_devel', 'maintenance_release',
'submit']:
+ if action.type in ['add_role', 'change_devel', 'maintenance_release',
'set_bugowner', 'submit']:
identifier.append(action.tgt_project)
- identifier.append(action.tgt_package)
+ if action.tgt_package is not None:
+ identifier.append(action.tgt_package)
if action.type in ['add_role', 'set_bugowner']:
if action.person_name is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/osclib/util.py
new/openSUSE-release-tools-20190905.a24bcf0f/osclib/util.py
--- old/openSUSE-release-tools-20190903.79a13ddd/osclib/util.py 2019-09-03
22:37:10.000000000 +0200
+++ new/openSUSE-release-tools-20190905.a24bcf0f/osclib/util.py 2019-09-05
12:59:37.000000000 +0200
@@ -1,9 +1,12 @@
+import logging
+
from osc import conf
from osclib.conf import Config
from osclib.core import entity_email
from osclib.core import project_list_prefix
from osclib.memoize import memoize
+logger = logging.getLogger()
@memoize(session=True)
def project_list_family(apiurl, project, include_update=False):
@@ -123,36 +126,47 @@
return 0
-def mail_send(apiurl, project, to, subject, body, from_key='maintainer',
- followup_to_key='release-list', dry=False):
+def mail_send_with_details(relay, sender, subject, to, text, xmailer=None,
followup_to=None, dry=True):
+ import smtplib
from email.mime.text import MIMEText
import email.utils
- import smtplib
-
- config = Config.get(apiurl, project)
- msg = MIMEText(body)
+ msg = MIMEText(text, _charset='UTF-8')
+ msg['Subject'] = subject
msg['Message-ID'] = email.utils.make_msgid()
msg['Date'] = email.utils.formatdate(localtime=1)
- if from_key is None:
- msg['From'] = entity_email(apiurl, conf.get_apiurl_usr(apiurl),
include_name=True)
- else:
- msg['From'] = config['mail-{}'.format(from_key)]
- if '@' not in to:
- to = config['mail-{}'.format(to)]
+ msg['From'] = sender
msg['To'] = to
- followup_to = config.get('mail-{}'.format(followup_to_key))
if followup_to:
msg['Mail-Followup-To'] = followup_to
- msg['Subject'] = subject
-
+ if xmailer:
+ msg.add_header('X-Mailer', xmailer)
+ msg.add_header('Precedence', 'bulk')
if dry:
- print(msg.as_string())
+ logger.debug(msg.as_string())
return
-
- s = smtplib.SMTP(config.get('mail-relay', 'relay.suse.de'))
- s.sendmail(msg['From'], [msg['To']], msg.as_string())
+ logger.info("%s: %s", msg['To'], msg['Subject'])
+ s = smtplib.SMTP(relay)
+ s.sendmail(msg['From'], {msg['To'], sender }, msg.as_string())
s.quit()
+def mail_send(apiurl, project, to, subject, body, from_key='maintainer',
+ followup_to_key='release-list', dry=False):
+
+ config = Config.get(apiurl, project)
+ if from_key is None:
+ sender = entity_email(apiurl, conf.get_apiurl_usr(apiurl),
include_name=True)
+ else:
+ sender = config['mail-{}'.format(from_key)]
+
+ if '@' not in to:
+ to = config['mail-{}'.format(to)]
+
+ followup_to = config.get('mail-{}'.format(followup_to_key))
+ relay = config.get('mail-relay', 'relay.suse.de')
+
+ mail_send_with_details(text=body, subject=subject, relay=relay,
sender=sender,
+ followup_to=followup_to, to=to, dry=dry)
+
def sha1_short(data):
import hashlib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20190903.79a13ddd/tests/build_fail_reminder_tests.py
new/openSUSE-release-tools-20190905.a24bcf0f/tests/build_fail_reminder_tests.py
---
old/openSUSE-release-tools-20190903.79a13ddd/tests/build_fail_reminder_tests.py
1970-01-01 01:00:00.000000000 +0100
+++
new/openSUSE-release-tools-20190905.a24bcf0f/tests/build_fail_reminder_tests.py
2019-09-05 12:59:37.000000000 +0200
@@ -0,0 +1,12 @@
+import unittest
+from . import OBSLocal
+
+class TestBuildFailReminder(OBSLocal.TestCase):
+ script = './build-fail-reminder.py'
+
+ def test_basic(self):
+ self.wf = OBSLocal.StagingWorkflow()
+ self.wf.create_target()
+
+ self.execute_script(['--relay', 'smtp', '--sender', 'Tester'])
+ self.assertOutput('loading build fails for openSUSE:Factory')
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.WoucgR/_old 2019-09-07 11:50:12.702301483 +0200
+++ /var/tmp/diff_new_pack.WoucgR/_new 2019-09-07 11:50:12.702301483 +0200
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20190903.79a13ddd
-mtime: 1567543030
-commit: 79a13dddfe8312d2ecf0adf411b663332a05d127
+version: 20190905.a24bcf0f
+mtime: 1567681177
+commit: a24bcf0f20a3dc2346f928c110854904a546a526