From 23a0bab07f2dc918dc9bb2f92d37d4d6d77140d8 Mon Sep 17 00:00:00 2001 From: Marcello DeSales Date: Wed, 13 Sep 2023 15:50:03 -0700 Subject: [PATCH 1/4] :arrow_down: :bug: Downgrade npm dependency in package.json Deprecated APIs are still being used in the app. Using npm@7 so that we can get the app dockerized. https://stackoverflow.com/questions/74935310/creation-of-probot-github-app-failing-with-error-the-programmatic-api-was-remov $ docker run -ti marcellodesales/create-probot-app node ./bin/create-probot-app.js create-probot-app [options] Argument is required. Example: create-probot-app my-first-app Run create-probot-app --help to see all options. (devsecops-platform-artifactory-manager) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f6f09cfbc2..b779d0b5c7 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "jsesc": "^3.0.1", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", - "npm": "^9.0.0", + "npm": "^7.0.0", "simple-git": "^3.0.3", "stringify-author": "^0.1.3", "validate-npm-package-name": "^5.0.0" From 31b9db1ea9bb59d3d3fcdd74d9ea0f6de1e77abc Mon Sep 17 00:00:00 2001 From: Marcello DeSales Date: Wed, 13 Sep 2023 15:51:00 -0700 Subject: [PATCH 2/4] :whale: :building_construction: Add docker-compose.yaml $ docker compose build [+] Building 28.3s (14/14) FINISHED docker:desktop-linux => [create-probot-app internal] load .dockerignore 0.0s => => transferring context: 88B 0.0s => [create-probot-app internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 700B 0.0s => [create-probot-app internal] load metadata for docker.io/library/node:20-slim 1.3s => [create-probot-app base 1/4] FROM docker.io/library/node:20-slim@sha256:2dab2d0e8813ee1601f8d25a8e4aa5530ffc4d0cc16600ec4fd080263b5b1ccd 0.0s => [create-probot-app internal] load build context 0.0s => => transferring context: 5.03kB 0.0s => CACHED [create-probot-app base 2/4] RUN corepack enable 0.0s => [create-probot-app base 3/4] COPY . /app 0.1s => [create-probot-app base 4/4] WORKDIR /app 0.0s => [create-probot-app app-dependencies 1/3] WORKDIR /github.com/marcellodesales/probot 0.0s => [create-probot-app app-dependencies 2/3] COPY package* . 0.0s => [create-probot-app app-dependencies 3/3] RUN pnpm install 12.9s => [create-probot-app stage-5 1/2] COPY . . 0.1s => [create-probot-app stage-5 2/2] RUN pnpm run build 11.1s => [create-probot-app] exporting to image 2.6s => => exporting layers 2.6s => => writing image sha256:e793d3fee03df8abd57909c5d9b1cdc96aad8a135185e3c44661823fb4a58042 0.0s => => naming to docker.io/marcellodesales/create-probot-app --- Dockerfile | 34 ++++++++++++++++++++++++++++++++++ docker-compose.yaml | 7 +++++++ 2 files changed, 41 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yaml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..218ece657e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,34 @@ +FROM node:20-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +COPY . /app +WORKDIR /app + +FROM base AS prod-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile + +FROM base AS build +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run build + +FROM base +COPY --from=prod-deps /app/node_modules /app/node_modules +COPY --from=build /app/dist /app/dist +EXPOSE 8000 + +FROM base AS app-dependencies + +WORKDIR /github.com/marcellodesales/probot + +COPY package* . + +RUN pnpm install + +FROM app-dependencies + +COPY . . + +RUN pnpm run build + +CMD [ "node", "bin/" ] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000000..383cbcbc3c --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,7 @@ +services: + + create-probot-app: + image: marcellodesales/create-probot-app + build: + context: . + From c2b661f564933d76327b7ed1df3b18453c65cabe Mon Sep 17 00:00:00 2001 From: Marcello DeSales Date: Wed, 13 Sep 2023 15:51:53 -0700 Subject: [PATCH 3/4] :whale: :see_no_evil: Add .dockerignore for builds --- .dockerignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..ecf118dcf4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.gitignore +.git +.github +*.md +dist +node_modules/ From 7e7f1fd42e30e1f31cdcfa1b6d375802917a7002 Mon Sep 17 00:00:00 2001 From: Marcello DeSales Date: Wed, 13 Sep 2023 16:08:33 -0700 Subject: [PATCH 4/4] :whale: fix gitignore and dockerfile entrypoint $ docker run -ti marcellodesales/create-probot-app myapp Let's create a Probot app! Hit enter to accept the suggestion. ? App name: (myapp) --- .dockerignore | 2 ++ Dockerfile | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index ecf118dcf4..a861cc7c1b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,5 @@ *.md dist node_modules/ +Dockerfile +docker-compose.yaml diff --git a/Dockerfile b/Dockerfile index 218ece657e..52633e17da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -31,4 +31,4 @@ COPY . . RUN pnpm run build -CMD [ "node", "bin/" ] +ENTRYPOINT [ "node", "./bin/create-probot-app.js" ]