From e0cdc3e7c57ffe43b649e825fce80e20bd8c598a Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 29 Aug 2022 22:06:47 +0800 Subject: [PATCH 1/7] Update dockerfile for pr-test --- docker/dockerfile | 30 ++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 31 insertions(+) diff --git a/docker/dockerfile b/docker/dockerfile index a9984351..117c0f12 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -24,6 +24,36 @@ CMD ["node", "server/server.js"] FROM release AS nightly RUN npm run mark-as-nightly +# Build an image for testing pr +FROM louislam/uptime-kuma:base-debian AS pr-test + +WORKDIR /app + +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 + +## Install GitHub CLI +RUN apt update \ + && apt --yes --no-install-recommends install curl \ + && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ + && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ + && apt update \ + && apt install gh -y + +## Empty the directory, because we have to clone the Git repo. +RUN rm -rf ./* && chown node /app + +USER node + +RUN git clone https://github.com/louislam/uptime-kuma.git . +RUN npm ci + +EXPOSE 3000 3001 +VOLUME ["/app/data"] +HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js +ENTRYPOINT ["/usr/bin/dumb-init", "--", "extra/entrypoint.sh"] +CMD ["npm", "run", "dev"] + # Upload the artifact to Github FROM louislam/uptime-kuma:base-debian AS upload-artifact diff --git a/package.json b/package.json index 981ca191..df93281a 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "build-docker-nightly": "npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", + "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", "setup": "git checkout 1.17.1 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", From fd2df562b1786574676ca7438644416be7fe42e3 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sat, 3 Sep 2022 18:37:31 +0800 Subject: [PATCH 2/7] Add checkout pr logic --- docker/dockerfile | 6 +++--- extra/checkout-pr.js | 11 +++++++++++ package.json | 3 ++- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 extra/checkout-pr.js diff --git a/docker/dockerfile b/docker/dockerfile index 117c0f12..f23c630a 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -45,14 +45,14 @@ RUN rm -rf ./* && chown node /app USER node -RUN git clone https://github.com/louislam/uptime-kuma.git . +RUN git clone https://github.com/louislam/uptime-kuma.git \ +RUN gh pr checkout 2023 RUN npm ci EXPOSE 3000 3001 VOLUME ["/app/data"] HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js -ENTRYPOINT ["/usr/bin/dumb-init", "--", "extra/entrypoint.sh"] -CMD ["npm", "run", "dev"] +CMD ["npm", "run", "start-pr-test"] # Upload the artifact to Github diff --git a/extra/checkout-pr.js b/extra/checkout-pr.js new file mode 100644 index 00000000..64a9dbc1 --- /dev/null +++ b/extra/checkout-pr.js @@ -0,0 +1,11 @@ +const childProcess = require("child_process"); + +if (!process.env.UPTIME_KUMA_PRUPTIME_KUMA_PR) { + console.error("Please set a pull request number to the environment variable 'UPTIME_KUMA_PRUPTIME_KUMA_PR'"); + process.exit(1); +} + +console.log("Checkout pr"); + +// Checkout the pr +childProcess.spawnSync("gh", [ "pr", "checkout", process.env.UPTIME_KUMA_PR ]); diff --git a/package.json b/package.json index df93281a..dbf036f1 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "release-final": "node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js", "release-beta": "node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts", "git-remove-tag": "git tag -d", - "build-dist-and-restart": "npm run build && npm run start-server-dev" + "build-dist-and-restart": "npm run build && npm run start-server-dev", + "start-pr-test": "node extra/checkout-pr.js && npm install && npm run dev" }, "dependencies": { "@louislam/sqlite3": "~15.0.6", From 53135641f3b5c9454194bea34425660bc8902e44 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 5 Sep 2022 17:42:23 +0800 Subject: [PATCH 3/7] Fix --- docker/dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/dockerfile b/docker/dockerfile index f23c630a..2938a52f 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -45,7 +45,7 @@ RUN rm -rf ./* && chown node /app USER node -RUN git clone https://github.com/louislam/uptime-kuma.git \ +RUN git clone https://github.com/louislam/uptime-kuma.git RUN gh pr checkout 2023 RUN npm ci From 9589fcfdefefacb921cb396656f2b0285952c423 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 8 Sep 2022 22:12:27 +0800 Subject: [PATCH 4/7] Checkout pr without GitHub Cli --- docker/dockerfile | 7 +++---- extra/checkout-pr.js | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/docker/dockerfile b/docker/dockerfile index 2938a52f..fd947391 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -31,22 +31,21 @@ WORKDIR /app ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 -## Install GitHub CLI +## Install Git RUN apt update \ && apt --yes --no-install-recommends install curl \ && curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \ && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ && apt update \ - && apt install gh -y + && apt --yes --no-install-recommends install git ## Empty the directory, because we have to clone the Git repo. RUN rm -rf ./* && chown node /app USER node -RUN git clone https://github.com/louislam/uptime-kuma.git -RUN gh pr checkout 2023 +RUN git clone --branch pr-test https://github.com/louislam/uptime-kuma.git . RUN npm ci EXPOSE 3000 3001 diff --git a/extra/checkout-pr.js b/extra/checkout-pr.js index 64a9dbc1..3528e7d0 100644 --- a/extra/checkout-pr.js +++ b/extra/checkout-pr.js @@ -1,11 +1,21 @@ const childProcess = require("child_process"); -if (!process.env.UPTIME_KUMA_PRUPTIME_KUMA_PR) { - console.error("Please set a pull request number to the environment variable 'UPTIME_KUMA_PRUPTIME_KUMA_PR'"); +if (!process.env.UPTIME_KUMA_GH_REPO) { + console.error("Please set a repo to the environment variable 'UPTIME_KUMA_GH_REPO' (e.g. mhkarimi1383:goalert-notification)"); process.exit(1); } +let inputArray = process.env.UPTIME_KUMA_GH_REPO.split(":"); + +if (inputArray.length !== 2) { + console.error("Invalid format. Please set a repo to the environment variable 'UPTIME_KUMA_GH_REPO' (e.g. mhkarimi1383:goalert-notification)"); +} + +let name = inputArray[0]; +let branch = inputArray[1]; + console.log("Checkout pr"); // Checkout the pr -childProcess.spawnSync("gh", [ "pr", "checkout", process.env.UPTIME_KUMA_PR ]); +childProcess.spawnSync("git", [ "remote", "add", name, `https://github.com/${name}/uptime-kuma` ]); +childProcess.spawnSync("git", [ "checkout", `name/${branch}`, "--force" ]); From 6601e9bbbad0e141bf0071b22e185abaf1a971f7 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 8 Sep 2022 22:36:34 +0800 Subject: [PATCH 5/7] Output --- extra/checkout-pr.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/extra/checkout-pr.js b/extra/checkout-pr.js index 3528e7d0..4b093334 100644 --- a/extra/checkout-pr.js +++ b/extra/checkout-pr.js @@ -17,5 +17,12 @@ let branch = inputArray[1]; console.log("Checkout pr"); // Checkout the pr -childProcess.spawnSync("git", [ "remote", "add", name, `https://github.com/${name}/uptime-kuma` ]); -childProcess.spawnSync("git", [ "checkout", `name/${branch}`, "--force" ]); +let result = childProcess.spawnSync("git", [ "remote", "add", name, `https://github.com/${name}/uptime-kuma` ]); + +console.log(result.stdout); +console.error(result.stderr); + +result = childProcess.spawnSync("git", [ "checkout", `name/${branch}`, "--force" ]); + +console.log(result.stdout); +console.error(result.stderr); From 0244507a070df62fde6075f4216b15a2a8508215 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 8 Sep 2022 22:40:45 +0800 Subject: [PATCH 6/7] Output --- extra/checkout-pr.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/extra/checkout-pr.js b/extra/checkout-pr.js index 4b093334..b7d643c5 100644 --- a/extra/checkout-pr.js +++ b/extra/checkout-pr.js @@ -19,10 +19,10 @@ console.log("Checkout pr"); // Checkout the pr let result = childProcess.spawnSync("git", [ "remote", "add", name, `https://github.com/${name}/uptime-kuma` ]); -console.log(result.stdout); -console.error(result.stderr); +console.log(result.stdout.toString()); +console.error(result.stderr.toString()); -result = childProcess.spawnSync("git", [ "checkout", `name/${branch}`, "--force" ]); +result = childProcess.spawnSync("git", [ "checkout", `${name}/${branch}`, "--force" ]); -console.log(result.stdout); -console.error(result.stderr); +console.log(result.stdout.toString()); +console.error(result.stderr.toString()); From dad2ec116450c3168e6cbebd04e5db31e45e776a Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 9 Sep 2022 01:57:42 +0800 Subject: [PATCH 7/7] Use pull --- extra/checkout-pr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/checkout-pr.js b/extra/checkout-pr.js index b7d643c5..a68f0577 100644 --- a/extra/checkout-pr.js +++ b/extra/checkout-pr.js @@ -22,7 +22,7 @@ let result = childProcess.spawnSync("git", [ "remote", "add", name, `https://git console.log(result.stdout.toString()); console.error(result.stderr.toString()); -result = childProcess.spawnSync("git", [ "checkout", `${name}/${branch}`, "--force" ]); +result = childProcess.spawnSync("git", [ "pull", name, branch ]); console.log(result.stdout.toString()); console.error(result.stderr.toString());