diff --git a/docker/dockerfile b/docker/dockerfile index a9984351..fd947391 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -24,6 +24,35 @@ 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 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 --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 --branch pr-test 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 +CMD ["npm", "run", "start-pr-test"] + # Upload the artifact to Github FROM louislam/uptime-kuma:base-debian AS upload-artifact diff --git a/extra/checkout-pr.js b/extra/checkout-pr.js new file mode 100644 index 00000000..a68f0577 --- /dev/null +++ b/extra/checkout-pr.js @@ -0,0 +1,28 @@ +const childProcess = require("child_process"); + +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 +let result = childProcess.spawnSync("git", [ "remote", "add", name, `https://github.com/${name}/uptime-kuma` ]); + +console.log(result.stdout.toString()); +console.error(result.stderr.toString()); + +result = childProcess.spawnSync("git", [ "pull", name, branch ]); + +console.log(result.stdout.toString()); +console.error(result.stderr.toString()); diff --git a/package.json b/package.json index 1e01be5d..86341c24 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.18.0 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", @@ -58,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",