The document discusses a tool called Versions that checks for new releases of projects. It started as a hardcoded script but was refactored to use a YAML configuration file to make it more flexible and maintainable. The tool supports checking versions from many sites by parsing release notes with regex. While versioning schemes vary, the tool handles irregularities through configuration. Feedback from users helped improve the tool's capabilities and identify bugs.
Report
Share
Report
Share
1 of 65
Download to read offline
More Related Content
Versions
1. Versions a project to check versions. . .
or
version change tracking by Olivier Delhomme
2018 10 19
3. Is there any {} in the room ?
developers
administrators
4. Is there any {} in the room ?
developers
administrators
packages managers
5. How do you check version change ?
for the libraries you use in your projects
6. How do you check version change ?
for the libraries you use in your projects
for the puppet modules you use to manage your infrastructure
7. How do you check version change ?
for the libraries you use in your projects
for the puppet modules you use to manage your infrastructure
to integrate newest upstream versions in your repositories
12. Hard coded things
Hard coding is nice but. . .
also hard to maintain
not beautiful :
program = 'fguillot/kanboard'
version = get_latest_github_release(program)
if version != '':
print('Latest version of %s is %s' % (program, versi
13. Hard coded things
Hard coding is nice but. . .
also hard to maintain
not beautiful :
program = 'fguillot/kanboard'
version = get_latest_github_release(program)
if version != '':
print('Latest version of %s is %s' % (program, versi
=> use of a YAML file
15. First YAML format
“Rigid” format with implicit things
github.com: is the name you must use to add github projects
as a list below the name:
github.com:
- InfotelGLPI/manufacturersimports
- fguillot/kanboard
- curl/curl
- akheron/jansson
- Deltafire/MilkyTracker
- terryyin/lizard
- vmware/pyvmomi
- tmux/tmux
- tmuxinator/tmuxinator
19. Hard coded things II
Only checking:
github.com
freshcode.club
Checking urls built from site’s name.
20. Hard coded things II
Only checking:
github.com
freshcode.club
Checking urls built from site’s name.
Two categories are needed:
21. Hard coded things II
Only checking:
github.com
freshcode.club
Checking urls built from site’s name.
Two categories are needed:
Github is checked project by project
22. Hard coded things II
Only checking:
github.com
freshcode.club
Checking urls built from site’s name.
Two categories are needed:
Github is checked project by project
freshcode is a complete list of projects
24. Hard coded things. . .
Where you realize that urls are hardcoded into the project
25. Hard coded things. . .
Where you realize that urls are hardcoded into the project
=> put project url in the YAML file. . .
26. Hard coded things. . .
Where you realize that urls are hardcoded into the project
=> put project url in the YAML file. . .
=> needs a refactoring of the YAML file
27. Hard coded things. . .
Where you realize that urls are hardcoded into the project
=> put project url in the YAML file. . .
=> needs a refactoring of the YAML file
Add a “projects” list
28. Hard coded things. . .
Where you realize that urls are hardcoded into the project
=> put project url in the YAML file. . .
=> needs a refactoring of the YAML file
Add a “projects” list
Then add an url with a {} where the project name should take
place:
github:
url: "https://github.com/{}/releases.atom"
projects:
- InfotelGLPI/manufacturersimports
- fguillot/kanboard
...
31. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
32. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
33. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
34. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
35. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
www.freshports.org (FreeBSD packages),
36. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
www.freshports.org (FreeBSD packages),
fossies.org,
37. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
www.freshports.org (FreeBSD packages),
fossies.org,
repo.continuum.io,
38. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
www.freshports.org (FreeBSD packages),
fossies.org,
repo.continuum.io,
Still to be tested with:
39. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
www.freshports.org (FreeBSD packages),
fossies.org,
repo.continuum.io,
Still to be tested with:
libraries.io
40. Virtually any site ??
Versions has been tested with:
github.com,
sourceforge.net,
freshcode.club,
pypi.python.org,
savanah.gnu.org,
www.freshports.org (FreeBSD packages),
fossies.org,
repo.continuum.io,
Still to be tested with:
libraries.io
Where you realize that some version control tools does not
provide any convenient way to get releases.
41. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
42. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
43. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
44. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
45. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
46. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
47. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
48. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
GLPI 9.1 : Version 1.9.1 disponible / available
49. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
GLPI 9.1 : Version 1.9.1 disponible / available
GLPI 9.2 : Version 2.0.0 disponible / available
50. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
GLPI 9.1 : Version 1.9.1 disponible / available
GLPI 9.2 : Version 2.0.0 disponible / available
GLPI 9.3 : Version 2.1.0 disponible / available
51. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
GLPI 9.1 : Version 1.9.1 disponible / available
GLPI 9.2 : Version 2.0.0 disponible / available
GLPI 9.3 : Version 2.1.0 disponible / available
GLPI 9.3 : Version 2.1.1 disponible / available
52. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
GLPI 9.1 : Version 1.9.1 disponible / available
GLPI 9.2 : Version 2.0.0 disponible / available
GLPI 9.3 : Version 2.1.0 disponible / available
GLPI 9.3 : Version 2.1.1 disponible / available
GLPI 9.3 : Version 2.1.2 disponible / available
53. Versioning does not go straight forward sometimes. . .
github.com/angular/angular/releases
3 May 6.0.0
11 May 6.0.1
15 May 6.0.2
16 May 5.2.11
23 May 6.0.3
github.com/InfotelGLPI/manufacturersimports/releases’
GLPI 9.1 : Version 1.9.1 disponible / available
GLPI 9.2 : Version 2.0.0 disponible / available
GLPI 9.3 : Version 2.1.0 disponible / available
GLPI 9.3 : Version 2.1.1 disponible / available
GLPI 9.3 : Version 2.1.2 disponible / available
=> regex to filter out version to be printed such as:
regex: 'w+ [d.]+ : w+ ([d.]+).*'
55. Jens Schleusener (fossies.org) begun to try Version
discovered a huge number of bugs (now corrected)
suggested new features and new behaviors (still some to work
on)
56. Jens Schleusener (fossies.org) begun to try Version
discovered a huge number of bugs (now corrected)
suggested new features and new behaviors (still some to work
on)
=> entry: latest or entry: last checked (it may be a
global parameter)
57. Jens Schleusener (fossies.org) begun to try Version
discovered a huge number of bugs (now corrected)
suggested new features and new behaviors (still some to work
on)
=> entry: latest or entry: last checked (it may be a
global parameter)
=> ported regex to “list” type sites
58. YAML list type site
continuum.io:
url: "https://repo.continuum.io/pkgs/rss.xml"
type: list
regex: '[ads]*([.ws-]+)s([d.-]+w*).*'
multiproject: ',|;'
projects:
- pytorch
- holoviews
- pyopenssl
62. Thanks for listening
Versioning is not so easy:
github.com/dupgit/versions/releases
5 avril 2018 : v1.5.0
22 mai 2018 : v1.5.1: Version 1.5.1
63. Thanks for listening
Versioning is not so easy:
github.com/dupgit/versions/releases
5 avril 2018 : v1.5.0
22 mai 2018 : v1.5.1: Version 1.5.1
11 Juin 2018 : v1.5.2
64. Thanks for listening
Versioning is not so easy:
github.com/dupgit/versions/releases
5 avril 2018 : v1.5.0
22 mai 2018 : v1.5.1: Version 1.5.1
11 Juin 2018 : v1.5.2
https://github.com/dupgit/versions
65. Thanks for listening
Versioning is not so easy:
github.com/dupgit/versions/releases
5 avril 2018 : v1.5.0
22 mai 2018 : v1.5.1: Version 1.5.1
11 Juin 2018 : v1.5.2
https://github.com/dupgit/versions
Have a look at https://semver.org/ !