Skip to content

Commit b3ca513

Browse files
committed
rootless: Automatically populate TEST/STABLE version
When building the final install.sh script - fill the latest versions based on Github releases. Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
1 parent 54e9d41 commit b3ca513

File tree

5 files changed

+57
-5
lines changed

5 files changed

+57
-5
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@ jobs:
1919
steps:
2020
- uses: actions/checkout@v3
2121
- name: Shellcheck
22+
env:
23+
GH_TOKEN: ${{ github.token }}
2224
run: make shellcheck
2325
- name: Check distribution
26+
env:
27+
GH_TOKEN: ${{ github.token }}
2428
run: TEST_IMAGE=${{ matrix.os }} VERSION=${{ matrix.version }} make test
2529

2630
# This is a separate workflow step, because we need to check it outside of container (due to lsmod, iptables checks)
@@ -30,6 +34,8 @@ jobs:
3034
steps:
3135
- uses: actions/checkout@v3
3236
- name: Install rootless
37+
env:
38+
GH_TOKEN: ${{ github.token }}
3339
run: |
3440
sudo sh -c 'echo 0 > /proc/sys/kernel/apparmor_restrict_unprivileged_userns'
3541
FORCE_ROOTLESS_INSTALL=1 ./rootless-install.sh

.github/workflows/diff.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ jobs:
1212
uses: actions/checkout@v4
1313

1414
- name: Diff stable
15+
env:
16+
GH_TOKEN: ${{ github.token }}
1517
run: |
1618
make CHANNEL=stable diff
1719
1820
- name: Diff test
21+
env:
22+
GH_TOKEN: ${{ github.token }}
1923
run: |
2024
make CHANNEL=test diff
2125

Makefile

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,42 @@ VOLUME_MOUNTS=-v "$(CURDIR)":/v
66
SHELLCHECK_EXCLUSIONS=$(addprefix -e, SC1091 SC1117 SC2317 SC2329)
77
SHELLCHECK=docker run --rm $(VOLUME_MOUNTS) -w /v koalaman/shellcheck:stable $(SHELLCHECK_EXCLUSIONS)
88

9-
ENVSUBST_VARS=LOAD_SCRIPT_COMMIT_SHA
9+
ENVSUBST_VARS=LOAD_SCRIPT_COMMIT_SHA LOAD_SCRIPT_STABLE_LATEST LOAD_SCRIPT_TEST_LATEST
1010

1111
# Define the channels we want to build for
1212
CHANNELS=test stable
1313

1414
FILES=build/test/install.sh build/stable/install.sh build/stable/rootless-install.sh
1515

16+
STABLE_LATEST=$(shell ./scripts/get-version.sh stable)
17+
TEST_LATEST=$(shell ./scripts/get-version.sh test)
18+
19+
# Error checking for empty version variables
20+
ifeq ($(STABLE_LATEST),)
21+
$(error STABLE_LATEST is empty)
22+
endif
23+
ifeq ($(TEST_LATEST),)
24+
$(error TEST_LATEST is empty)
25+
endif
26+
1627
.PHONY: build
1728
build: $(FILES)
1829

1930
build/%/install.sh: install.sh
2031
mkdir -p $(@D)
2132
sed 's/DEFAULT_CHANNEL_VALUE="stable"/DEFAULT_CHANNEL_VALUE="$*"/' $< | \
22-
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
33+
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' \
34+
LOAD_SCRIPT_STABLE_LATEST='$(STABLE_LATEST)' \
35+
LOAD_SCRIPT_TEST_LATEST='$(TEST_LATEST)' \
36+
envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
2337

2438
build/%/rootless-install.sh: rootless-install.sh
2539
mkdir -p $(@D)
2640
sed 's/DEFAULT_CHANNEL_VALUE="stable"/DEFAULT_CHANNEL_VALUE="$*"/' $< | \
27-
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
41+
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' \
42+
LOAD_SCRIPT_STABLE_LATEST='$(STABLE_LATEST)' \
43+
LOAD_SCRIPT_TEST_LATEST='$(TEST_LATEST)' \
44+
envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
2845

2946
.PHONY: shellcheck
3047
shellcheck: $(FILES)

rootless-install.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ SCRIPT_COMMIT_SHA="$LOAD_SCRIPT_COMMIT_SHA"
2121
# This script should be run with an unprivileged user and install/setup Docker under $HOME/bin/.
2222

2323
# latest version available in the stable channel.
24-
STABLE_LATEST="28.5.1"
24+
STABLE_LATEST="$LOAD_SCRIPT_STABLE_LATEST"
2525

2626
# latest version available in the test channel.
27-
TEST_LATEST="29.0.0-rc.1"
27+
TEST_LATEST="$LOAD_SCRIPT_TEST_LATEST"
2828

2929
# The channel to install from:
3030
# * test

scripts/get-version.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/bash
2+
set -e
3+
4+
if [ $# -ne 1 ]; then
5+
echo "Usage: $0 <stable|test>" >&2
6+
exit 1
7+
fi
8+
9+
channel="$1"
10+
11+
gh_releases() {
12+
local field="$1"
13+
gh -R moby/moby release list -O desc --json tagName,isLatest,isPrerelease \
14+
-q ".[] | select(.${field}) | .tagName | sub(\"^docker-\"; \"\") | sub(\"^v\"; \"\")" \
15+
| head -n1
16+
}
17+
18+
case "$channel" in
19+
stable) gh_releases 'isLatest' ;;
20+
test) gh_releases 'isPrerelease' ;;
21+
*)
22+
echo "Error: Invalid channel '$channel'. Use 'stable' or 'test'." >&2
23+
exit 1
24+
;;
25+
esac

0 commit comments

Comments
 (0)