Skip to content

Commit 9fc4c29

Browse files
committed
refactoring install/update
- add support for hostedtoolcache (env var RUNNER_TOOL_CACHE) - fix update by forcing installation - improve asset generation Signed-off-by: Markus Blaschke <[email protected]>
1 parent b72d7d3 commit 9fc4c29

File tree

9 files changed

+226
-47
lines changed

9 files changed

+226
-47
lines changed

.github/workflows/release-assets.yaml

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,16 @@ permissions:
1616
packages: write
1717

1818
jobs:
19-
executables:
20-
name: "assets/executables"
19+
build:
20+
name: "${{ matrix.task }}"
2121
runs-on: ubuntu-latest
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
include:
26+
- task: release-assets-linux
27+
- task: release-assets-darwin
28+
- task: release-assets-windows
2229
steps:
2330
- uses: actions/checkout@v5
2431

@@ -28,17 +35,9 @@ jobs:
2835
- name: Setup go
2936
uses: ./.github/actions/setup-go
3037

31-
- name: Build linux
38+
- name: Build
3239
run: |
33-
make release-assets-linux
34-
35-
- name: Build darwin
36-
run: |
37-
make release-assets-darwin
38-
39-
- name: Build windows
40-
run: |
41-
make release-assets-windows
40+
make "${{ matrix.task }}"
4241
4342
- name: Upload assets to release
4443
uses: svenstaro/upload-release-action@v2
@@ -48,10 +47,12 @@ jobs:
4847
tag: ${{ github.ref }}
4948
overwrite: true
5049
file_glob: true
50+
promote: false
5151

5252
plugins:
5353
name: "assets/plugins"
5454
runs-on: ubuntu-latest
55+
needs: [build]
5556
steps:
5657
- uses: actions/checkout@v5
5758

@@ -108,3 +109,5 @@ jobs:
108109
tag: ${{ github.ref }}
109110
overwrite: true
110111
file_glob: true
112+
promote: true
113+
make_latest: true

install.sh

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
set -e
33
set -o pipefail
44

5+
if [[ -z "$HELM_PLUGIN_DIR" ]]; then
6+
echo "ERROR: env var HELM_PLUGIN_DIR not set (script must be called by helm)"
7+
exit 1
8+
fi
9+
10+
FORCE=0
11+
if [[ "$1" == "force" ]]; then
12+
FORCE=1
13+
fi
14+
515
HELM_AZURE_TPL_VERSION=$(sed -n -e 's/version:[ "]*\([^"]*\).*/\1/p' "${HELM_PLUGIN_DIR}/plugin.yaml")
616

717
HOST_OS=$(uname -s | tr '[:upper:]' '[:lower:]')
@@ -35,16 +45,50 @@ PLUGIN_DOWNLOAD_FILE="helm-azure-tpl.${HOST_OS}.${HOST_ARCH}${FILE_SUFFIX}"
3545
PLUGIN_DOWNLOAD_URL="https://github.com/webdevops/helm-azure-tpl/releases/download/${HELM_AZURE_TPL_VERSION}/${PLUGIN_DOWNLOAD_FILE}"
3646
PLUGIN_TARGET_PATH="${HELM_PLUGIN_DIR}/helm-azure-tpl${FILE_SUFFIX}"
3747

38-
echo "starting download (via curl)"
48+
echo "installing helm-azure-tpl executable"
3949
echo " platform: ${HOST_OS}/${HOST_ARCH}"
4050
echo " url: $PLUGIN_DOWNLOAD_URL"
4151
echo " target: $PLUGIN_TARGET_PATH"
4252

43-
rm -f -- "$PLUGIN_TARGET_PATH"
44-
curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH"
45-
if [ "$?" -ne 0 ]; then
46-
>&2 echo "[ERROR] failed to download plugin executable"
47-
exit 1
53+
## detect hostedtoolcache
54+
PLUGIN_CACHE_DIR=""
55+
PLUGIN_CACHE_FILE=""
56+
if [[ -n "$RUNNER_TOOL_CACHE" ]]; then
57+
PLUGIN_CACHE_DIR="${RUNNER_TOOL_CACHE}/helm-azure-tpl/${HELM_AZURE_TPL_VERSION}"
58+
PLUGIN_CACHE_FILE="${PLUGIN_CACHE_DIR}/${PLUGIN_DOWNLOAD_FILE}"
59+
echo " cache: $PLUGIN_CACHE_FILE"
60+
fi
61+
62+
## force (cleanup/upgrade)
63+
if [[ "$FORCE" -eq 1 && -f "$PLUGIN_TARGET_PATH" ]]; then
64+
echo "removing old executable (update/force mode)"
65+
rm -f -- "$PLUGIN_TARGET_PATH"
66+
fi
67+
68+
## get from hostedtoolcache
69+
if [[ -n "$PLUGIN_CACHE_FILE" && -e "$PLUGIN_CACHE_FILE" ]]; then
70+
echo "fetching from RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)"
71+
cp -- "$PLUGIN_CACHE_FILE" "$PLUGIN_TARGET_PATH"
72+
chmod +x "$PLUGIN_TARGET_PATH"
73+
fi
74+
75+
## download
76+
if [[ ! -e "$PLUGIN_TARGET_PATH" ]]; then
77+
echo "starting download (using curl)"
78+
curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH"
79+
if [ "$?" -ne 0 ]; then
80+
>&2 echo "[ERROR] failed to download plugin executable"
81+
exit 1
82+
fi
83+
84+
## store to hostedtoolcache
85+
if [[ -n "$PLUGIN_CACHE_FILE" ]]; then
86+
echo "storing to RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)"
87+
mkdir -p -- "${PLUGIN_CACHE_DIR}"
88+
cp -a -- "$PLUGIN_TARGET_PATH" "${PLUGIN_CACHE_FILE}"
89+
fi
90+
else
91+
echo "executable already exists, skipping download"
4892
fi
4993

5094
if [[ ! -f "$PLUGIN_TARGET_PATH" ]]; then
@@ -54,4 +98,4 @@ fi
5498

5599
chmod +x "$PLUGIN_TARGET_PATH"
56100

57-
echo "successfully downloaded executable"
101+
echo "successfully installed executable"

plugin.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ platformCommand:
3232
command: "$HELM_PLUGIN_DIR/helm-azure-tpl.exe"
3333
hooks:
3434
install: "bash $HELM_PLUGIN_DIR/install.sh"
35-
update: "bash $HELM_PLUGIN_DIR/install.sh"
35+
update: "bash $HELM_PLUGIN_DIR/install.sh force"
3636
downloaders:
3737
- command: "plugin.sh"
3838
protocols:

plugins/azure-tpl-cli/install.sh

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
set -e
33
set -o pipefail
44

5+
if [[ -z "$HELM_PLUGIN_DIR" ]]; then
6+
echo "ERROR: env var HELM_PLUGIN_DIR not set (script must be called by helm)"
7+
exit 1
8+
fi
9+
10+
FORCE=0
11+
if [[ "$1" == "force" ]]; then
12+
FORCE=1
13+
fi
14+
515
HELM_AZURE_TPL_VERSION=$(sed -n -e 's/version:[ "]*\([^"]*\).*/\1/p' "${HELM_PLUGIN_DIR}/plugin.yaml")
616

717
HOST_OS=$(uname -s | tr '[:upper:]' '[:lower:]')
@@ -35,16 +45,50 @@ PLUGIN_DOWNLOAD_FILE="helm-azure-tpl.${HOST_OS}.${HOST_ARCH}${FILE_SUFFIX}"
3545
PLUGIN_DOWNLOAD_URL="https://github.com/webdevops/helm-azure-tpl/releases/download/${HELM_AZURE_TPL_VERSION}/${PLUGIN_DOWNLOAD_FILE}"
3646
PLUGIN_TARGET_PATH="${HELM_PLUGIN_DIR}/helm-azure-tpl${FILE_SUFFIX}"
3747

38-
echo "starting download (via curl)"
48+
echo "installing helm-azure-tpl executable"
3949
echo " platform: ${HOST_OS}/${HOST_ARCH}"
4050
echo " url: $PLUGIN_DOWNLOAD_URL"
4151
echo " target: $PLUGIN_TARGET_PATH"
4252

43-
rm -f -- "$PLUGIN_TARGET_PATH"
44-
curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH"
45-
if [ "$?" -ne 0 ]; then
46-
>&2 echo "[ERROR] failed to download plugin executable"
47-
exit 1
53+
## detect hostedtoolcache
54+
PLUGIN_CACHE_DIR=""
55+
PLUGIN_CACHE_FILE=""
56+
if [[ -n "$RUNNER_TOOL_CACHE" ]]; then
57+
PLUGIN_CACHE_DIR="${RUNNER_TOOL_CACHE}/helm-azure-tpl/${HELM_AZURE_TPL_VERSION}"
58+
PLUGIN_CACHE_FILE="${PLUGIN_CACHE_DIR}/${PLUGIN_DOWNLOAD_FILE}"
59+
echo " cache: $PLUGIN_CACHE_FILE"
60+
fi
61+
62+
## force (cleanup/upgrade)
63+
if [[ "$FORCE" -eq 1 && -f "$PLUGIN_TARGET_PATH" ]]; then
64+
echo "removing old executable (update/force mode)"
65+
rm -f -- "$PLUGIN_TARGET_PATH"
66+
fi
67+
68+
## get from hostedtoolcache
69+
if [[ -n "$PLUGIN_CACHE_FILE" && -e "$PLUGIN_CACHE_FILE" ]]; then
70+
echo "fetching from RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)"
71+
cp -- "$PLUGIN_CACHE_FILE" "$PLUGIN_TARGET_PATH"
72+
chmod +x "$PLUGIN_TARGET_PATH"
73+
fi
74+
75+
## download
76+
if [[ ! -e "$PLUGIN_TARGET_PATH" ]]; then
77+
echo "starting download (using curl)"
78+
curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH"
79+
if [ "$?" -ne 0 ]; then
80+
>&2 echo "[ERROR] failed to download plugin executable"
81+
exit 1
82+
fi
83+
84+
## store to hostedtoolcache
85+
if [[ -n "$PLUGIN_CACHE_FILE" ]]; then
86+
echo "storing to RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)"
87+
mkdir -p -- "${PLUGIN_CACHE_DIR}"
88+
cp -a -- "$PLUGIN_TARGET_PATH" "${PLUGIN_CACHE_FILE}"
89+
fi
90+
else
91+
echo "executable already exists, skipping download"
4892
fi
4993

5094
if [[ ! -f "$PLUGIN_TARGET_PATH" ]]; then
@@ -54,4 +98,4 @@ fi
5498

5599
chmod +x "$PLUGIN_TARGET_PATH"
56100

57-
echo "successfully downloaded executable"
101+
echo "successfully installed executable"

plugins/azure-tpl-cli/plugin.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ runtimeConfig:
2525
command: "$HELM_PLUGIN_DIR/install.sh"
2626
update:
2727
- os: linux
28-
command: "$HELM_PLUGIN_DIR/install.sh"
28+
command: "$HELM_PLUGIN_DIR/install.sh force"
2929
- os: darwin
30-
command: "$HELM_PLUGIN_DIR/install.sh"
30+
command: "$HELM_PLUGIN_DIR/install.sh force"

plugins/azure-tpl-getter/install.sh

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
set -e
33
set -o pipefail
44

5+
if [[ -z "$HELM_PLUGIN_DIR" ]]; then
6+
echo "ERROR: env var HELM_PLUGIN_DIR not set (script must be called by helm)"
7+
exit 1
8+
fi
9+
10+
FORCE=0
11+
if [[ "$1" == "force" ]]; then
12+
FORCE=1
13+
fi
14+
515
HELM_AZURE_TPL_VERSION=$(sed -n -e 's/version:[ "]*\([^"]*\).*/\1/p' "${HELM_PLUGIN_DIR}/plugin.yaml")
616

717
HOST_OS=$(uname -s | tr '[:upper:]' '[:lower:]')
@@ -35,16 +45,50 @@ PLUGIN_DOWNLOAD_FILE="helm-azure-tpl.${HOST_OS}.${HOST_ARCH}${FILE_SUFFIX}"
3545
PLUGIN_DOWNLOAD_URL="https://github.com/webdevops/helm-azure-tpl/releases/download/${HELM_AZURE_TPL_VERSION}/${PLUGIN_DOWNLOAD_FILE}"
3646
PLUGIN_TARGET_PATH="${HELM_PLUGIN_DIR}/helm-azure-tpl${FILE_SUFFIX}"
3747

38-
echo "starting download (via curl)"
48+
echo "installing helm-azure-tpl executable"
3949
echo " platform: ${HOST_OS}/${HOST_ARCH}"
4050
echo " url: $PLUGIN_DOWNLOAD_URL"
4151
echo " target: $PLUGIN_TARGET_PATH"
4252

43-
rm -f -- "$PLUGIN_TARGET_PATH"
44-
curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH"
45-
if [ "$?" -ne 0 ]; then
46-
>&2 echo "[ERROR] failed to download plugin executable"
47-
exit 1
53+
## detect hostedtoolcache
54+
PLUGIN_CACHE_DIR=""
55+
PLUGIN_CACHE_FILE=""
56+
if [[ -n "$RUNNER_TOOL_CACHE" ]]; then
57+
PLUGIN_CACHE_DIR="${RUNNER_TOOL_CACHE}/helm-azure-tpl/${HELM_AZURE_TPL_VERSION}"
58+
PLUGIN_CACHE_FILE="${PLUGIN_CACHE_DIR}/${PLUGIN_DOWNLOAD_FILE}"
59+
echo " cache: $PLUGIN_CACHE_FILE"
60+
fi
61+
62+
## force (cleanup/upgrade)
63+
if [[ "$FORCE" -eq 1 && -f "$PLUGIN_TARGET_PATH" ]]; then
64+
echo "removing old executable (update/force mode)"
65+
rm -f -- "$PLUGIN_TARGET_PATH"
66+
fi
67+
68+
## get from hostedtoolcache
69+
if [[ -n "$PLUGIN_CACHE_FILE" && -e "$PLUGIN_CACHE_FILE" ]]; then
70+
echo "fetching from RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)"
71+
cp -- "$PLUGIN_CACHE_FILE" "$PLUGIN_TARGET_PATH"
72+
chmod +x "$PLUGIN_TARGET_PATH"
73+
fi
74+
75+
## download
76+
if [[ ! -e "$PLUGIN_TARGET_PATH" ]]; then
77+
echo "starting download (using curl)"
78+
curl --fail --location "$PLUGIN_DOWNLOAD_URL" -o "$PLUGIN_TARGET_PATH"
79+
if [ "$?" -ne 0 ]; then
80+
>&2 echo "[ERROR] failed to download plugin executable"
81+
exit 1
82+
fi
83+
84+
## store to hostedtoolcache
85+
if [[ -n "$PLUGIN_CACHE_FILE" ]]; then
86+
echo "storing to RUNNER_TOOL_CACHE ($RUNNER_TOOL_CACHE)"
87+
mkdir -p -- "${PLUGIN_CACHE_DIR}"
88+
cp -a -- "$PLUGIN_TARGET_PATH" "${PLUGIN_CACHE_FILE}"
89+
fi
90+
else
91+
echo "executable already exists, skipping download"
4892
fi
4993

5094
if [[ ! -f "$PLUGIN_TARGET_PATH" ]]; then
@@ -54,4 +98,4 @@ fi
5498

5599
chmod +x "$PLUGIN_TARGET_PATH"
56100

57-
echo "successfully downloaded executable"
101+
echo "successfully installed executable"

plugins/azure-tpl-getter/plugin.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ runtimeConfig:
3131
- command: "$HELM_PLUGIN_DIR/install.sh"
3232
update:
3333
- os: linux
34-
command: "$HELM_PLUGIN_DIR/install.sh"
34+
command: "$HELM_PLUGIN_DIR/install.sh force"
3535
- os: darwin
36-
command: "$HELM_PLUGIN_DIR/install.sh"
37-
- command: "$HELM_PLUGIN_DIR/install.sh"
36+
command: "$HELM_PLUGIN_DIR/install.sh force"
37+
- command: "$HELM_PLUGIN_DIR/install.sh force"

0 commit comments

Comments
 (0)