Skip to content

Commit 2851838

Browse files
authored
[patch] Forward package publish lock settings (#18)
1 parent dbd77ce commit 2851838

3 files changed

Lines changed: 70 additions & 0 deletions

File tree

.github/workflows/package-lock-test.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@ name: package-lock-test
33
on:
44
pull_request:
55
paths:
6+
- "Makefile"
67
- "scripts/publish-package-repo.sh"
78
- "scripts/test-publish-cache-control.sh"
9+
- "scripts/test-make-lock-env.sh"
810
- "scripts/test-publish-lock.sh"
911
- ".github/workflows/package-lock-test.yaml"
1012
push:
1113
branches:
1214
- main
1315
paths:
16+
- "Makefile"
1417
- "scripts/publish-package-repo.sh"
1518
- "scripts/test-publish-cache-control.sh"
19+
- "scripts/test-make-lock-env.sh"
1620
- "scripts/test-publish-lock.sh"
1721
- ".github/workflows/package-lock-test.yaml"
1822

@@ -35,10 +39,14 @@ jobs:
3539
bash -n
3640
scripts/publish-package-repo.sh
3741
scripts/test-publish-cache-control.sh
42+
scripts/test-make-lock-env.sh
3843
scripts/test-publish-lock.sh
3944
4045
- name: Test cache-control upload contract
4146
run: bash scripts/test-publish-cache-control.sh
4247

4348
- name: Test lock handoff race
4449
run: bash scripts/test-publish-lock.sh
50+
51+
- name: Test lock configuration forwarding
52+
run: bash scripts/test-make-lock-env.sh

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ APTLY_ORIGIN ?= libops
2323
RPM_REPOSITORY_PATH ?= rpm
2424
CDN_URL_MAP ?= packages-url-map
2525
CDN_INVALIDATE_CACHE ?= true
26+
LOCK_TIMEOUT_SECONDS ?= 600
27+
LOCK_STALE_SECONDS ?= 600
28+
LOCK_POLL_SECONDS ?= 5
29+
LOCK_HEARTBEAT_SECONDS ?= 60
2630
PACKAGE_REPO_STAGE_DIR ?= $(ROOT_DIR)/.out/$(PACKAGE_NAME)/$(RELEASE_VERSION)
2731
PACKAGE_TOOLS_IMAGE ?= ghcr.io/libops/terraform-linux-packages:main
2832
HOST_GCLOUD_CONFIG ?= $(if $(CLOUDSDK_CONFIG),$(CLOUDSDK_CONFIG),$(HOME)/.config/gcloud)
@@ -146,6 +150,10 @@ publish-package-repo:
146150
-e RPM_REPOSITORY_PATH="$(RPM_REPOSITORY_PATH)" \
147151
-e CDN_URL_MAP="$(CDN_URL_MAP)" \
148152
-e CDN_INVALIDATE_CACHE="$(CDN_INVALIDATE_CACHE)" \
153+
-e LOCK_TIMEOUT_SECONDS="$(LOCK_TIMEOUT_SECONDS)" \
154+
-e LOCK_STALE_SECONDS="$(LOCK_STALE_SECONDS)" \
155+
-e LOCK_POLL_SECONDS="$(LOCK_POLL_SECONDS)" \
156+
-e LOCK_HEARTBEAT_SECONDS="$(LOCK_HEARTBEAT_SECONDS)" \
149157
-e PACKAGE_REPO_STAGE_DIR="$(PACKAGE_REPO_STAGE_DIR)" \
150158
"$(PACKAGE_TOOLS_IMAGE)" \
151159
/bin/bash /workspace/terraform-linux-packages/scripts/publish-package-repo.sh

scripts/test-make-lock-env.sh

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
repo_root="$(cd "$(dirname "$0")/.." && pwd)"
6+
tmp="$(mktemp -d "${TMPDIR:-/tmp}/package-lock-env-test.XXXXXX")"
7+
trap 'rm -rf "$tmp"' EXIT
8+
9+
mkdir -p "$tmp/bin" "$tmp/dist" "$tmp/gcloud" "$tmp/stage"
10+
11+
cat >"$tmp/bin/docker" <<'MOCK'
12+
#!/usr/bin/env bash
13+
set -euo pipefail
14+
15+
if [ "${1:-}" = "image" ] && [ "${2:-}" = "inspect" ]; then
16+
exit 0
17+
fi
18+
19+
if [ "${1:-}" != "run" ]; then
20+
printf 'Unexpected docker invocation: %s\n' "$*" >&2
21+
exit 1
22+
fi
23+
24+
printf '%s\n' "$@" >"${MOCK_DOCKER_ARGS:?}"
25+
MOCK
26+
chmod +x "$tmp/bin/docker"
27+
28+
PATH="$tmp/bin:$PATH" \
29+
MOCK_DOCKER_ARGS="$tmp/docker-args" \
30+
make --no-print-directory -C "$repo_root" publish-package-repo \
31+
PACKAGE_NAME=sitectl-test \
32+
RELEASE_VERSION=v1.2.3 \
33+
GCLOUD_PROJECT=test-project \
34+
GCS_BUCKET=test-bucket \
35+
APTLY_GPG_KEY_ID=test-key \
36+
DIST_DIR="$tmp/dist" \
37+
PACKAGE_REPO_STAGE_DIR="$tmp/stage" \
38+
HOST_GCLOUD_CONFIG="$tmp/gcloud" \
39+
PACKAGE_TOOLS_IMAGE=test-image \
40+
LOCK_TIMEOUT_SECONDS=7200 \
41+
LOCK_STALE_SECONDS=900 \
42+
LOCK_POLL_SECONDS=7 \
43+
LOCK_HEARTBEAT_SECONDS=30
44+
45+
for expected in \
46+
LOCK_TIMEOUT_SECONDS=7200 \
47+
LOCK_STALE_SECONDS=900 \
48+
LOCK_POLL_SECONDS=7 \
49+
LOCK_HEARTBEAT_SECONDS=30; do
50+
if ! grep -Fxq "$expected" "$tmp/docker-args"; then
51+
printf 'Docker invocation did not forward %s\n' "$expected" >&2
52+
exit 1
53+
fi
54+
done

0 commit comments

Comments
 (0)