Code Monkey home page Code Monkey logo

buildnotify's People

Contributors

akshaymankar avatar anaynayak avatar coteyr avatar dependabot-preview[bot] avatar dependabot[bot] avatar hennr avatar johnjohndoe avatar jonnyra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

buildnotify's Issues

Upgrade to Python 3

Originally reported by: Anay Nayak (Bitbucket: Anay, GitHub: Anay)


With Ubuntu 14.04 the intent is to have only Python 3 on the desktop CD images.

Incorporate changes and test application in Python 3.3 and 2.7. This should also provide an opportunity to refactor most of the code and write more tests.


BuildNotify menu becomes microscopic

Sometimes (usually after suspending and then waking my computer), BuildNotify's menu becomes so small that it's nearly invisible. This makes it impossible to quit BuildNotify by normal means (no "Exit" menu item). It has to be killed from the command line.

See https://i.imgur.com/m9PesEv.png
That small white stripe is the menu.

Add server dialog: list of projects is fixed size

Originally reported by: Anonymous


The "Add server" dialog is resizable, but all the elements are fixed size/location. This makes it awkward to handle servers with lots of projects. It would be nicer if resizing the dialog would resize the list of projects. It's annoying to have to scroll a 400 x 300 list on a 27-inch screen.
Also, resizing the dialog down looks silly and the buttons become invisible and unclickable.


keyring should not be used for unauthenticated endpoints

Not being a keyring user (i3wm) and never having used python-keyring, this requirement was a bit troublesome for me. It seems that the keyring usage should be optional, only when a username and password have actually been used.
Most of the CI endpoints for open source projects can be read without authentication.

Nothing happens after install/run

Hi,

I've just installed the program in ubuntu 18 using apt-get. I seem to have version 0.3.5-1 (from apt show buildnotify)

I get the following messages. It then stays running but nothing happens:

Gtk-Message: 09:26:11.273: Failed to load module "canberra-gtk-module"
No systemtrayicon available

I was expecting something to appear in the gnome system tray.

Could you help?

Cheers

Jonny

setup.py does not include 'buildnotifylib.generated' package

Originally reported by: Anonymous


I tried installing on both Ubuntu 12.04 and 13.10 using the instructions on the wiki, but was getting this error: "ImportError: No module named generated.preferences_ui".

Cloning the repo, and modifying setup.py to include 'buildnotifylib.generated' seems to have fixed this.

Here's the full stack trace:

$ /usr/bin/buildnotifyapplet.py
Traceback (most recent call last):
File "/usr/bin/buildnotifyapplet.py", line 2, in
import buildnotifylib
File "/usr/local/lib/python2.7/dist-packages/BuildNotify-0.3.4-py2.7.egg/buildnotifylib/init.py", line 1, in
from buildnotify import BuildNotify
File "/usr/local/lib/python2.7/dist-packages/BuildNotify-0.3.4-py2.7.egg/buildnotifylib/buildnotify.py", line 3, in
from app_ui import AppUi
File "/usr/local/lib/python2.7/dist-packages/BuildNotify-0.3.4-py2.7.egg/buildnotifylib/app_ui.py", line 3, in
from app_menu import AppMenu
File "/usr/local/lib/python2.7/dist-packages/BuildNotify-0.3.4-py2.7.egg/buildnotifylib/app_menu.py", line 7, in
from preferences import PreferencesDialog
File "/usr/local/lib/python2.7/dist-packages/BuildNotify-0.3.4-py2.7.egg/buildnotifylib/preferences.py", line 3, in
from buildnotifylib.generated.preferences_ui import Ui_Preferences
ImportError: No module named generated.preferences_ui


Support URLs without scheme in jobs

Our CI server (Hudson 3.2.2) returns a cc.xml that looks like this:

<Projects><Project webUrl="10.69.194.15:8080/job/delete_002/" name="delete_002" lastBuildLabel="6" lastBuildTime="2016-11-24T12:39:19Z" lastBuildStatus="Unknown" activity="Sleeping"/></Projects>

This may be the cause why clicking on any job in the drop-down menu results in an error popup:

Unble to detect the URI-scheme of "10.69.194.15:8080/job/delete_002/"

#31 was meant to represent this, but I wasn't clear enough. It's not about the missing scheme in the server URL. It's about the missing scheme in the URLs of individual jobs.

As far as I can see, buildnotify does the right thing in project.py, calling urlparse(props['url'], 'http'). Still, clicking on any job on the drop-down menu fails with the "Unable to detect URI-scheme" error.

I tried to debug buildnotifyapplet.py but pudb crashed :(

buildnotify dies if network is not available

Every time my machine goes through a susped/resume, BuildNotify dies:

$ tail -15 /tmp/buildnotify.log 
processed http://hudson.internal:8080/cc.xml
checking http://hudson.internal:8080/cc.xml
<urlopen error [Errno -3] Temporary failure in name resolution>
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/buildnotifylib/buildnotify.py", line 45, in update_projects
    self.app_notification.update_projects(integration_status)
  File "/usr/local/lib/python2.7/dist-packages/buildnotifylib/app_notification.py", line 13, in update_projects
    ProjectStatusNotification(self.config, self.integration_status, new_integration_status, self.notification).show_notifications()
  File "/usr/local/lib/python2.7/dist-packages/buildnotifylib/project_status_notification.py", line 21, in show_notifications
    self.timed_project_filter.filter(map(lambda server: server.url, self.current_integration_status.unavailable_servers())), "Connectivity issues")
  File "/usr/local/lib/python2.7/dist-packages/buildnotifylib/project_status_notification.py", line 27, in show_notification_msg
    self.notification.show_message(message, "\n".join(builds))
  File "/usr/local/lib/python2.7/dist-packages/buildnotifylib/notifications.py", line 22, in show_message
    self.widget.showMessage(title, text, QtGui.QSystemTrayIcon.Information, 3000)
AttributeError: 'module' object has no attribute 'QSystemTrayIcon'
Aborted (core dumped)

The same happens if I disconnect from the network.

If there's a "Temporary failure in name resolution", buildnotify should display the grey "connection problem" icon, not abort with a coredump.

Time Data appears to be off

Originally reported by: Anonymous


When using the option to display last build time in the dropdown, the times there are very off.

My CI server is a modified version of cc.rb (though nothing that messes with time, just added some security, and a few css changes).

My server is in UTC, I am in EST.

Changing the drop down in the server configuration dialog does nothing.


Migrate to Github

Originally reported by: Anay Nayak (Bitbucket: Anay, GitHub: Anay)


Reasons

  • Better integrations, lesser CI limitations
  • Wider user base
  • Git instead of Mercurial (branching, Pull requests, spikes etc)

Things to do:

  • Migrate code ✅
  • Migrate Wiki ✅
  • Migrate issues
  • Update any references
  • Setup CI

support auth tokens in url query parameter

ATM only basic auth is supported, but e.g. semaphoreci requires an auth token, thus requiring to store it in plaintext in buildnotify's config.
How is this supported by ccmenu et.al.?

If nothing else comes up, I'd suggest some support for string interpolation using e.g. %u, or { user } as placeholders for the username and %p, or { password } as placeholders for the password.
Also the URL parser should be fixed to support normal user:pw syntax for basic auth, e.g. https://myuser:[email protected]:1234/path?query=val. It seems to simply split on the first colon atm., treating this as port.
Once that is fixed, a { user }:{ password }@ prefix could become implicit when a username or password was given, thus preserving the current basic auth scheme.

Presence of { password } in the URL would also signify that a (possibly empty) password is stored in the keyring (also see #51).

Basic Auth credentials

Originally reported by: Anonymous


Go Continuous Delivery (https://go.cd/) has the feed URL protected by basic authentication, and currently I have to add that information to the URL in the form of http://user:password@hostname:8153/.

That's not very nice, because now the debugging output to the console contains my password.

It would be nice if buildnotify offered a separate dialog for entering the basic auth credentials, and did not show the password unless when prompted for it.


Wiki update

Originally reported by: Saager Mhatre (Bitbucket: dexterous, GitHub: dexterous)


Tested on following configuration- Jenkins 1.409.1 on Ubuntu Lucid Lynx (10.04) & buildnotify on Maverick Meerkat (10.10). Installs from PPA without a hitch and runs pretty well. I have it set up as a Startup App and reports well. Although it freezes up sometime and I need to kill-restart it.


crash when importing entries containing the character '»'

Using the cctray-xml-ccxml-plugin (https://github.com/jenkinsci/cctray-xml-plugin/blob/master/README.md#cctray-xml-ccxml-plugin) for Jenkins in conjunction with multi-branch jobs crashes the buildnotify while importing the entries the first time.

Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/buildnotifylib/preferences.py", line 65, in configure_projects
  File "build/bdist.linux-x86_64/egg/buildnotifylib/server_configuration_dialog.py", line 110, in open
  File "build/bdist.linux-x86_64/egg/buildnotifylib/server_configuration_dialog.py", line 103, in get_server_config
UnicodeEncodeError: 'ascii' codec can't encode character u'\xbb' in position 17: ordinal not in range(128)
Aborted (core dumped)

The character in question is '»'.

Crash on start on Arch Linux

With a fresh install of BuildNotify on my Arch system (from the AUR), the app crashes immediately on start with the following trace:

Traceback (most recent call last):
  File "/bin/buildnotifyapplet.py", line 2, in <module>
    import buildnotifylib
  File "/usr/lib/python2.7/site-packages/buildnotifylib/__init__.py", line 1, in <module>
    from buildnotifylib.buildnotify import BuildNotify   # NOQA
  File "/usr/lib/python2.7/site-packages/buildnotifylib/buildnotify.py", line 6, in <module>
    from buildnotifylib.app_ui import AppUi
  File "/usr/lib/python2.7/site-packages/buildnotifylib/app_ui.py", line 6, in <module>
    from buildnotifylib.app_menu import AppMenu
  File "/usr/lib/python2.7/site-packages/buildnotifylib/app_menu.py", line 8, in <module>
    from buildnotifylib.preferences import PreferencesDialog
  File "/usr/lib/python2.7/site-packages/buildnotifylib/preferences.py", line 5, in <module>
    from buildnotifylib.server_configuration_dialog import ServerConfigurationDialog
  File "/usr/lib/python2.7/site-packages/buildnotifylib/server_configuration_dialog.py", line 6, in <module>
    from buildnotifylib.config import Config
  File "/usr/lib/python2.7/site-packages/buildnotifylib/config.py", line 3, in <module>
    from buildnotifylib.core.keystore import Keystore
  File "/usr/lib/python2.7/site-packages/buildnotifylib/core/keystore.py", line 1, in <module>
    import keyring
ImportError: No module named keyring

Upgrade via pip to 1.0.1 failed on Ubuntu 17.10

$ python -V
Python 2.7.14

$ sudo -H pip install buildnotify --upgrade --no-clean
[sudo] password: 
Collecting buildnotify
  Downloading BuildNotify-1.0.1.tar.gz
Building wheels for collected packages: buildnotify
  Running setup.py bdist_wheel for buildnotify ... error
  Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9KxW3h/buildnotify/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpZ94Amppip-wheel- --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-2.7
  creating build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/project_status_notification.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/app_menu.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/build_icons.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/preferences.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/server_configuration_dialog.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/serverconfig.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/config.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/notifications.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/app_ui.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/version.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/buildnotify.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/app_notification.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  copying buildnotifylib/__init__.py -> build/lib.linux-x86_64-2.7/buildnotifylib
  creating build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/project.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/continous_integration_server.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/timed_event.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/repeat_timed_event.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/keystore.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/filtered_continuous_integration_server.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/background_event.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/http_connection.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/distance_of_time.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/projects.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/response.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  copying buildnotifylib/core/__init__.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
  creating build/lib.linux-x86_64-2.7/buildnotifylib/generated
  copying buildnotifylib/generated/preferences_ui.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
  copying buildnotifylib/generated/icons_rc.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
  copying buildnotifylib/generated/__init__.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
  copying buildnotifylib/generated/server_configuration_ui.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
  running build_scripts
  creating build/scripts-2.7
  copying and adjusting buildnotifyapplet.py -> build/scripts-2.7
  changing mode of build/scripts-2.7/buildnotifyapplet.py from 644 to 755
  installing to build/bdist.linux-x86_64/wheel
  running install
  running install_lib
  creating build/bdist.linux-x86_64
  creating build/bdist.linux-x86_64/wheel
  creating build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/project_status_notification.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  creating build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/project.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/continous_integration_server.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/timed_event.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/repeat_timed_event.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/keystore.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/filtered_continuous_integration_server.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/background_event.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/http_connection.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/distance_of_time.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/projects.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/response.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/core/__init__.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/core
  copying build/lib.linux-x86_64-2.7/buildnotifylib/app_menu.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  creating build/bdist.linux-x86_64/wheel/buildnotifylib/generated
  copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/preferences_ui.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/generated
  copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/icons_rc.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/generated
  copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/__init__.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/generated
  copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/server_configuration_ui.py -> build/bdist.linux-x86_64/wheel/buildnotifylib/generated
  copying build/lib.linux-x86_64-2.7/buildnotifylib/build_icons.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/preferences.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/server_configuration_dialog.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/serverconfig.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/config.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/notifications.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/app_ui.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/version.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/buildnotify.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/app_notification.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  copying build/lib.linux-x86_64-2.7/buildnotifylib/__init__.py -> build/bdist.linux-x86_64/wheel/buildnotifylib
  running install_data
  creating build/bdist.linux-x86_64/wheel/BuildNotify-1.0.1.data
  creating build/bdist.linux-x86_64/wheel/BuildNotify-1.0.1.data/data
  creating build/bdist.linux-x86_64/wheel/BuildNotify-1.0.1.data/data/share
  creating build/bdist.linux-x86_64/wheel/BuildNotify-1.0.1.data/data/share/applications
  error: can't copy 'buildnotify.desktop': doesn't exist or not a regular file
  
  ----------------------------------------
  Failed building wheel for buildnotify
  Running setup.py clean for buildnotify
Failed to build buildnotify
Installing collected packages: buildnotify
  Found existing installation: BuildNotify 1.0.0
    Uninstalling BuildNotify-1.0.0:
      Successfully uninstalled BuildNotify-1.0.0
  Running setup.py install for buildnotify ... error
    Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9KxW3h/buildnotify/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-ypEgr8-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/project_status_notification.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/app_menu.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/build_icons.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/preferences.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/server_configuration_dialog.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/serverconfig.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/config.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/notifications.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/app_ui.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/version.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/buildnotify.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/app_notification.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    copying buildnotifylib/__init__.py -> build/lib.linux-x86_64-2.7/buildnotifylib
    creating build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/project.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/continous_integration_server.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/timed_event.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/repeat_timed_event.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/keystore.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/filtered_continuous_integration_server.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/background_event.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/http_connection.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/distance_of_time.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/projects.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/response.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    copying buildnotifylib/core/__init__.py -> build/lib.linux-x86_64-2.7/buildnotifylib/core
    creating build/lib.linux-x86_64-2.7/buildnotifylib/generated
    copying buildnotifylib/generated/preferences_ui.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
    copying buildnotifylib/generated/icons_rc.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
    copying buildnotifylib/generated/__init__.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
    copying buildnotifylib/generated/server_configuration_ui.py -> build/lib.linux-x86_64-2.7/buildnotifylib/generated
    running build_scripts
    creating build/scripts-2.7
    copying and adjusting buildnotifyapplet.py -> build/scripts-2.7
    changing mode of build/scripts-2.7/buildnotifyapplet.py from 644 to 755
    running install_lib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/project_status_notification.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/project.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/continous_integration_server.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/timed_event.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/repeat_timed_event.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/keystore.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/filtered_continuous_integration_server.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/background_event.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/http_connection.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/distance_of_time.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/projects.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/response.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/core/__init__.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/core
    copying build/lib.linux-x86_64-2.7/buildnotifylib/app_menu.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    creating /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated
    copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/preferences_ui.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated
    copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/icons_rc.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated
    copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/__init__.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated
    copying build/lib.linux-x86_64-2.7/buildnotifylib/generated/server_configuration_ui.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated
    copying build/lib.linux-x86_64-2.7/buildnotifylib/build_icons.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/preferences.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/server_configuration_dialog.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/serverconfig.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/config.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/notifications.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/app_ui.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/version.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/buildnotify.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/app_notification.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    copying build/lib.linux-x86_64-2.7/buildnotifylib/__init__.py -> /usr/local/lib/python2.7/dist-packages/buildnotifylib
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/project_status_notification.py to project_status_notification.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/project.py to project.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/continous_integration_server.py to continous_integration_server.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/timed_event.py to timed_event.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/repeat_timed_event.py to repeat_timed_event.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/keystore.py to keystore.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/filtered_continuous_integration_server.py to filtered_continuous_integration_server.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/background_event.py to background_event.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/http_connection.py to http_connection.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/distance_of_time.py to distance_of_time.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/projects.py to projects.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/response.py to response.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/core/__init__.py to __init__.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/app_menu.py to app_menu.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated/preferences_ui.py to preferences_ui.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated/icons_rc.py to icons_rc.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated/__init__.py to __init__.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/generated/server_configuration_ui.py to server_configuration_ui.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/build_icons.py to build_icons.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/preferences.py to preferences.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/server_configuration_dialog.py to server_configuration_dialog.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/serverconfig.py to serverconfig.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/config.py to config.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/notifications.py to notifications.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/app_ui.py to app_ui.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/version.py to version.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/buildnotify.py to buildnotify.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/app_notification.py to app_notification.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/buildnotifylib/__init__.py to __init__.pyc
    running install_data
    error: can't copy 'buildnotify.desktop': doesn't exist or not a regular file
    
    ----------------------------------------
  Rolling back uninstall of BuildNotify
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-9KxW3h/buildnotify/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-ypEgr8-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-9KxW3h/buildnotify/
 

And indeed there's no such file:

$ sudo su
# cd /tmp/pip-build-9KxW3h/buildnotify
# ls -lR | grep desktop
#

do not auto-subscribe to new branches unless all were already selected

At least semaphore CI only has a single cc.xml endpoint that lists build statuses for all branches (https://github.com/renderedtext/semaphore-docs-new/blob/a9a2f51eca9f624a8a8d00ba320b7a87c467d544/source/docs/cctry.md).
If you're only interested in master and stable, but not in pull requests, then it's possible to only select those.
grafik
Unfortunately at the time new pull requests are opened, they are listed by the endpoint and buildnotify automatically selects/subscribes to those.

I'd suggest that the All state should be saved separately (if not already done) and be used to decide whether or not to auto-subscribe to new branches.

Status Indicator Disappears on Session Restart in 18.0.4

As the title says. Apparently this issue is not unique to this little widget. It's a common enough problem with app indicators that there's an issue for it already, with an extensive comment thread: ubuntu/gnome-shell-extension-appindicator#75

From what I've gleaned in that thread, it should be possible to update buildnotify to use newer gnome APIs that detect when session has been restarted or when it's been unlocked such that you can re-populate the top bar with the status icon.

For now, you can work around this issue by just restarting gnome-shell while logged in. But this is very disruptive since doing so can either close certain windows or cause them to move around, requiring readjustment.

Better handling for missing lastBuildTime in cc.xml

Originally reported by: Joe Merten (Bitbucket: Joe-Merten, GitHub: Unknown)


Unfortunately, some build servers are delivering sometimes buggee cc.xml

For this example, circleci has a bug were the lastBuildTime sometimes is set to an empty string.

Executing this bash oneliner:

while true; do wget "https://circleci.com/gh/Joe-Merten/Mpjoe.cc.xml" -o /dev/null -O -; echo; done

gives:

<?xml version="1.0" encoding="UTF-8"?><Projects><Project lastBuildTime="2015-02-13T10:12:43.635Z" lastBuildLabel="174" lastBuildStatus="Success" name="Joe-Merten/Mpjoe" activity="Sleeping" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>
<?xml version="1.0" encoding="UTF-8"?><Projects><Project lastBuildTime="2015-02-13T10:12:43.635Z" lastBuildLabel="174" lastBuildStatus="Success" name="Joe-Merten/Mpjoe" activity="Sleeping" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>
<?xml version="1.0" encoding="UTF-8"?><Projects><Project lastBuildTime="2015-02-13T10:12:43.635Z" lastBuildLabel="174" lastBuildStatus="Success" name="Joe-Merten/Mpjoe" activity="Sleeping" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>
<?xml version="1.0" encoding="UTF-8"?><Projects><Project lastBuildTime="" lastBuildLabel="174" lastBuildStatus="Success" name="Joe-Merten/Mpjoe" activity="Sleeping" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>
<?xml version="1.0" encoding="UTF-8"?><Projects><Project lastBuildTime="2015-02-13T10:12:43.635Z" lastBuildLabel="174" lastBuildStatus="Success" name="Joe-Merten/Mpjoe" activity="Sleeping" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>
<?xml version="1.0" encoding="UTF-8"?><Projects><Project lastBuildTime="2015-02-13T10:12:43.635Z" lastBuildLabel="174" lastBuildStatus="Success" name="Joe-Merten/Mpjoe" activity="Sleeping" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>

The toggle of lastBuildTime between »correctly set« versus »empty string« causes buildnotify to trigger a Yet another successful build notification even if the lastBuildLabel has not changed.


Fails with KeyError: u'Success.Has pending changes' on Teamcity

Originally reported by: Anonymous


Terminal log:

/usr/lib/python2.7/site-packages/gtk-2.0/gtk/init.py:122: RuntimeWarning: PyOS_InputHook is not available for interactive use of PyGTK
set_interactive(1)
checking http:///guestAuth/app/cctray-standalone/cctray/projects.xml
processed http:///guestAuth/app/cctray-standalone/cctray/projects.xml
Traceback (most recent call last):
File "/tmp/buildnotify/buildnotifylib/buildnotify.py", line 47, in update_projects
self.app_ui.update_projects(integration_status)
File "/tmp/buildnotify/buildnotifylib/app_ui.py", line 16, in update_projects
self.tray.setIcon(self.build_icons.for_aggregate_status(integration_status.get_build_status(), count))
File "/tmp/buildnotify/buildnotifylib/projects.py", line 43, in get_build_status
map = self.to_map()
File "/tmp/buildnotify/buildnotifylib/projects.py", line 62, in to_map
status[project.get_build_status()].append(project)

KeyError: u'Success.Has pending changes'

Seems to be a case of Teamcity using non "standard" activity status http://svn.jetbrains.org/teamcity/plugins/rest-api/trunk/contrib/cctray-extension/server/src/jetbrains/buildServer/server/restcontrib/cctray/model/Project.java


Since Updating Ubuntu No Icons in Drop-down Menu

Originally reported by: Anonymous


I updated to the latest Ubuntu distro (Lucid) a few weeks ago, and since then my build notify applet has stopped having icons next to the builds in the drop-down menu. The actual applet's icon (in the tray) continues to show normally; it's only when you right-click on that icon, and get the list of builds, that the icons are missing.

Oh, and the only output at the command line that might matter is:

Xlib: extension "RANDR" missing on display ":0.0".
/usr/lib/pymodules/python2.6/gtk-2.0/gtk/init.py:127: RuntimeWarning: PyOS_InputHook is not available for interactive use of PyGTK
set_interactive(1)

Any thoughts?


canberra-gtk-module missing

Not sure if this should be reported here, but if I install this in Ubuntu (18.04) the module canberra-gtk-module is not listed as a dependency, so it gives warnings on startup.

Failed to load module "canberra-gtk-module
No systemtrayicon available

Icon customization, please?

Originally reported by: Stephan Sokolow (Bitbucket: ssokolow, GitHub: ssokolow)


My notification tray follows an aesthetic where everything is monochrome unless it wants attention, which means that BuildNotify keeps catching my eye because I've trained myself to see any color (green included) as an indication that it needs attention.

At present, I'm in the absurd situation of having to build from hg tip just to change a few icons. Could you please provide a mechanism to customize them?

(And, to add insult to injury, just changing the colors in inkscape threw off some other bit of metadata that resulted in the rendered tray icon being a corner of a rounded rectangle rather than the whole rectangle.)


Support URLs without scheme

Originally reported by: Anonymous


Hudson 3.2.2 writes cc.xml like this:

#!xml

<Project webUrl="10.10.10.10:8080/job/delete_002/" name="delete_002" />

Clicking on any entry on the tray menu results only in an error popup:

Unable to detect uri-scheme of "10.10.10.10:8080/job/delete_002/"

It would be nice if buildnotify could recognize if the scheme was omitted, or it would punt and assume HTTP.


Preferences dialog: elements are fixed size

In the Preferences dialog, the Servers tab is fixed size even though the dialog itself is resizable. It would be nice if the list of monitored servers resized itself to fill the dialog.
This is less important than #30 (thanks for fixing that), because it's unlikely that there will be more monitored servers than would fit in the dialog. But this looks ugly.

Additionally, the OK button (and the other buttons in the Servers tab) can become invisible if the Preferences is resized to be more narrow than its original size. Perhaps resizing down should be forbidden.

Add support for Bearer token

I'm using Drone CI for my personal development, which uses a Bearer token associated to the user account to authenticate and access the CCMenu entrypoint:

curl --request GET \
  --url https://example.com/api/badges/Me/Project/cc.xml \
  --header 'authorization: Bearer aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789'

From a point of view of security, using a Bearer token is not a bad idea. Is it possible to add support for Bearer tokens instead of the classic user/password?

Can't install on Ubuntu 12.04 (Precise)

Originally reported by: benjaminoakes (Bitbucket: benjaminoakes, GitHub: benjaminoakes)


I've followed the steps at https://bitbucket.org/Anay/buildnotify/wiki/Installation, but they didn't work. When I updated, I got:

W: Failed to fetch http://ppa.launchpad.net/anay/ppa/ubuntu/dists/precise/main/source/Sources  404  Not Found

W: Failed to fetch http://ppa.launchpad.net/anay/ppa/ubuntu/dists/precise/main/binary-i386/Packages  404  Not Found

E: Some index files failed to download. They have been ignored, or old ones used instead.

Would it be possible to get a build for Precise? If you want some help, let me know. :)


Custom project names

Originally reported by: Brad Buchanan (Bitbucket: bradley_c_buchanan, GitHub: Unknown)


Some of my cruise control feeds have the same embedded project name (for example, when subscribing to Travis-CI feeds for different branches). If would be really nice if I could override the project names (or maybe add a supplemental label) from within buildnotify so that I could tell them apart in the dropdown menu.


Question about configuration: What is `Server Timezone` used for?

Originally reported by: Joe Merten (Bitbucket: Joe-Merten, GitHub: Unknown)


Hey Anay,

could you tell me what the Server Timezone configuration field is used for?

  • I don't need to provide this information when using e.g. ccmenu on mac or cctray on windows
  • all servers which I had work currently (snap-ci, travis-ci, circleci, semaphoreapp) are providing their lastBuildTime including time zone (UTC for this 4 servers, see below)
  • when I configure Server Timezone to something else than UTC, then the … hours ago in the buildnotify's popup shows wrong information
  • unfortunately, when configuring a new server, the Server Timezone field is defaulted to US/Central; so I got wrong values until I set this to the correct value (IMHO, the user should not be interested about the buildserver's timezone)

Using this tiny bash script, I got this responses from the above mentioned 4 ci servers:

========== https://snap-ci.com/Joe-Merten/Mpjoe/branch/master/cctray.xml ==========
<Projects><Project activity="Sleeping" lastBuildLabel="202" lastBuildStatus="Success" lastBuildTime="2015-02-14T13:25:53Z" name="Joe-Merten/Mpjoe (master) :: Build-and-Test" webUrl="https://snap-ci.com/Joe-Merten/Mpjoe/branch/master/logs/defaultPipeline/202/Build-and-Test"></Project></Projects>

========== https://api.travis-ci.org/repos/Joe-Merten/Mpjoe/cc.xml ==========
<Projects><Project activity="Sleeping" lastBuildLabel="155" lastBuildStatus="Success" lastBuildTime="2015-02-14T13:27:20.000+0000" name="Joe-Merten/Mpjoe" webUrl="https://travis-ci.org/Joe-Merten/Mpjoe"></Project></Projects>

========== https://circleci.com/gh/Joe-Merten/Mpjoe.cc.xml ==========
<Projects><Project activity="Sleeping" lastBuildLabel="175" lastBuildStatus="Success" lastBuildTime="2015-02-14T13:24:37.605Z" name="Joe-Merten/Mpjoe" webUrl="https://circleci.com/gh/Joe-Merten/Mpjoe/tree/master"></Project></Projects>

========== https://semaphoreapp.com/api/v1/projects/ed34e48b-8b31-4d78-a3cd-0730d586feaa/cc.xml?auth_token=hrY18iHUrtHtSyXC5Z3K&ccmenu=cc.xml ==========
<Projects><Project activity="Sleeping" lastBuildLabel="74" lastBuildStatus="Success" lastBuildTime="2015-02-14T13:23:20+00:00" name="Mpjoe - master" webUrl="https://semaphoreapp.com/joe-merten/mpjoe/branches/master/builds/74"></Project></Projects>

As I try to guess why you introduced the Server Timezone configuration field, I think it's for the case that the ci server just deliveres it's local time without timezone in lastBuildTime (what - for my opinion - might be a very uncommen behavior for a server). (Isn't it?)

At least, if the server provides lastBuildTime with timezone included, it goes close to a bug if buildnotify ignores the timezone from lastBuildTime and replaces it with the configured Server Timezone value.

Finally, I vote for changing Server Timezone to be an optional config field and defaulting that to don't use. Leaving the both questions open:

  • what is the priority, if both cc.xml lastBuildTime contains a timezone and also Server Timezone is configured?
    • should the lastBuildTime timezone be ignored / replaced by the Server Timezone configuration value
    • of should Server Timezone only be a fallback if the lastBuildTime comes without timezone
  • what to do if Server Timezone is not configured and lastBuildTime comes without timezone (what seems very uncommon)?
    • either fall back to utc
    • or fall back to using local time of the host machine

(BTW: I'll be also agree if you decide to remove the Server Timezone config field completely.)

Cheers, Joe


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.