2
0
mirror of https://github.com/inventree/inventree-docs.git synced 2025-04-27 21:26:43 +00:00

Automatically generate release information (#335)

* Pull InvenTree release information from GitHub

* Cache API results to file

- Prevents rate limiting during testing

* Add 'include' file for auto-generating release notes table

* Add entry for 0.8.x
This commit is contained in:
Oliver 2022-07-29 14:14:21 +10:00 committed by GitHub
parent e68e0dca19
commit ee73604a41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 152 additions and 61 deletions

3
.gitignore vendored
View File

@ -6,4 +6,7 @@ env/
*.pyd
*.pyc
# Temp files
releases.json
.vscode

View File

@ -0,0 +1,41 @@
<div class='md-typeset__scrollwrap'>
<div class='md-typeset__table'>
<table>
<thead>
<tr>
<th><span class='fas fa-clipboard-list'></span> Release</th>
<th><span class='fas fa-calendar-alt'></span> Date</th>
<th><span class='fab fa-github'></span> GitHub</th>
<th><span class='fab fa-docker'></span> Docker</th>
</tr>
</thead>
<tbody>
{% for release in config.releases %}
{% if release.prefix == prefix %}
<tr>
<td>
{% if release.local_path %}
<a href="../{{ release.tag_name }}">{{ release.tag_name }}</a>
{% else %}
{{ release.tag_name }}
{% endif %}
</td>
<td>{{ release.date }}</td>
<td>
<a href="https://github.com/inventree/InvenTree/releases/tag/{{ release.tag_name }}">{{ release.tag_name }}</a>
</td>
<td>
{% if release.docker %}
<a href="https://hub.docker.com/r/inventree/inventree/tags">inventree/inventree:{{ release.tag_name }}</a>
{% else %}
<em>Not available for this release</em>
{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>

View File

@ -2,8 +2,64 @@
Custom mkdocs hooks, using the mkdocs-simple-hooks plugin
"""
import json
import os
import re
from datetime import datetime
from urllib import request
def get_release_data():
"""Return InvenTree release information.
- First look to see if 'releases.json' file exists
- If data does not exist in this file, request via the github API
"""
json_file = os.path.join(os.path.dirname(__file__), 'releases.json')
releases = []
if os.path.exists(json_file):
# Release information has been cached to file
print("Loading release information from 'releases.json'")
with open(json_file) as f:
releases = json.loads(f.read())
else:
# Download release information via the GitHub API
print("Fetching InvenTree release information from api.github.com:")
releases = []
# Keep making API requests until we run out of results
page = 1
while 1:
url = f"https://api.github.com/repos/inventree/inventree/releases?page={page}&per_page=150"
print(f" - {url}")
response = request.urlopen(url, timeout=30)
assert(response.status == 200)
data = json.loads(response.read().decode())
if len(data) == 0:
break
for item in data:
releases.append(item)
page += 1
# Cache these results to file
with open(json_file, 'w') as f:
print("Saving release information to 'releases.json'")
f.write(json.dumps(releases))
return releases
def on_config(config, *args, **kwargs):
"""
@ -68,17 +124,53 @@ def on_config(config, *args, **kwargs):
print(f"config.site_url = '{site_url}'")
print(f"config.assets_dir = '{assets_dir}'")
return config
release_data = get_release_data()
releases = []
for item in release_data:
def my_cfg(config, *args, **kwargs):
# Ignore draft releases
if item['draft']:
continue
tag = item['tag_name']
# print(config.keys())
# Check that the tag is formatted correctly
re.match('^\d+\.\d+\.\d+$', tag)
for k in config.keys():
print(f"- {k}")
if not re.match:
print(f"Found badly formatted release: {tag}")
continue
print(config['site_url'])
# Check if there is a local file with release information
local_path = os.path.join(
os.path.dirname(__file__),
'releases',
f'{tag}.md',
)
if os.path.exists(local_path):
item['local_path'] = local_path
# Extract the date
item['date'] = item['published_at'].split('T')[0]
date = datetime.fromisoformat(item['date'])
# First tagged docker release was 2021-04-18
if date > datetime(year=2021, month=4, day=17):
item['docker'] = True
# Add a "prefix" so we can split by sub version
item['prefix'] = '.'.join(tag.split('.')[:-1])
releases.append(item)
print(f"- found {len(releases)} releases.")
# Sort releases by descending date
config['releases'] = sorted(releases, key=lambda it: it['date'], reverse=True)
return config

View File

@ -27,74 +27,29 @@ Specific tagged releases are shown below. Click on the release notes for each ve
!!! info "Release Notes"
Starting from v0.7.2, release notes have been migrated to GitHub. Release notes for older versions are available at the links below.
### 0.7.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| 0.7.7 | 2022-07-26 | [0.7.7](https://github.com/inventree/InvenTree/releases/tag/0.7.7) | inventree:0.7.7 |
| 0.7.6 | 2022-07-22 | [0.7.6](https://github.com/inventree/InvenTree/releases/tag/0.7.6) | inventree:0.7.6 |
| 0.7.5 | 2022-07-15 | [0.7.5](https://github.com/inventree/InvenTree/releases/tag/0.7.5) | inventree:0.7.5 |
| 0.7.4 | 2022-06-23 | [0.7.4](https://github.com/inventree/InvenTree/releases/tag/0.7.4) | inventree:0.7.4 |
| 0.7.3 | 2022-06-16 | [0.7.3](https://github.com/inventree/InvenTree/releases/tag/0.7.3) | inventree:0.7.3 |
| 0.7.2 | 2022-06-15 | [0.7.2](https://github.com/inventree/InvenTree/releases/tag/0.7.2) | inventree:0.7.2 |
| [0.7.1](./0.7.1.md) | 2022-06-02 | [0.7.1](https://github.com/inventree/InvenTree/releases/tag/0.7.1) | [inventree:0.7.1](https://hub.docker.com/layers/inventree/inventree/inventree/0.7.1/images/sha256-5da112efd1aa43d2e22df7053e6344e884d094aaddcf6401f0ccbaac245e61da?context=explore) |
| [0.7.0](./0.7.0.md) | 2022-05-24 | [0.7.0](https://github.com/inventree/InvenTree/releases/tag/0.7.0) | [inventree:0.7.0](https://hub.docker.com/layers/inventree/inventree/inventree/0.7.0/images/sha256-b15d2970e1577cc8e2429487636f07576912cec8d3c7ee0227c3e51711f0042a?context=explore) |
### 0.8.x
{% with prefix="0.8" %}{% include "release_table.html" %}{% endwith %}
### 0.7.x
{% with prefix="0.7" %}{% include "release_table.html" %}{% endwith %}
### 0.6.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| [0.6.4](./0.6.4.md) | 2022-05-10 | [0.6.4](https://github.com/inventree/InvenTree/releases/tag/0.6.4) | [inventree:0.6.4](https://hub.docker.com/layers/inventree/inventree/inventree/0.6.4/images/sha256-9b89052490e6b43edc541f2a0856397db85742749fa8f2a262a0654b0532f7a9?context=explore) |
| [0.6.3](./0.6.3.md) | 2022-03-30 | [0.6.3](https://github.com/inventree/InvenTree/releases/tag/0.6.3) | [inventree:0.6.3](https://hub.docker.com/layers/inventree/inventree/inventree/0.6.3/images/sha256-dc583301371686a30c919a25dd68e5101ea9ecb8cb63dde617fa8b2c44c27ff6?context=explore) |
| [0.6.2](./0.6.2.md) | 2022-03-10 | [0.6.2](https://github.com/inventree/InvenTree/releases/tag/0.6.2) | [inventree:0.6.2](https://hub.docker.com/layers/inventree/inventree/0.6.2/images/sha256-09e8a4a95285906b4d1d5dbd2274f56595f0b402c296d59eca2c8534c0242257?context=explore) |
| [0.6.1](./0.6.1.md) | 2022-03-04 | [0.6.1](https://github.com/inventree/InvenTree/releases/tag/0.6.1) | [inventree:0.6.1](https://hub.docker.com/layers/inventree/inventree/0.6.1/images/sha256-7586a9feaa50e2928742ea4b0a6441505984b196105a7f84b70b845d42e4af75?context=explore) |
| [0.6.0](./0.6.0.md) | 2022-02-21 | [0.6.0](https://github.com/inventree/InvenTree/releases/tag/0.6.0) | [inventree:0.6.0](https://hub.docker.com/layers/inventree/inventree/0.6.0/images/sha256-7f4d936d8647ee107a04752f13265687c580c89d5afdd4565e7073f2c32b357a?context=explore) |
{% with prefix="0.6" %}{% include "release_table.html" %}{% endwith %}
### 0.5.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| [0.5.4](./0.5.4.md) | 2021-11-3 | [0.5.4](https://github.com/inventree/InvenTree/releases/tag/0.5.4) | [inventree:0.5.4](https://hub.docker.com/layers/inventree/inventree/0.5.4/images/sha256-35512b55ea1f78a802c915d3ea920bb8e1ef0c8f3f1b68ec1941d2a6a1141bd3?context=explore) |
| [0.5.3](./0.5.3.md) | 2021-10-19 | [0.5.3](https://github.com/inventree/InvenTree/releases/tag/0.5.3) | [inventree:0.5.3](https://hub.docker.com/layers/inventree/inventree/0.5.3/images/sha256-ecdfbd2906241b2495cee3c5acc12bdec5ed66b2d32ab146dbc2b71131a73a7a?context=explore) |
| [0.5.2](./0.5.2.md) | 2021-10-19 | [0.5.2](https://github.com/inventree/InvenTree/releases/tag/0.5.2) | [inventree:0.5.2](https://hub.docker.com/layers/inventree/inventree/0.5.2/images/sha256-ff4f435df894c5aa5ea18ee7f3637e81a29ed356ed82dba70ecbd28da3e3d965?context=explore) |
| [0.5.1](./0.5.1.md) | 2021-10-11 | [0.5.1](https://github.com/inventree/InvenTree/releases/tag/0.5.1) | [inventree:0.5.1](https://hub.docker.com/layers/inventree/inventree/0.5.1/images/sha256-3dbfb2e1bc73a0ff2bf537b56f7151c98097923cf77f5313a2a914586ab75973?context=explore) |
| [0.5.0](./0.5.0.md) | 2021-10-1 | [0.5.0](https://github.com/inventree/InvenTree/releases/tag/0.5.0) | [inventree:0.5.0](https://hub.docker.com/layers/inventree/inventree/0.5.0/images/sha256-eed8b5df1512d4f1f8596d782d894f8e582c0978d0109020da3ee852bb9326ee?context=explore) |
{% with prefix="0.5" %}{% include "release_table.html" %}{% endwith %}
### 0.4.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| [0.4.5](./0.4.5.md) | 2021-08-10 | [0.4.5](https://github.com/inventree/InvenTree/releases/tag/0.4.5) | [inventree:0.4.5](https://hub.docker.com/layers/inventree/inventree/0.4.5/images/sha256-87c84512b31b9a5a0810c79fcb9a9f4515395d0c610619017e41d28b52946eaa?context=explore) |
| [0.4.4](./0.4.4.md) | 2021-08-09 | [0.4.4](https://github.com/inventree/InvenTree/releases/tag/0.4.4) | [inventree:0.4.4](https://hub.docker.com/layers/inventree/inventree/0.4.4/images/sha256-adf5f8515a1a1f8b35404e1bb634ef31572baf9472fd5e6920327953c822e477?context=explore) |
| [0.4.3](./0.4.3.md) | 2021-08-05 | [0.4.3](https://github.com/inventree/InvenTree/releases/tag/0.4.3) | [inventree:0.4.3](https://hub.docker.com/layers/inventree/inventree/0.4.3/images/sha256-441af7821e59c1f96e012fe3060497aa8da9d085701513d1eab3a45c42297fc8?context=explore) |
| [0.4.2](./0.4.2.md) | 2021-08-02 | [0.4.2](https://github.com/inventree/InvenTree/releases/tag/0.4.2) | [inventree:0.4.2](https://hub.docker.com/layers/inventree/inventree/0.4.2/images/sha256-987c656ec21cc8f8dc1c1d74d5443368161b6ef27cb823edcbcddd5aa28ccf6c?context=explore) |
| [0.4.1](./0.4.1.md) | 2021-07-31 | [0.4.1](https://github.com/inventree/InvenTree/releases/tag/0.4.1) | [inventree:0.4.1](https://hub.docker.com/layers/inventree/inventree/0.4.1/images/sha256-fa0560d4b1fa99c5e49f8d1b1f78893ef0361db7a05f92aed08d1a405fe715c4?context=explore) |
| [0.4.0](./0.4.0.md) | 2021-07-28 | [0.4.0](https://github.com/inventree/InvenTree/releases/tag/0.4.0) | [inventree:0.4.0](https://hub.docker.com/layers/inventree/inventree/0.4.0/images/sha256-475cbd226b4a2ac2a23106e33d84497642b1e373a9d7521e6773c1ea4d0b32c9?context=explore) |
{% with prefix="0.4" %}{% include "release_table.html" %}{% endwith %}
### 0.3.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| [0.3.0](./0.3.0.md) | 2021-07-15 | [0.3.0](https://github.com/inventree/InvenTree/releases/tag/0.3.0) | [inventree:0.3.0](https://hub.docker.com/layers/inventree/inventree/0.3.0/images/sha256-b442a236fbc4b91e1e5fdbba2a080655e30447422aaa2e32cd6053571900b2c3?context=explore) |
{% with prefix="0.3" %}{% include "release_table.html" %}{% endwith %}
### 0.2.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| [0.2.4](./0.2.4.md) | 2021-06-27 | [0.2.4](https://github.com/inventree/InvenTree/releases/tag/0.2.4) | [inventree:0.2.4](https://hub.docker.com/layers/inventree/inventree/0.2.4/images/sha256-a7a9f860d4ef47cda83ca79edc147a6b7d4c86860cd92d37e5e4fc5bec95da82?context=explore) |
| [0.2.3](./0.2.3.md) | 2021-06-16 | [0.2.3](https://github.com/inventree/InvenTree/releases/tag/0.2.3) | [inventree:0.2.3](https://hub.docker.com/layers/inventree/inventree/0.2.3/images/sha256-527c78eb7e32cbf67f82ba5226f9a9486c1de58c03057c7c9edc7626f6127f02?context=explore) |
| [0.2.2](./0.2.2.md) | 2021-05-29 | [0.2.2](https://github.com/inventree/InvenTree/releases/tag/0.2.2) | [inventree:0.2.2](https://hub.docker.com/layers/inventree/inventree/0.2.2/images/sha256-cd6f13de516ceae53dbe9e4d1ff014a040f71f5651e7099e9299f2e678a51209?context=explore) |
| [0.2.1](./0.2.1.md) | 2021-04-18 | [0.2.1](https://github.com/inventree/InvenTree/releases/tag/0.2.1) | [inventree:0.2.1](https://hub.docker.com/layers/inventree/inventree/0.2.1/images/sha256-ea6932dd19864df2a7918f244ec5e5b3eeb06d2c9e4892bdcc7d4b491721b4e6?context=explore) |
| [0.2.0](./0.2.0.md) | 2021-04-11 | [0.2.0](https://github.com/inventree/InvenTree/releases/tag/0.2.0) | - |
{% with prefix="0.2" %}{% include "release_table.html" %}{% endwith %}
### 0.1.x
| <span class='fas fa-clipboard-list'></span> Release | <span class='fas fa-calendar-alt'></span> Date | <span class='fab fa-github'></span> GitHub | <span class='fab fa-docker'></span> Docker |
| --- | --- | --- | --- |
| [0.1.8](./0.1.8.md) | 2021-04-10 | [0.1.8](https://github.com/inventree/InvenTree/releases/tag/0.1.8) | - |
| [0.1.7](./0.1.7.md) | 2021-03-04 | [0.1.7](https://github.com/inventree/InvenTree/releases/tag/0.1.7) | - |
| [0.1.6](./0.1.6.md) | 2021-02-21 | [0.1.6](https://github.com/inventree/InvenTree/releases/tag/0.1.6) | - |
| [0.1.5](./0.1.5.md) | 2021-01-19 | [0.1.5](https://github.com/inventree/InvenTree/releases/tag/0.1.5) | - |
| [0.1.4](./0.1.4.md) | 2020-11-15 | [0.1.4](https://github.com/inventree/InvenTree/releases/tag/0.1.4) | - |
{% with prefix="0.1" %}{% include "release_table.html" %}{% endwith %}
## Upcoming Features