#!/usr/bin/env bash # Publish a report directory to git-pages apex index-site via Traefik (BasicAuth). # Public URL: https://{PAGES_HOST}/{owner}/{repo}/reports/{sha8}/index.html set -euo pipefail REPORT_DIR="${1:-}" PAGES_HOST="${PAGES_HOST:-}" GIT_PAGES_PUBLISH_URL="${GIT_PAGES_PUBLISH_URL:-https://pages.helm-dev.keskikuja.site}" GIT_PAGES_PUBLISH_TOKEN="${GIT_PAGES_PUBLISH_TOKEN:-}" GIT_PAGES_PUBLISH_USER="${GIT_PAGES_PUBLISH_USER:-publish}" REPO_SLUG="${GITHUB_REPOSITORY:-}" [ -n "$REPORT_DIR" ] || { echo "ERROR: report directory argument required" >&2; exit 1; } [ -d "$REPORT_DIR" ] || { echo "ERROR: not a directory: $REPORT_DIR" >&2; exit 1; } [ -n "$PAGES_HOST" ] || { echo "ERROR: PAGES_HOST is not set" >&2; exit 1; } [ -n "$GIT_PAGES_PUBLISH_TOKEN" ] || { echo "ERROR: GIT_PAGES_PUBLISH_TOKEN is not set" >&2; exit 1; } [ -n "$REPO_SLUG" ] || { echo "ERROR: GITHUB_REPOSITORY is not set" >&2; exit 1; } [ -n "${GITHUB_SHA:-}" ] || { echo "ERROR: GITHUB_SHA is not set" >&2; exit 1; } OWNER="${REPO_SLUG%%/*}" REPO="${REPO_SLUG##*/}" SHA8="${GITHUB_SHA:0:8}" REPORT_BASE="https://${PAGES_HOST}/${OWNER}/${REPO}/reports/${SHA8}" PUBLISH_BASE="${GIT_PAGES_PUBLISH_URL%/}" PUBLISH_SITE_URL="${PUBLISH_BASE}/" WORK=$(mktemp -d) TAR=$(mktemp) trap 'rm -rf "$WORK" "$TAR"' EXIT mkdir -p "$WORK/${OWNER}/${REPO}/reports/${SHA8}" cp -a "$REPORT_DIR/." "$WORK/${OWNER}/${REPO}/reports/${SHA8}/" cat > "$WORK/${OWNER}/${REPO}/reports/${SHA8}/.meta" <&2 cat /tmp/git-pages-publish-response.txt >&2 exit 1 ;; esac echo "$REPORT_BASE"