KnG website, Terraform, and site files.
www/— the static site that gets deployed (HTML, CSS, ...);www/blog/is generated, see belowcontent/blog/— blog posts, as Markdown with front mattercontent/legal/— privacy policy, services terms, and license agreement (Markdown);content/faq.md— the Support/FAQ page.build_blog.pyrenders them towww/<slug>.htmland refreshes the shared header/footer (between theSITE_HEADER/SITE_FOOTERmarkers) on every hand-written pagecontent/findcache/— the FindCache overview and user-guide pages (Markdown withtitle,slug,order,summaryfront matter), rendered bybuild_blog.pytowww/findcache*.htmlunder the "Just for Fun" nav entry;www/fun.html(hand-written) is that section's landing page, andwww/img/findcache/holds its screenshots, icon and download QR codesrc/— Python:build_blog.pyrenderscontent/blog/intowww/blog/;contact_handler/is the contact-form Lambdacontent/downloads/—options.json(public picker options for the Download page) andartifact_map.json(which Virtual Church Musician release assets are published where);src/download_handler/is the download Lambda andsrc/publish_release.pyplans a release publication andsrc/verify_signatures.pydetects whether its installers are signed, both run by the manualpublish-downloads.ymlworkflow.tests/—python3 -m unittest discover -s teststerraform/— AWS infrastructure (S3, ACM, CloudFront, the GitHub Actions deploy role) — seeterraform/README.mdfor setup
pip install -r requirements.txt
python3 src/build_blog.py
Then open www/index.html from the repository root in a browser, or serve
the www/ directory with a simple static file server. Re-run
build_blog.py after adding or editing a post under content/blog/.
The repository includes .github/workflows/deploy-to-aws.yml for a simple AWS deployment flow:
- runs on pushes to
mainand on manual dispatch - uses GitHub OIDC to assume an AWS deployment role
- applies Terraform first when
.tffiles are present - syncs
www/'s contents to S3 - optionally invalidates CloudFront when a distribution ID is configured
Configure these GitHub repository variables before running the workflow:
AWS_REGIONAWS_DEPLOY_ROLE_ARNS3_BUCKET_NAME
Optional variables:
TERRAFORM_WORKING_DIRECTORYCLOUDFRONT_DISTRIBUTION_ID