containerbuildsystem / koji-containerbuild Goto Github PK
View Code? Open in Web Editor NEWContainer build support for Koji buildsystem
License: GNU Lesser General Public License v2.1
Container build support for Koji buildsystem
License: GNU Lesser General Public License v2.1
This is the develop branch issue.
The getBuild method, called by the handler method by BuildContainerTask instance, need add a 'strict=True' argument. Otherwise, whether the build existed or not, the getBuild dosn't raise any exception, hence the handler will always exec the else clauses and complaint the build existed.
Architecture LABEL isn't passed to children tasks and architecture of the buildroot is used instead.
When executing a build without --scratch
flag, the build fails like this.
rhpkg -v container-build --target jb-rhel-7-docker-candidate
Missing {option} option in [{plugin.section}] section. Using {option} from [{root.section}]
Missing {option} option in [{plugin.section}] section. Using {option} from [{root.section}]
Initiating a brew session to http://brewhub.devel.redhat.com/brewhub
Creating repo object from /home/goldmann/dist-git/jboss-base-7-docker
Created task: 9750246
Task info: http://brewweb.devel.redhat.com/brew/taskinfo?taskID=9750246
Watching tasks (this may be safely interrupted)...
9750246 buildContainer (noarch): free
9750246 buildContainer (noarch): free -> open (x86-017.build.eng.bos.redhat.com)
9750247 createContainer (noarch): free
9750247 createContainer (noarch): free -> open (ppc-021.build.eng.bos.redhat.com)
9750247 createContainer (noarch): open (ppc-021.build.eng.bos.redhat.com) -> closed
0 free 1 open 1 done 0 failed
9750246 buildContainer (noarch): open (x86-017.build.eng.bos.redhat.com) -> FAILED: GenericError: No such rpm: {'name': 'gpg-pubkey', 'sigmd5': '(none)', 'buildtime': 1164971113, 'epoch': None, 'version': '2fa658e0', 'release': '45700c69', 'arch': '(none)', 'size': 0}
0 free 0 open 1 done 1 failed
9750246 buildContainer (noarch) failed
It works properly with --scratch
flag added.
I am getting the following error when a build task is executed by the koji-containerbuild plugin (example in Fedora stage koji):
2016-03-08 20:56:00,174 [DEBUG] koji.build.BaseTaskHandler: Started by maxamillion
2016-03-08 20:56:00,175 [DEBUG] koji.build.BaseTaskHandler: create_build_args: {'target': 'f24-docker-candidate', 'component': 'cockpit', 'git_uri': 'git://pkgs.stg.fedoraproject.org/docker/cockpit', 'yum_repourls': [], 'architecture': 'a
rmv7hl', 'git_ref': '547da74e1d4e51d9366451bf28aba99a5df0f7c1', 'user': 'maxamillion'}
2016-03-08 20:56:00,175 [DEBUG] koji.build.BaseTaskHandler.osbs: osbs logger installed
2016-03-08 20:56:00,423 [INFO] koji.build.BaseTaskHandler.osbs.core: using basic authentication
2016-03-08 20:56:00,604 [DEBUG] koji.TaskManager: Local buildroots: 0
2016-03-08 20:56:00,605 [DEBUG] koji.TaskManager: Active buildroots: 0
2016-03-08 20:56:00,605 [DEBUG] koji.TaskManager: Expired/stray buildroots: 0
2016-03-08 20:56:00,605 [INFO] koji.TaskManager: pids: {90036366: 14857, 90036367: 14882}
2016-03-08 20:56:00,631 [DEBUG] koji.build: Scrubbing files in /var/tmp/koji/tasks/6367/90036367
2016-03-08 20:56:00,637 [DEBUG] koji.build: Scrubbing directories in /var/tmp/koji/tasks/6367/90036367
2016-03-08 20:56:00,645 [WARNING] koji.TaskManager: TRACEBACK: Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/koji/daemon.py", line 1161, in runTask
response = (handler.run(),)
File "/usr/lib/python2.7/site-packages/koji/tasks.py", line 158, in run
return koji.util.call_with_argcheck(self.handler, self.params, self.opts)
File "/usr/lib/python2.7/site-packages/koji/util.py", line 154, in call_with_argcheck
return func(*args, **kwargs)
File "/usr/lib/koji-builder-plugins/builder_containerbuild.py", line 479, in handler
**create_build_args
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 37, in catch_exceptions
return func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 346, in create_build
return self.create_prod_build(**kwargs)
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 48, in catch_exceptions
raise OsbsException(cause=ex, traceback=sys.exc_info()[2])
OsbsException: Exception(u"Error connecting to https://osbs-dev.fedorainfracloud.org:8443/oauth/authorize?response_type=token&client_id=openshift-challenging-client: (<pycurl.Curl object at 0x34718b0>, 35, 'A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot.')",)
Original traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 37, in catch_exceptions
return func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 294, in create_prod_build
response = self._create_build_config_and_build(build_request)
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 195, in _create_build_config_and_build
running_builds = self._get_running_builds_for_build_config(build_config_name)
File "/usr/lib/python2.7/site-packages/osbs/api.py", line 167, in _get_running_builds_for_build_config
all_builds_for_bc = self.os.list_builds(build_config_id=build_config_id).json()['items']
File "/usr/lib/python2.7/site-packages/osbs/core.py", line 356, in list_builds
return self._get(url)
File "/usr/lib/python2.7/site-packages/osbs/core.py", line 167, in _get
headers, kwargs = self._request_args(with_auth, **kwargs)
File "/usr/lib/python2.7/site-packages/osbs/core.py", line 138, in _request_args
self.get_oauth_token()
File "/usr/lib/python2.7/site-packages/osbs/core.py", line 185, in get_oauth_token
username=self.username, password=self.password)
File "/usr/lib/python2.7/site-packages/osbs/core.py", line 168, in _get
return self._con.get(url, headers=headers, verify_ssl=self.verify_ssl, **kwargs)
File "/usr/lib/python2.7/site-packages/osbs/http.py", line 105, in get
return self.request(url, "get", **kwargs)
File "/usr/lib/python2.7/site-packages/osbs/http.py", line 118, in request
stream = HttpStream(url, *args, verbose=self.verbose, **kwargs)
File "/usr/lib/python2.7/site-packages/osbs/http.py", line 242, in __init__
self._perform()
File "/usr/lib/python2.7/site-packages/osbs/http.py", line 261, in _perform
raise Exception("Error connecting to %s: %s" % (self.url, err_obj))
Exception(u"Error connecting to https://osbs-dev.fedorainfracloud.org:8443/oauth/authorize?response_type=token&client_id=openshift-challenging-client: (<pycurl.Curl object at 0x34718b0>, 35, 'A PKCS #11 module returned CKR_DEVICE_ERROR, indicating that a problem has occurred with the token or slot.')",)
However I am able to execute a build from this koji builder host using osbs-client osbs build
and it succeeds just fine.
I can also execute a build using the same osbs api calls that I see koji-containerbuild using:
>>> cba = {'target': 'f24-docker-candidate', 'component': 'cockpit', 'git_uri': 'git://pkgs.stg.fedoraproject.org/docker/cockpit', 'yum_repourls': [], 'architecture': 'armv7hl', 'git_ref': '547da74e1d4e51d9366451bf28aba99a5df0f7c1', 'user': 'maxamillion'}
>>> os_conf = Configuration()
>>> build_conf = Configuration()
>>> _osbs = OSBS(os_conf, build_conf)
>>> build_response = _osbs.create_build( **cba )
2016-03-09 16:25:11,568 - osbs.conf - WARNING - u'builder_build_json_dir' not found, falling back u'build_json_dir'
>>> build_id = build_response.get_build_name()
>>> response = _osbs.wait_for_build_to_finish(build_id)
>>> response.is_succeeded()
True
Related: #51
Currently createContainer is marked as closed, even when the OpenShift build fails. Then buildContainer checks if the build was successful, which is its only interaction with OpenShift.
Can the check be moved to createContainer so that it's marked as failed when the build fails? The current behaviour is a bit confusing.
Furthermore, if only one of those tasks interacted with OpenShift it would unbreak the use case where koji builders in single channel talk to different OpenShift instances.
Related to #8.
I have a couple of read-only tools for inspecting containers:
koji-search-containers
: This tool searches all OSBS container builds for a particular RPM build. The tool answers the question "which containers have this RPM"? It helps my product teams ensure that we're shipping the correct container image(s) alongside our RPMs.
koji-diff-containers
: This tool looks up two OSBS container build NVRs in Koji, queries the RPMs within both containers, and prints the differences between the RPM lists. It helps my product teams ensure that the updates that we ship to users only contain the exact changes we intend.
koji-container-signatures
: This tool inspects all the RPMs in a container build. It ensures that the RPM builds in the container are all signed by a particular GPG key (eg. Red Hat's gold-signing key). This helps us check that we are not shipping containers with unsigned or incorrectly-signed RPMs.
I can keep these tools in https://pagure.io/koji-tools, but they all share quite a few methods, so I would need to refactor them to use a central library. (For example, I have a method get_metadata()
that downloads the OSBS metadata.json
, another one that parses it, etc).
I'm wondering if it makes more sense to put these tools into the koji-containerbuild-cli plugin as additional sub-commands. What do you think?
Currently scratch builds are overwriting the normal builds, so we should disallow scratch builds and output a warning for now
Currently there is no way to list only the container tasks on this page: http://koji.fedoraproject.org/koji/tasks.
After some glitches in OSBS, koji retrieved image tar ball and marked parent task as failed. After fixing OSBS, I tried to rebuild the container again, OSBS succeeded, but koji protested that the container tar archive already exists:
GenericError: Error importing build log. /mnt/brew/packages/rh-perl520-docker/5.20/4/data/logs/image/openshift-final.log already exists.
Koji should deal with it to allow respinning failed builds as it can be done with RPM packages.
CI builds are failing. Needs investigation.
See https://travis-ci.org/release-engineering/koji-containerbuild for reference.
Currently if the plugin doesn't find an rpm it fails with the non user friendly error message:
GenericError:
No such rpm: {'name': 'percona-release', 'sigmd5': '5aa504c1068ad4d92b19ef93f0bb5703', 'buildtime': 1411373342, 'epoch': None, 'version': '0.1', 'release': '3', 'arch': 'noarch', 'size': 5921}
Improve it by nice printing of the rpm and the reason what happened. Maybe something like:
percona-release-0.1-3.noarch.rpm wasn't found in the (koji) buildystem. Containers can contain only > packages which are known by the buildsystem.
Another issue with the code removal for the Content Generator workflow:
$ pylint builder_containerbuild.py |grep ^E:
No config file found, using default configuration
E:423,27: Instance of 'CreateContainerTask' has no '_get_repositories' member (no-member)
I think this should be added back in.
The Architecture
label should not be required. It should be taken from the base image (or to be more precise: last image that provides this label in the tree) or it should be set automatically by the builder.
Currently v1 tarball is always saved as .tar. If osbs compresses the output this will be misleading. Change the code so correct extension is used. Maybe there will be some osbs-client node change needed.
If build looks like successful but there are no rpms listed in rpmlist parent task fails with error:
Fault: <Fault 1: "<type 'exceptions.UnboundLocalError'>: local variable 'fullpath' referenced before assignment">
Results of the child task:
Results: {20187695: {'files': [], 'rpmlist': [], 'logs': ['build.log', 'openshift-final.log'], 'task_id': 20187695, 'repositories': [], 'osbs_build_id': 'docker-hello-world-unknown-3', 'arch': 'x86_64'}}
E.g. for code use devel (not master) branch as a base and send pull requests.
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
master |
rebase-helper didn't do the job |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
Currently, the koji-containerbuild 'buildContainer' task creates a Koji Build object, and the 'createContainer' task starts the OSBS build.
Instead, the Build Object should be created by OSBS. In this new scheme, koji-containerbuild does not need to create a Koji Build object at all.
It will still need to stream build logs from the OSBS build, and cancel it when the Koji Task is cancelled.
I'm not clear enough on the difference between buildContainer and createContainer to say whether both are still needed. I tend towards thinking that they are, for multi-arch support(?).
This change is part of the new scheme for Koji integration, in which the Koji Build object is always created by CG import from atomic-reactor.
CC @maxamillion
See also
Introduced in containerbuildsystem/osbs-client@3f9f87b
Could this project be released to PyPi so it can be installable via thing like Pipenv and Poetry?
Modify kojiweb templates to format task parameters.
Templates in koji repository are easy to modify. The problem is that koji's template system isn't pluggable/extensible by the koji plugins.
At the moment the builds ends with error:
BuildError: name needs to be specified for container builds
Internally inside Red Hat, we use a plugin that hooks into the koji postSCMCheckout callback to enforce policy on branches for container builds. This hook doesn't get run at all for a Flatpak build, because Flatpaks don't need the label checks, which means that Flatpaks bypass the policy enforcement.
I think it would make most sense to check out the repo and run the hooks. I don't see any value in trying to extensively validate the repo (this will be done when building), but a basic check that there is a container.yaml with a 'flatpak:' section might make sense to catch accidentally triggering a Flatpak build on some inappropriate repo (though rpkg already is going to check that 'container.yaml' exists and has compose: modules)
If build in OpenShift failed some results may not be available:
Don't treat these as errors.
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
f31 |
Failed to parse SPEC file: error: line 21: Unknown tag: <<<<<<< HEAD |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
Currently error checking is done on parent task so we won't loose couple of parameters (like name of the image, logs, list of rpm files, โฆ). Successful child task may be confusing for developers.
reported by @voxik
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
f31 |
Failed to parse SPEC file: error: line 21: Unknown tag: <<<<<<< HEAD |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/koji/daemon.py", line 1161, in runTask
response = (handler.run(),)
File "/usr/lib/python2.6/site-packages/koji/tasks.py", line 158, in run
return koji.util.call_with_argcheck(self.handler, self.params, self.opts)
File "/usr/lib/python2.6/site-packages/koji/util.py", line 154, in call_with_argcheck
return func(*args, **kwargs)
File "/usr/lib/koji-builder-plugins/builder_containerbuild.py", line 313, in handler
self._incremental_upload_logs(pid)
File "/usr/lib/koji-builder-plugins/builder_containerbuild.py", line 224, in _incremental_upload_logs
uploadpath = self.getUploadPath()
AttributeError: 'CreateContainerTask' object has no attribute 'getUploadPath'
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
master |
rebase-helper didn't do the job |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
Is this software deprecated now that we're using https://github.com/projectatomic/atomic-reactor ?
The buildContainer
task result has a koji_builds
list. The elements in this list are stringify'd ints, rather than plain ints.
This makes it complicated to pass those build IDs back into Koji, like the listTags()
RPC will fail because "string" means "Name-Version-Release", not a build ID, and it's difficult to tell from the server-side backtrace what has failed.
Here's an example:
koji --noauth call getTaskResult --json 71079852
{
"repositories": [
"candidate-registry.fedoraproject.org/grafana:7-3",
"candidate-registry.fedoraproject.org/grafana:rawhide-container-candidate-64151-20210630140646",
"candidate-registry.fedoraproject.org/grafana:latest",
"candidate-registry.fedoraproject.org/grafana:7"
],
"koji_builds": [
"1776886"
]
}
The "1776886"
value is in quotes because it's a string.
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
f31 |
Failed to parse SPEC file: error: line 21: Unknown tag: <<<<<<< HEAD |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
I would like to request documentation on what to do once the plugins are installed. I noticed the psql command needed here and this allows me to submit koji-containerbuild container-build
tasks but my builder never picks up the task and the task just stays in the "free" status forever. I think I'm missing something.
Thank you,
-AdamM
This is not very helpful:
FAILED: BuildError: Error running GIT command "git reset --hard fb7a91693738a7910ebf0e82488b19693398b5a9", see checkout-for-labels.log for details
Our users could appreciate something like this:
Cannot find commit %s, did you push your changes?
Some parts of the build process cannot be easily followed. E.g. progress of point 5 https://github.com/release-engineering/koji-containerbuild/blob/develop/docs/build-process.md or if the parent build process was forcefully killed. Create overall log where the overall process will be logged - what is going to be next and when it finish.
I would like the request documentation on how to configure koji-containerbuild with an OSBS environment such that their communications are kept secure. Also, if there are other general security concerns it would be nice for them to be documented as well.
Thank you,
-AdamM
In Fedora we would like to automatically version our containers based on a "primary rpm". We have a couple of ticket open on this subject [0][1].
The current idea to implement this feature is to use a new optional LABEL in the Dockerfile, for example version.rpm
. Then some logic would be added to koji-containerbuild to use the rpm defined in this LABEL to query koji using the getLatestBuild
method. The result of the query would be used to populate the VERSION LABEL of the container.
I open this ticket to start the discussion on the implementation of this feature.
[0] - https://pagure.io/atomic-wg/issue/254
[1] - https://pagure.io/atomic-wg/issue/249
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
f30 |
rebase-helper didn't do the job |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
Fedora rawhide has moved up to 4.6, leaving this package non-installable
(see: https://bugzilla.redhat.com/show_bug.cgi?id=2101853 )
Looks like this was pinned to avoid a alpha version breaking python2 in eb1aac6
Packit failed on creating pull-requests in dist-git:
dist-git branch | error |
---|---|
f30 |
rebase-helper didn't do the job |
You can re-trigger the update by adding /packit propose-update
to the issue comment.
I have a local koji environment setup using kojak as well as the storage workaround.
The koji setup is running fine until I attempt to enable the koji-containerbuild plugin and then I get the following errors in /var/log/httpd/error_log
... I suspect it's something simple like I'm just missing a config param or something but I'm not sure what
[Mon Aug 10 12:03:02 2015] [crit] [client 192.168.122.1] configuration error: couldn't perform authentication. AuthType not set!: /koji-static/debug.css, referer: http://koji.example.com/koji/
[Mon Aug 10 12:03:39 2015] [error] 2015-08-10 12:03:39,026 [ERROR] m=None u=None p=1692 r=?:? koji.plugins: Traceback (most recent call last):
[Mon Aug 10 12:03:39 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 507, in load_plugins
[Mon Aug 10 12:03:39 2015] [error] tracker.load(name)
[Mon Aug 10 12:03:39 2015] [error] File "/usr/lib/python2.6/site-packages/koji/plugin.py", line 74, in load
[Mon Aug 10 12:03:39 2015] [error] file, pathname, description = imp.find_module(name, self.pathlist(path))
[Mon Aug 10 12:03:39 2015] [error] ImportError: No module named builder_containerbuild
[Mon Aug 10 12:03:39 2015] [error]
[Mon Aug 10 12:03:39 2015] [error] 2015-08-10 12:03:39,027 [ERROR] m=None u=None p=1692 r=?:? koji: Traceback (most recent call last):
[Mon Aug 10 12:03:39 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 675, in server_setup
[Mon Aug 10 12:03:39 2015] [error] registry = get_registry(opts, plugins)
[Mon Aug 10 12:03:39 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 782, in get_registry
[Mon Aug 10 12:03:39 2015] [error] registry.register_plugin(plugins.get(name))
[Mon Aug 10 12:03:39 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 105, in register_plugin
[Mon Aug 10 12:03:39 2015] [error] for v in vars(plugin).itervalues():
[Mon Aug 10 12:03:39 2015] [error] TypeError: vars() argument must have __dict__ attribute
[Mon Aug 10 12:03:39 2015] [error]
[Mon Aug 10 12:13:41 2015] [error] 2015-08-10 12:13:41,105 [ERROR] m=None u=None p=1691 r=?:? koji.plugins: Traceback (most recent call last):
[Mon Aug 10 12:13:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 507, in load_plugins
[Mon Aug 10 12:13:41 2015] [error] tracker.load(name)
[Mon Aug 10 12:13:41 2015] [error] File "/usr/lib/python2.6/site-packages/koji/plugin.py", line 74, in load
[Mon Aug 10 12:13:41 2015] [error] file, pathname, description = imp.find_module(name, self.pathlist(path))
[Mon Aug 10 12:13:41 2015] [error] ImportError: No module named builder_containerbuild
[Mon Aug 10 12:13:41 2015] [error]
[Mon Aug 10 12:13:41 2015] [error] 2015-08-10 12:13:41,106 [ERROR] m=None u=None p=1691 r=?:? koji: Traceback (most recent call last):
[Mon Aug 10 12:13:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 675, in server_setup
[Mon Aug 10 12:13:41 2015] [error] registry = get_registry(opts, plugins)
[Mon Aug 10 12:13:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 782, in get_registry
[Mon Aug 10 12:13:41 2015] [error] registry.register_plugin(plugins.get(name))
[Mon Aug 10 12:13:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 105, in register_plugin
[Mon Aug 10 12:13:41 2015] [error] for v in vars(plugin).itervalues():
[Mon Aug 10 12:13:41 2015] [error] TypeError: vars() argument must have __dict__ attribute
[Mon Aug 10 12:13:41 2015] [error]
[Mon Aug 10 12:15:41 2015] [error] 2015-08-10 12:15:41,635 [ERROR] m=None u=None p=1687 r=?:? koji.plugins: Traceback (most recent call last):
[Mon Aug 10 12:15:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 507, in load_plugins
[Mon Aug 10 12:15:41 2015] [error] tracker.load(name)
[Mon Aug 10 12:15:41 2015] [error] File "/usr/lib/python2.6/site-packages/koji/plugin.py", line 74, in load
[Mon Aug 10 12:15:41 2015] [error] file, pathname, description = imp.find_module(name, self.pathlist(path))
[Mon Aug 10 12:15:41 2015] [error] ImportError: No module named builder_containerbuild
[Mon Aug 10 12:15:41 2015] [error]
[Mon Aug 10 12:15:41 2015] [error] 2015-08-10 12:15:41,636 [ERROR] m=None u=None p=1687 r=?:? koji: Traceback (most recent call last):
[Mon Aug 10 12:15:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 675, in server_setup
[Mon Aug 10 12:15:41 2015] [error] registry = get_registry(opts, plugins)
[Mon Aug 10 12:15:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 782, in get_registry
[Mon Aug 10 12:15:41 2015] [error] registry.register_plugin(plugins.get(name))
[Mon Aug 10 12:15:41 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 105, in register_plugin
[Mon Aug 10 12:15:41 2015] [error] for v in vars(plugin).itervalues():
[Mon Aug 10 12:15:41 2015] [error] TypeError: vars() argument must have __dict__ attribute
[Mon Aug 10 12:15:41 2015] [error]
[Mon Aug 10 12:17:42 2015] [error] 2015-08-10 12:17:42,219 [ERROR] m=None u=None p=1685 r=?:? koji.plugins: Traceback (most recent call last):
[Mon Aug 10 12:17:42 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 507, in load_plugins
[Mon Aug 10 12:17:42 2015] [error] tracker.load(name)
[Mon Aug 10 12:17:42 2015] [error] File "/usr/lib/python2.6/site-packages/koji/plugin.py", line 74, in load
[Mon Aug 10 12:17:42 2015] [error] file, pathname, description = imp.find_module(name, self.pathlist(path))
[Mon Aug 10 12:17:42 2015] [error] ImportError: No module named builder_containerbuild
[Mon Aug 10 12:17:42 2015] [error]
[Mon Aug 10 12:17:42 2015] [error] 2015-08-10 12:17:42,220 [ERROR] m=None u=None p=1685 r=?:? koji: Traceback (most recent call last):
[Mon Aug 10 12:17:42 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 675, in server_setup
[Mon Aug 10 12:17:42 2015] [error] registry = get_registry(opts, plugins)
[Mon Aug 10 12:17:42 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 782, in get_registry
[Mon Aug 10 12:17:42 2015] [error] registry.register_plugin(plugins.get(name))
[Mon Aug 10 12:17:42 2015] [error] File "/usr/share/koji-hub/kojixmlrpc.py", line 105, in register_plugin
[Mon Aug 10 12:17:42 2015] [error] for v in vars(plugin).itervalues():
[Mon Aug 10 12:17:42 2015] [error] TypeError: vars() argument must have __dict__ attribute
[Mon Aug 10 12:17:42 2015] [error]
e.g.
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/koji/daemon.py", line 1161, in runTask
response = (handler.run(),)
File "/usr/lib/python2.6/site-packages/koji/tasks.py", line 158, in run
return koji.util.call_with_argcheck(self.handler, self.params, self.opts)
File "/usr/lib/python2.6/site-packages/koji/util.py", line 154, in call_with_argcheck
return func(*args, **kwargs)
File "/usr/lib/koji-builder-plugins/builder_containerbuild.py", line 536, in handler
logs = self._download_logs(build_id)
File "/usr/lib/koji-builder-plugins/builder_containerbuild.py", line 266, in _download_logs
outfile.write(build_log_contents)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 7826: ordinal not in range(128)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.