Skip to content

Commit 75a7620

Browse files
committed
ci: improve publish & manifest build
1 parent ab99014 commit 75a7620

3 files changed

Lines changed: 44 additions & 22 deletions

File tree

.github/workflows/publish.yml

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,6 @@ jobs:
7171
CHART_VERSION=${{ steps.meta.outputs.chart_version }}
7272
helm push dist/betterstack-operator-${CHART_VERSION}.tgz oci://ghcr.io/${{ github.repository_owner }}/betterstack-operator/helm
7373
74-
- name: Push Helm chart latest tag
75-
run: |
76-
CHART_VERSION=${{ steps.meta.outputs.chart_version }}
77-
TMP_DIR=$(mktemp -d)
78-
tar -xzf dist/betterstack-operator-${CHART_VERSION}.tgz -C "$TMP_DIR"
79-
helm chart save "$TMP_DIR/betterstack-operator" ghcr.io/${{ github.repository_owner }}/betterstack-operator/helm/betterstack-operator:latest
80-
helm chart push ghcr.io/${{ github.repository_owner }}/betterstack-operator/helm/betterstack-operator:latest
81-
helm chart remove ghcr.io/${{ github.repository_owner }}/betterstack-operator/helm/betterstack-operator:latest
82-
rm -rf "$TMP_DIR"
83-
8474
- name: Set up kustomize
8575
uses: imranismail/setup-kustomize@v1
8676
with:
@@ -90,17 +80,7 @@ jobs:
9080
env:
9181
VERSION: ${{ steps.meta.outputs.version }}
9282
IMAGE: ${{ steps.meta.outputs.image }}
93-
run: |
94-
set -euo pipefail
95-
TMP_DIR=$(mktemp -d)
96-
cp -r config/manager "$TMP_DIR/manager"
97-
pushd "$TMP_DIR/manager" >/dev/null
98-
kustomize edit set image ghcr.io/loks0n/betterstack-operator=$IMAGE:$VERSION
99-
kustomize build . > "$GITHUB_WORKSPACE/dist/manager.yaml"
100-
popd >/dev/null
101-
rm -rf "$TMP_DIR"
102-
cp config/crd/bases/monitoring.betterstack.io_betterstackmonitors.yaml dist/
103-
tar czf dist/betterstack-operator-${VERSION}.tar.gz -C dist manager.yaml monitoring.betterstack.io_betterstackmonitors.yaml
83+
run: scripts/build-manifests.sh
10484

10585
- name: Upload release artifact
10686
uses: actions/upload-artifact@v4

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ The Better Stack Operator keeps Better Stack monitors in sync with Kubernetes by
1111

1212
## Install with Helm
1313

14-
Published charts live at `oci://ghcr.io/loks0n/betterstack-operator/helm/betterstack-operator`.
14+
Published charts live at `oci://ghcr.io/loks0n/betterstack-operator/helm/betterstack-operator` (latest release `0.0.2`).
1515

1616
### 1. Provide Better Stack credentials
1717

@@ -22,6 +22,7 @@ Choose how the controller should access the API token:
2222
```bash
2323
helm upgrade --install betterstack-operator \
2424
oci://ghcr.io/loks0n/betterstack-operator/helm/betterstack-operator \
25+
--version 0.0.2 \
2526
--namespace betterstack-operator --create-namespace \
2627
--set credentials.secret.create=true \
2728
--set-file credentials.secret.value=./betterstack-token.txt \
@@ -39,6 +40,7 @@ Choose how the controller should access the API token:
3940

4041
helm upgrade --install betterstack-operator \
4142
oci://ghcr.io/loks0n/betterstack-operator/helm/betterstack-operator \
43+
--version 0.0.2 \
4244
--namespace betterstack-operator --create-namespace \
4345
--set credentials.existingSecret=betterstack-operator-credentials \
4446
--wait

scripts/build-manifests.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
set -euo pipefail
4+
5+
: "${VERSION:?VERSION environment variable must be set}"
6+
: "${IMAGE:?IMAGE environment variable must be set}"
7+
IMAGE_NAME=${IMAGE_NAME:-ghcr.io/loks0n/betterstack-operator}
8+
9+
DIST_DIR=${DIST_DIR:-dist}
10+
MANAGER_DIR="config/manager"
11+
CRD_DIR=${CRD_DIR:-config/crd/bases}
12+
13+
mkdir -p "${DIST_DIR}"
14+
DIST_DIR=$(cd "${DIST_DIR}" && pwd)
15+
16+
MANAGER_OUTPUT="${DIST_DIR}/manager.yaml"
17+
ARCHIVE_OUTPUT="${DIST_DIR}/betterstack-operator-${VERSION}.tar.gz"
18+
19+
TMP_DIR=$(mktemp -d)
20+
trap 'rm -rf "${TMP_DIR}"' EXIT
21+
22+
cp -r "${MANAGER_DIR}" "${TMP_DIR}/manager"
23+
(
24+
cd "${TMP_DIR}/manager"
25+
kustomize edit set image "${IMAGE_NAME}=${IMAGE}:${VERSION}"
26+
kustomize build . > "${MANAGER_OUTPUT}"
27+
)
28+
29+
CRD_OUTPUT_BASENAMES=()
30+
if [ -d "${CRD_DIR}" ]; then
31+
while IFS= read -r -d '' crd_file; do
32+
crd_dest="${DIST_DIR}/$(basename "${crd_file}")"
33+
cp "${crd_file}" "${crd_dest}"
34+
CRD_OUTPUT_BASENAMES+=("$(basename "${crd_dest}")")
35+
done < <(find "${CRD_DIR}" -maxdepth 1 -type f \( -name '*.yaml' -o -name '*.yml' \) -print0 | sort -z)
36+
fi
37+
38+
tar czf "${ARCHIVE_OUTPUT}" -C "${DIST_DIR}" \
39+
"$(basename "${MANAGER_OUTPUT}")" \
40+
"${CRD_OUTPUT_BASENAMES[@]}"

0 commit comments

Comments
 (0)