Skip to content

Commit 59cd1e3

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 <[email protected]>
1 parent 54e9d41 commit 59cd1e3

File tree

5 files changed

+65
-6
lines changed

5 files changed

+65
-6
lines changed

.github/workflows/ci.yml

Lines changed: 8 additions & 1 deletion
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,7 +34,10 @@ 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'
35-
FORCE_ROOTLESS_INSTALL=1 ./rootless-install.sh
41+
make build/test/rootless-install.sh
42+
FORCE_ROOTLESS_INSTALL=1 ./build/test/rootless-install.sh
3643

.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: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,44 @@ 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))' > $@
37+
chmod +x $@
2338

2439
build/%/rootless-install.sh: rootless-install.sh
2540
mkdir -p $(@D)
2641
sed 's/DEFAULT_CHANNEL_VALUE="stable"/DEFAULT_CHANNEL_VALUE="$*"/' $< | \
27-
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
42+
LOAD_SCRIPT_COMMIT_SHA='$(shell git rev-parse HEAD)' \
43+
LOAD_SCRIPT_STABLE_LATEST='$(STABLE_LATEST)' \
44+
LOAD_SCRIPT_TEST_LATEST='$(TEST_LATEST)' \
45+
envsubst '$(addprefix $$,$(ENVSUBST_VARS))' > $@
46+
chmod +x $@
2847

2948
.PHONY: shellcheck
3049
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: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
last_release_tag() {
12+
local field="$1"
13+
gh -R moby/moby release list -O desc --json tagName,isLatest,isPrerelease \
14+
-q ".[] | select(.${field}) | \
15+
.tagName | \
16+
sub(\"^docker-\"; \"\") | \
17+
select(startswith(\"v\") == true) | \
18+
sub(\"^v\"; \"\")" |
19+
head -n1
20+
}
21+
22+
case "$channel" in
23+
stable) last_release_tag 'isLatest' ;;
24+
test) last_release_tag 'isPrerelease' ;;
25+
*)
26+
echo "Error: Invalid channel '$channel'. Use 'stable' or 'test'." >&2
27+
exit 1
28+
;;
29+
esac

0 commit comments

Comments
 (0)