From 9ccd148a8ee5731cf7acd46d5644acbbf3887afa Mon Sep 17 00:00:00 2001 From: notplants Date: Mon, 8 Mar 2021 11:26:13 +0100 Subject: [PATCH] Working on jinja build for releases.peachcloud.org --- build_img.py | 67 ++++++++++++++++++++++++++++++++++++ templates/release_index.html | 49 ++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 build_img.py create mode 100644 templates/release_index.html diff --git a/build_img.py b/build_img.py new file mode 100644 index 0000000..5811b0b --- /dev/null +++ b/build_img.py @@ -0,0 +1,67 @@ +import os +import subprocess +import jinja2 +from datetime import date + + +PROJECT_PATH = os.path.dirname(os.path.realpath(__file__)) + +# load jinja templates +template_path = os.path.join(PROJECT_PATH, 'templates') +template_loader = jinja2.FileSystemLoader(searchpath=template_path) +template_env = jinja2.Environment(loader=template_loader, keep_trailing_newline=True) + + +def render_template(src, dest, template_vars=None): + """ + helper function fo rendering jinja template + :param src: relative string path to jinja template file + :param dest: absolute string path of output destination file + :param template_vars: variables to render template with + :return: None + """ + template = template_env.get_template(src) + if not template_vars: + template_vars= {} + output_text = template.render(**template_vars) + if os.path.exists(dest): + os.remove(dest) + with open(dest, 'w') as f: + f.write(output_text) + + +# remove old files +os.remove(os.path.join(PROJECT_PATH, 'raspi_3.img')) +os.remove(os.path.join(PROJECT_PATH, 'raspi_3.log')) + +# build img +subprocess.check_call(['make', 'raspi_3.img']) + +# copy image and log to releases dir +today = date.today() +today_str = "{}{}{}".format(today.year, today.month, today.day) +release_dir = "/var/www/releases.peachcloud.org/html/peach-imgs/{}".format(today_str) +print("++ successful image build, copying output to {}", release_dir) + +os.makedirs(release_dir) +img_path = os.path.join(PROJECT_PATH, 'raspi_3.img') +log_path = os.path.join(PROJECT_PATH, 'raspi_3.log') +release_img_name = "{}_peach_raspi3.img".format(today_str) +release_log_name = "{}_peach_raspi3.log".format(today_str) +img_release_path = os.path.join(release_dir, release_img_name) +log_release_path = os.path.join(release_dir, release_log_name) +subprocess.check_call(['cp', img_path, img_release_path]) +subprocess.check_call(['cp', log_path, log_release_path]) + + +# rebuild release index.html +release_index_path = "/var/www/releases.peachcloud.org/html/index.html" +release_img_url = img_release_path.replace('/var/www/releases.peachcloud.org/html/', '/') +render_template( + src="release_index.html", + dest=release_index_path, + template_vars={ + "release_img_url": release_img_url, + "release_img_name": release_img_name, + } +) \ No newline at end of file diff --git a/templates/release_index.html b/templates/release_index.html new file mode 100644 index 0000000..2993e50 --- /dev/null +++ b/templates/release_index.html @@ -0,0 +1,49 @@ + + + +PeachCloud Release Builds + + + + +

PeachCloud Image Builds

+

The latest PeachCloud disc image for Raspberry Pi 3+ with all PeachCloud microservices pre-installed.

+ + +
+
+
+ +

PeachCloud Release Builds

+

The latest aarch64 release builds of PeachCloud microservices and other software components.

+ + +
+ +

For online documentation please refer to +docs.peachcloud.org.
+Code repositories can be found at +github.com/peachcloud.
+Support our efforts at +opencollective.com/peachcloud.

+ +

Thank you for your interest in PeachCloud.

+ + \ No newline at end of file