From 58ff8960cd32e0ad9765315e6500fb8e4e43575d Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Tue, 14 May 2024 14:22:58 -0700 Subject: [PATCH] doc: add a script to upload the nightly manual manually This is not like, perfect, since it is a manual operation, but we can automate it in the future. rclone is used, since it seems like awscli is not (obviously at least?) able to sync directories such that old things are deleted, and rclone does this thing properly. Fixes: https://git.lix.systems/lix-project/meta/issues/2 Change-Id: Ia6a46d861342a6d29b22f981ba4e35e79f79e60e --- doc/manual/rclone.conf | 8 ++++++++ maintainers/upload_manual.sh | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 doc/manual/rclone.conf create mode 100755 maintainers/upload_manual.sh diff --git a/doc/manual/rclone.conf b/doc/manual/rclone.conf new file mode 100644 index 000000000..c37c12638 --- /dev/null +++ b/doc/manual/rclone.conf @@ -0,0 +1,8 @@ +[lix-docs] +type = s3 +provider = Other +env_auth = true +endpoint = https://s3.lix.systems +location_constraint = garage +region = garage +acl = private diff --git a/maintainers/upload_manual.sh b/maintainers/upload_manual.sh new file mode 100755 index 000000000..f50520490 --- /dev/null +++ b/maintainers/upload_manual.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd "$(dirname -- "$0")/.." + +# This script uploads the Lix manual to the Lix s3 store. +# It expects credentials to be configured like so: +# +# ~/.aws/credentials: +# +# [default] +# aws_access_key_id = SOMEACCESSKEY +# aws_secret_access_key = SOMESECRETKEY +# +# default can also be replaced by some other string if AWS_PROFILE is set in +# environment. +# +# See: https://rclone.org/s3/#authentication +# +# To obtain such a key, log into the garage host and run: +# (obtain GARAGE_RPC_SECRET into environment perhaps by systemctl cat garage) +# garage key create SOME-KEY-NAME +# garage bucket allow --read --write docs --key SOME-KEY-NAME + +if [[ ! -f result-doc/share/doc/nix/manual/index.html ]]; then + echo -e "result-doc does not appear to contain a Lix manual. You can build one with:\n nix build '.#default^*'" >&2 + exit 1 +fi + +# --checksum: https://rclone.org/s3/#avoiding-head-requests-to-read-the-modification-time +# By default rclone uses the modification time to determine if something needs +# syncing. This is actually very bad for our use case, since we have small +# files that have meaningless (Unix epoch) local modification time data. We can +# make it go both 16x faster and more correct by using md5s instead. +rclone \ + --config doc/manual/rclone.conf \ + -vv \ + sync \ + --checksum \ + result-doc/share/doc/nix/manual/ lix-docs:docs/manual/nightly/