Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
6ceaa7a
fix(job-watch): require condition.status === 'True' for Failed detection
claude Jul 10, 2026
3265967
feat(job-watch): log job name, reason and message on Failed detection
claude Jul 10, 2026
ae79d35
fix(job-watch): ignore stale Jobs created before this upgrade started
claude Jul 10, 2026
ec2d12a
fix(job-watch): catch polling errors instead of leaking to unhandledR…
claude Jul 10, 2026
8df31b0
fix(job-watch): stop treating kubectl exit code 1 as success
claude Jul 10, 2026
173f751
docs(job-watch): document why status.failed/succeeded counters aren't…
claude Jul 10, 2026
b3f81c5
fix(job-watch): emit SIGTERM only once per polling tick
claude Jul 10, 2026
3796cc3
test(ci): add CI coverage for the Failed-Job detection path
claude Jul 10, 2026
9f3fb10
refactor(job-watch): extract typed, pure decision functions for unit …
claude Jul 10, 2026
50c97dc
test: add unit tests for Job-failed detection and exit-code handling
claude Jul 10, 2026
a3110a4
[feat] refactor repo structure, upgrade dependencies, and refine job …
wirwolf Jul 14, 2026
835d9b8
[chore] upgrade upload-artifact action to v4 in CI workflow
wirwolf Jul 14, 2026
07c23e7
[chore] upgrade dependencies and replace "pkg" with scoped "@yao-pkg/…
wirwolf Jul 14, 2026
bbbf573
[chore] update download-artifact action to v4 in CI workflow
wirwolf Jul 14, 2026
c62f0a0
[fix] correct exit code in job-failed test case
wirwolf Jul 14, 2026
76c6cd0
[fix] refine job-failed test case logic for accurate detection
wirwolf Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 0 additions & 103 deletions .docker/node14-base/Dockerfile

This file was deleted.

40 changes: 0 additions & 40 deletions .docker/node14-base/docker-entrypoint.sh

This file was deleted.

27 changes: 0 additions & 27 deletions .docker/node14-yarn/Dockerfile

This file was deleted.

84 changes: 84 additions & 0 deletions .docker/node24-base/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
FROM debian:bullseye-slim

ENV NODE_VERSION=24.18.0

RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \
&& case "${dpkgArch##*-}" in \
amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; \
ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; \
s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';; \
arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; \
armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';; \
*) echo "unsupported architecture"; exit 1 ;; \
esac \
&& set -ex \
# libatomic1 for arm
&& apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
# use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
&& export GNUPGHOME="$(mktemp -d)" \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& for key in \
5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 \
DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
CC68F5A3106FF448322E48ED27F5E38D5B0A215F \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \
C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
108F52B48DB57BB0CC439B2997B01419BD92F80A \
A363A499291CBBC940DD62E41F10027AF002F8B0 \
; do \
{ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || \
{ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& gpgconf --kill all \
&& rm -rf "$GNUPGHOME" \
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
# Remove unused OpenSSL headers to save ~34MB. See this NodeJS issue: https://github.com/nodejs/node/issues/46451
&& find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; \
&& apt-mark auto '.*' > /dev/null \
&& find /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -r apt-mark manual \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
# smoke tests
&& node --version \
&& npm --version \
&& rm -rf /tmp/*

###
### Ags
###
ARG DOCKER_UID=1000
ARG DOCKER_GID=1000


###
### User/Group
###
RUN set -eux \
&& groupadd -g ${DOCKER_GID} -r app \
&& useradd -u ${DOCKER_UID} -m -s /bin/bash -g app app


# Must set this value for the bash shell to source
# the '/etc/bashrc' file.
# See: https://stackoverflow.com/q/29021704
ENV BASH_ENV /etc/bashrc
COPY bashrc /etc/bashrc

COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN mkdir /docker-entrypoint.d
RUN chmod +x /docker-entrypoint.sh

ENTRYPOINT ["/docker-entrypoint.sh"]
File renamed without changes.
31 changes: 31 additions & 0 deletions .docker/node24-base/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
set -euo pipefail

[[ ${DOCKER_DEBUG:-} == "true" ]] && set -x

case "${1:-}" in
bash|sh|/bin/bash|/bin/sh)
exec "$@"
;;
esac

CONFIG_DIR="/docker-entrypoint.d"

if [[ -d "${CONFIG_DIR}" ]]; then
while IFS= read -r f; do
echo "[Entrypoint] running $f"
# shellcheck disable=SC1090
. "$f"
done < <(find "${CONFIG_DIR}" -name '*.sh' -type f | sort -u)
fi

echo
echo '[Entrypoint] Init process done. Ready for the start-up.'
echo

if [[ $# -eq 0 ]]; then
echo "[Entrypoint] ERROR: no command provided"
exit 1
fi

exec "$@"
46 changes: 46 additions & 0 deletions .docker/node24-yarn/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
ARG DOCKER_SERVER_HOST
ARG DOCKER_PROJECT_PATH
ARG DOCKER_NODE_VERSION
ARG DOCKER_IMAGE_VERSION=master

FROM ${DOCKER_SERVER_HOST}/${DOCKER_PROJECT_PATH}/node${DOCKER_NODE_VERSION}-base:${DOCKER_IMAGE_VERSION} as code

ENV YARN_VERSION=1.22.22

RUN set -ex \
&& savedAptMark="$(apt-mark showmanual)" \
&& apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
# use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
&& export GNUPGHOME="$(mktemp -d)" \
&& for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
{ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || \
{ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; \
done \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& gpgconf --kill all \
&& rm -rf "$GNUPGHOME" \
&& mkdir -p /opt \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& apt-mark auto '.*' > /dev/null \
&& { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } \
&& find /usr/local -type f -executable -exec ldd '{}' ';' \
| awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \
| sort -u \
| xargs -r dpkg-query --search \
| cut -d: -f1 \
| sort -u \
| xargs -r apt-mark manual \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
# smoke test
&& yarn --version \
&& rm -rf /tmp/* \
# smoke test
&& yarn --version
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Common variables
DOCKER_SERVER_HOST=docker.local
DOCKER_PROJECT_PATH=someblackmagic/helm-assistant
DOCKER_NODE_VERSION=14
DOCKER_NODE_VERSION=24
DOCKER_IMAGE_VERSION=master

HELM_BIN_PATH=helm
Expand Down
18 changes: 14 additions & 4 deletions .github/workflows/npm-build-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,25 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Use Node.js 16.x
- name: Use Node.js 24.x
uses: actions/setup-node@v3
with:
node-version: '16.x'
node-version: '24.x'

- name: Install dependencies
run: yarn

- name: Run lint code
run: yarn run lint

- name: Run unit tests
run: yarn run test

- name: Compile application to binary
run: yarn run build

- name: Archive binary
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: helm-assistant-linux-amd64
path: helm-assistant
Expand Down Expand Up @@ -57,7 +60,7 @@ jobs:



- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: helm-assistant-linux-amd64
path: .
Expand All @@ -81,3 +84,10 @@ jobs:
export HELM_ASSISTANT_BIN_CMD="./helm-assistant"
export TESTS_PWD=$(pwd)/tests/
bash tests/deploy_job.sh

- name: Run test -> deploy_job_failed
run: |
chmod +x helm-assistant
export HELM_ASSISTANT_BIN_CMD="./helm-assistant"
export TESTS_PWD=$(pwd)/tests/
bash tests/deploy_job_failed.sh
Loading
Loading