From e0cdc3e7c57ffe43b649e825fce80e20bd8c598a Mon Sep 17 00:00:00 2001
From: Louis Lam <louislam@users.noreply.github.com>
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 <louislam@users.noreply.github.com>
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 <louislam@users.noreply.github.com>
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 <louislam@users.noreply.github.com>
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 <louislam@users.noreply.github.com>
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 <louislam@users.noreply.github.com>
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 <louislam@users.noreply.github.com>
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());