[Git][reproducible-builds/reproducible-website][master] Move to monthly report structure.
Chris Lamb
gitlab at salsa.debian.org
Wed Apr 17 12:53:07 CEST 2019
Chris Lamb pushed to branch master at Reproducible Builds / reproducible-website
Commits:
eb0ae674 by Chris Lamb at 2019-04-17T10:50:05Z
Move to monthly report structure.
- - - - -
9 changed files:
- _config.yml
- + _layouts/new/report.html
- _blog/posts/207.md → _reports/201904.md
- bin/generate-draft
- bin/generate-draft.template
- bin/publish
- blog.md
- blog/index.rss
- + reports.md
Changes:
=====================================
_config.yml
=====================================
@@ -20,6 +20,8 @@ collections:
output: true
events:
output: true
+ reports:
+ output: true
exclude:
- README
=====================================
_layouts/new/report.html
=====================================
@@ -0,0 +1,24 @@
+---
+layout: new/default
+---
+
+<h1><a href="{{ page.url }}">{{ page.title }}</a></h1>
+
+<p>← <a href="{{ "/reports/" | prepend: site.baseurl }}">View all monthly reports</a></p>
+
+{% unless page.published %}
+<div class="col-12 alert alert-warning" role="alert">
+ <strong>This is an unpublished draft report.</strong>
+ <a href="https://salsa.debian.org/reproducible-builds/reproducible-website.git/tree/_reports/{{ page.year }}{{ page.month }}.md">(source)</a>
+</div>
+{% endunless %}
+
+<hr>
+
+<div class="blog-post-content">
+ {{ content }}
+</div>
+
+<hr>
+
+<p>← <a href="{{ "/reports/" | prepend: site.baseurl }}">View all monthly reports</a></p>
=====================================
_blog/posts/207.md → _reports/201904.md
=====================================
@@ -1,6 +1,8 @@
---
-layout: new/blog
-week: 207
+layout: new/report
+year: "2019"
+month: "04"
+title: "Reproducible Builds in April 2019"
---
* fontconfig
=====================================
bin/generate-draft
=====================================
@@ -11,8 +11,6 @@ import sys
import time
import yaml
-WEEK_1_END = 1430611200 # May 3 2015, 00:00 UTC, Sunday
-
PROJECTS = (
'diffoscope',
'diffoscope-website',
@@ -29,9 +27,9 @@ def main(*args):
for x in PROJECTS + ('reproducible-notes',):
ensure_dir(sibling_repo_gitdir(x))
- week = int(args[0]) if len(args) > 0 else prev_week()
+ today = datetime.datetime.utcnow()
- data = get_data(week)
+ data = get_data(today.year, today.month)
env = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__))
@@ -45,11 +43,6 @@ def log(msg, *args, **kwargs):
print("I: " + msg.format(*args, **kwargs), file=sys.stderr)
-def prev_week():
- now = int(time.time())
- return ((now - WEEK_1_END) // (7 * 24 * 3600) + 1)
-
-
def sibling_repo_gitdir(path):
toplevel = os.path.dirname(subprocess.check_output((
'git',
@@ -65,8 +58,8 @@ def ensure_dir(path):
raise ValueError("not a directory: {}".format(path))
-def get_data(week, max_age=3600):
- filename = '/tmp/generate-draft-{}.pickle'.format(week)
+def get_data(year, month, max_age=3600):
+ filename = '/tmp/generate-draft-{:04d}{:02d}.pickle'.format(year, month)
try:
mtime = os.path.getmtime(filename)
@@ -82,10 +75,13 @@ def get_data(week, max_age=3600):
log("Getting new data")
- week_end = WEEK_1_END + (week - 1) * 7 * 24 * 3600 # exclusive
- week_start = week_end - 7 * 24 * 3600 # inclusive
+ month_start = datetime.date(year=year, month=month, day=1)
+ month_end = month_start.replace(day=calendar.monthlen(year, month))
+
+ month_start_ts = int(month_start.timestamp())
+ month_end_ts = int(month_end.timestamp())
- data = {x: y(week_start, week_end) for x, y in (
+ data = {x: y(month_start_ts, month_end_ts) for x, y in (
('author', get_author),
('commits', get_commits),
('uploads', get_uploads),
@@ -97,10 +93,10 @@ def get_data(week, max_age=3600):
)}
data.update({
- 'week': week,
- 'week_start': datetime.datetime.utcfromtimestamp(week_start),
- 'week_end': datetime.datetime.utcfromtimestamp(week_end - 1),
'projects': PROJECTS,
+ 'title': month_start.strftime('Reproducible Builds in %B %Y'),
+ 'title_year': '{:04d}'.format(year),
+ 'title_month': '{:02d}'.format(month),
})
log("Saving cache to {}", filename)
@@ -111,27 +107,27 @@ def get_data(week, max_age=3600):
return data
-def get_author(week_start, week_end):
+def get_author(month_start, month_end):
return os.environ.get('DEBFULLNAME', 'FIXME')
-def get_ftbfs_bugs(week_start, week_end):
+def get_ftbfs_bugs(month_start, month_end):
return bugs(
- week_start,
- week_end,
+ month_start,
+ month_end,
"bugs_usertags.tag = '{}'".format('ftbfs'),
)
-def get_patches(week_start, week_end):
+def get_patches(month_start, month_end):
return bugs(
- week_start,
- week_end,
+ month_start,
+ month_end,
"id IN (SELECT id FROM bugs_tags WHERE tag = 'patch')",
)
-def bugs(week_start, week_end, extra="true"):
+def bugs(month_start, month_end, extra="true"):
log("Querying UDD for usertagged bugs with filter: {}", extra)
fields = (
@@ -156,12 +152,12 @@ def bugs(week_start, week_end, extra="true"):
{extra}
AND
CAST(arrival AS DATE) BETWEEN
- to_timestamp(@{week_start}) AND to_timestamp(@{week_end})
+ to_timestamp(@{month_start}) AND to_timestamp(@{month_end})
""".format(**{
'fields': ', '.join(fields),
'extra': extra,
- 'week_start': week_start,
- 'week_end': week_end,
+ 'month_start': month_start,
+ 'month_end': month_end,
})
seen = set()
@@ -178,7 +174,7 @@ def bugs(week_start, week_end, extra="true"):
}
-def get_uploads(week_start, week_end):
+def get_uploads(month_start, month_end):
log("Querying UDD for uploads")
fields = (
@@ -197,14 +193,14 @@ def get_uploads(week_start, week_end):
source IN ({sources})
AND
CAST(date AS date) BETWEEN
- to_timestamp(@{week_start}) AND to_timestamp(@{week_end})
+ to_timestamp(@{month_start}) AND to_timestamp(@{month_end})
ORDER BY
date
""".format(**{
'fields': ', '.join(fields),
'sources': ', '.join("'{}'".format(x) for x in PROJECTS),
- 'week_start': week_start,
- 'week_end': week_end,
+ 'month_start': month_start,
+ 'month_end': month_end,
}), fields)
result = {}
@@ -234,16 +230,16 @@ def udd(query, fields):
return data
-def get_commits(week_start, week_end):
- return {x: commits(week_start, week_end, x) for x in PROJECTS}
+def get_commits(month_start, month_end):
+ return {x: commits(month_start, month_end, x) for x in PROJECTS}
-def get_issues_yml(week_start, week_end):
- return commits(week_start, week_end, 'reproducible-notes', 'issues.yml')
+def get_issues_yml(month_start, month_end):
+ return commits(month_start, month_end, 'reproducible-notes', 'issues.yml')
-def get_packages_yml(week_start, week_end):
- return commits(week_start, week_end, 'reproducible-notes', 'packages.yml')
+def get_packages_yml(month_start, month_end):
+ return commits(month_start, month_end, 'reproducible-notes', 'packages.yml')
def open_packages_yml(date):
@@ -255,9 +251,9 @@ def open_packages_yml(date):
stdout=subprocess.PIPE).stdout
-def get_packages_stats(week_start, week_end):
- old = yaml.safe_load(open_packages_yml(week_start))
- new = yaml.safe_load(open_packages_yml(week_end))
+def get_packages_stats(month_start, month_end):
+ old = yaml.safe_load(open_packages_yml(month_start))
+ new = yaml.safe_load(open_packages_yml(month_end))
removed = set(old.keys()) - set(new.keys())
added = set(new.keys()) - set(old.keys())
@@ -272,7 +268,7 @@ def get_packages_stats(week_start, week_end):
}
-def commits(week_start, week_end, project, path='.'):
+def commits(month_start, month_end, project, path='.'):
# Assume its in the parent dir
git_dir = sibling_repo_gitdir(project)
@@ -282,8 +278,8 @@ def commits(week_start, week_end, project, path='.'):
'git',
'log',
'origin/master',
- '--since', '@{}'.format(week_start),
- '--until', '@{}'.format(week_end),
+ '--since', '@{}'.format(month_start),
+ '--until', '@{}'.format(month_end),
'--pretty=format:%an\t%h\t%s',
'--no-merges',
'--all',
=====================================
bin/generate-draft.template
=====================================
@@ -1,13 +1,13 @@
---
-layout: new/blog
-week: {{ week }}
+layout: new/report
+year: "{{ title_year }}"
+month: "{{ title_month }}"
+title: "{{ title }}"
---
-Here's what happened in the [Reproducible Builds](https://reproducible-builds.org) effort between {{ week_start.strftime('%A %B') }} {{ week_start.day }} and {{ week_end.strftime('%A %B') }} {{ week_end.day }} {{ week_end.year }}:
+* On [our mailing list](https://lists.reproducible-builds.org/pipermail/rb-general/) this month: FIXME
-* On [our mailing list](https://lists.reproducible-builds.org/pipermail/rb-general/) this week: FIXME
-
-* {{ packages_stats['added'] }} reviews of Debian packages were added, {{ packages_stats['updated'] }} were updated and {{ packages_stats['removed'] }} were removed in this week, adding to [our knowledge about identified issues](https://tests.reproducible-builds.org/debian/index_issues.html). FIXME issue types have been updated: {% for _, xs in issues_yml.items()|sort %}{% for x in xs %}[{{ x['title'] }}](https://salsa.debian.org/reproducible-builds/reproducible-notes/commit/{{ x['sha'] }}), {% endfor %}{% endfor %}
+* {{ packages_stats['added'] }} reviews of Debian packages were added, {{ packages_stats['updated'] }} were updated and {{ packages_stats['removed'] }} were removed this month, adding to [our knowledge about identified issues](https://tests.reproducible-builds.org/debian/index_issues.html). FIXME issue types have been updated: {% for _, xs in issues_yml.items()|sort %}{% for x in xs %}[{{ x['title'] }}](https://salsa.debian.org/reproducible-builds/reproducible-notes/commit/{{ x['sha'] }}), {% endfor %}{% endfor %}
## Packages reviewed and fixed, and bugs filed
@@ -22,7 +22,7 @@ In addition, build failure bugs were reported by:
{% for project in projects %}
## {{ project }} development
{% for x in uploads[project] %}
-{{ project }} version `{{ x['version'] }}` was [uploaded to Debian {{ x['distribution'] }}](https://tracker.debian.org/pkg/{{ project }}?FIXME) by {{ x['signed_by_name'] }}. It [included contributions already covered in previous weeks](https://salsa.debian.org/reproducible-builds/{{ project }}/commits/{% if project != 'diffoscope' %}debian/{% endif %}{{ x['version'] }}) as well as new ones from:
+{{ project }} version `{{ x['version'] }}` was [uploaded to Debian {{ x['distribution'] }}](https://tracker.debian.org/pkg/{{ project }}?FIXME) by {{ x['signed_by_name'] }}. It [included contributions already covered in previous months](https://salsa.debian.org/reproducible-builds/{{ project }}/commits/{% if project != 'diffoscope' %}debian/{% endif %}{{ x['version'] }}) as well as new ones from:
{% endfor %}
{% for x, ys in commits[project].items()|sort %}* {{ x }}:{% for y in ys %}
@@ -32,4 +32,4 @@ In addition, build failure bugs were reported by:
---
-This week's edition was written by {{ author }} & reviewed by a bunch of Reproducible Builds folks on IRC & the mailing lists.
+This months's report was written by {{ author }} & reviewed by a bunch of Reproducible Builds folks on IRC & the mailing lists.
=====================================
bin/publish
=====================================
@@ -2,18 +2,20 @@
set -eu
-WEEK="${1}"
+YEAR="${1}"
+MONTH="$(printf "%02d" "${2}")"
+TAG="${YEAR}${MONTH}"
-URL="https://reproducible-builds.org/blog/posts/${WEEK}/"
+URL="https://reproducible-builds.org/blog/reports/${YEAR}${MONTH}/"
DATE="$(date --utc +'%Y-%m-%d %H:%M:%S')"
-if ! shift 1
+if ! shift 2
then
- echo "${0}: usage: ${0} <week>" >&2
+ echo "${0}: usage: ${0} <year> <month>" >&2
exit 2
fi
-FILENAME="_blog/posts/${WEEK}.md"
+FILENAME="_reports/${TAG}.md"
if grep -qs FIXME "${FILENAME}"
then
@@ -23,7 +25,7 @@ fi
if ! grep -qs 'published: ' "${FILENAME}"
then
- sed -i -e "s@^\(week: ${WEEK}\)@\1\npublished: ${DATE}@g" "${FILENAME}"
+ sed -i -e "s@^\(title: .*\)@\1\npublished: ${DATE}@g" "${FILENAME}"
fi
git add "${FILENAME}"
@@ -31,12 +33,12 @@ git add "${FILENAME}"
if git commit -m "published as ${URL}"
then
git log -1
- git tag -s "${WEEK}" -m "Publish week ${WEEK}"
+ git tag -s "${TAG}" -m "Publish report for ${TAG}"
echo
echo "Now verify the results and run:"
echo
- echo " $ git push origin master && git push origin ${WEEK}"
+ echo " $ git push origin master && git push origin ${TAG}"
echo
while true
@@ -46,7 +48,7 @@ then
case "${X}" in
Y|"")
- git push origin master && git push origin ${WEEK}
+ git push origin master && git push origin ${TAG}
break
;;
N|n)
@@ -61,7 +63,7 @@ echo
echo
echo "After ensuring this has been published, Tweet this via:"
echo
-echo "%tweet What happened in the @ReproBuilds effort between $(tr '\n' ' ' < "${FILENAME}" | sed -n -e 's at .* effort between \([^:]*\):.*@\1 at p'): https://reproducible-builds.org/blog/posts/${WEEK}/"
+echo "%tweet Here's happened in the @ReproBuilds effort in the past month ${URL}"
echo
printf "Waiting for page to be published "
while :
@@ -69,7 +71,7 @@ do
sleep 1
printf "."
- if ! curl -qs "${URL}" 2>/dev/null | grep -qs "This is an unpublished draft post."
+ if ! curl -qs "${URL}" 2>/dev/null | grep -qs "This is an unpublished draft report."
then
break
fi
=====================================
blog.md
=====================================
@@ -1,18 +1,4 @@
---
-layout: new/default
-title: Blog
permalink: /blog/
-order: 6
---
-
-# Blog
-
-Every week we publish a weekly report on what we have been up to. ([RSS/Atom feed]({{ "/blog/index.rss" | prepend: site.baseurl }}))
-
-{% assign by_week = site.blog | sort: 'week' | reverse %}
-
-{% for page in by_week %}
-{% if page.published %}
-* [Week {{ page.week }}]({{ "/blog/posts/" | append: page.week | append: "/" | prepend: site.baseurl }})
-{% endif %}
-{% endfor %}
+<meta http-equiv="refresh" content="0; url={{ "/reports/" | prepend: site.baseurl }}">
=====================================
blog/index.rss
=====================================
@@ -12,18 +12,27 @@ layout: null
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
<generator>Jekyll v{{ jekyll.version }}</generator>
- {% assign sorted = site.blog | sort: 'published' | reverse %}
- {% for page in sorted limit:10 %}
- {% if page.published %}
+ {% assign reports = site.reports | sort: 'year,month' | where_exp: 'item', 'item.published' | reverse %}
+
+ {% for x in reports limit:10 %}
<item>
- <title>Reproducible Builds: Weekly report #{{ page.week }}</title>
- <pubDate>{{ page.published | date_to_rfc822 }}</pubDate>
- <link>{{ page.url | prepend: site.url }}</link>
- <guid isPermaLink="true">{{ page.url | prepend: site.url }}</guid>
- <description>{{ page.content | xml_escape }}</description>
+ <title>{{ x.title }}</title>
+ <pubDate>{{ x.published | date_to_rfc822 }}</pubDate>
+ <link>{{ x.url | prepend: site.url }}</link>
+ <guid isPermaLink="true">{{ x.url | prepend: site.url }}</guid>
+ <description>{{ x.content | xml_escape }}</description>
</item>
- {% endif %}
{% endfor %}
+ {% assign posts = site.blog | sort: 'published' | where_exp: 'item', 'item.published' | reverse %}
+ {% for x in posts limit:10 %}
+ <item>
+ <title>Reproducible Builds: Weekly report #{{ x.week }}</title>
+ <pubDate>{{ x.published | date_to_rfc822 }}</pubDate>
+ <link>{{ x.url | prepend: site.url }}</link>
+ <guid isPermaLink="true">{{ x.url | prepend: site.url }}</guid>
+ <description>{{ x.content | xml_escape }}</description>
+ </item>
+ {% endfor %}
</channel>
</rss>
=====================================
reports.md
=====================================
@@ -0,0 +1,34 @@
+---
+layout: new/default
+title: Reports
+permalink: /reports/
+order: 6
+---
+
+{% assign reports = site.reports | sort: 'year,month' | where_exp: 'item', 'item.published' | reverse %}
+
+{% if reports.size > 0 %}
+
+# Reports
+Every month we publish a report on what we have been up to. ([RSS/Atom feed]({{ "/blog/index.rss" | prepend: site.baseurl }}))
+
+{% for x in reports %}
+* [{{ x.title }}]({{ x.url | prepend: site.baseurl }})
+{% endfor %}
+
+## Weekly reports
+
+We previously published weekly reports on what we have been up to:
+{% else %}
+
+# Blog
+
+Every week we publish a weekly report on what we have been up to. ([RSS/Atom feed]({{ "/blog/index.rss" | prepend: site.baseurl }}))
+
+{% endif %}
+
+{% assign posts = site.blog | sort: 'week' | where_exp: 'item', 'item.published' | reverse %}
+
+{% for x in posts %}
+* [Week {{ x.week }}]({{ x.url | prepend: site.baseurl }})
+{% endfor %}
View it on GitLab: https://salsa.debian.org/reproducible-builds/reproducible-website/commit/eb0ae674abd3819f806d0aba9243fbd3b7e52e8c
--
View it on GitLab: https://salsa.debian.org/reproducible-builds/reproducible-website/commit/eb0ae674abd3819f806d0aba9243fbd3b7e52e8c
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.reproducible-builds.org/pipermail/rb-commits/attachments/20190417/d847a4cc/attachment.html>
More information about the rb-commits
mailing list