Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions bin/update-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,12 @@ fi
log "cloning update source"
git clone --quiet --single-branch --branch "$BRANCH" "$REPO_URL" "$CHECKOUT_DIR"

# Force-refresh the branch tip to defeat transport-level caching (GitHub CDN,
# HTTP proxies, stale local mirrors). Without this, `git clone` can serve a
# ref advertisement that is minutes-to-days behind the true remote HEAD.
git -C "$CHECKOUT_DIR" fetch --quiet --force --no-tags origin "$BRANCH"
git -C "$CHECKOUT_DIR" reset --quiet --hard "origin/$BRANCH"

if [ -n "$BAUDBOT_UPDATE_REF" ]; then
log "checking out ref: $BAUDBOT_UPDATE_REF"
git -C "$CHECKOUT_DIR" fetch --quiet origin "$BAUDBOT_UPDATE_REF"
Expand Down
32 changes: 32 additions & 0 deletions bin/update-release.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -214,13 +214,45 @@ test_release_root_overrides_stale_source_path_env() {
)
}

test_update_picks_up_latest_commit() {
(
set -euo pipefail
local tmp repo release_root sha1 sha2 current_sha

tmp="$(mktemp -d /tmp/baudbot-update-test.XXXXXX)"
trap 'rm -rf "$tmp"' EXIT

repo="$tmp/repo"
release_root="$tmp/opt/baudbot"

make_repo "$repo"
sha1="$(git -C "$repo" rev-parse HEAD)"

run_update "$repo" "$release_root" "test -f hello.txt"

current_sha="$(readlink -f "$release_root/current")"
[ "$current_sha" = "$release_root/releases/$sha1" ]

# Push a new commit and update again — must land on the new SHA.
new_commit "$repo" "latest-tip"
sha2="$(git -C "$repo" rev-parse HEAD)"
[ "$sha1" != "$sha2" ]

run_update "$repo" "$release_root" "test -f hello.txt"

current_sha="$(readlink -f "$release_root/current")"
[ "$current_sha" = "$release_root/releases/$sha2" ]
)
}

echo "=== update-release tests ==="
echo ""

run_test "publishes git-free release snapshot" test_publish_git_free_release
run_test "preflight failure keeps current release" test_preflight_failure_keeps_current
run_test "deploy failure keeps current release" test_deploy_failure_keeps_current
run_test "release root overrides stale source env" test_release_root_overrides_stale_source_path_env
run_test "update picks up latest commit" test_update_picks_up_latest_commit

echo ""
echo "=== $PASSED/$TOTAL passed, $FAILED failed ==="
Expand Down
Loading