Metamigo CI updates

This commit is contained in:
Darren Clarke 2023-06-21 07:32:00 +00:00 committed by GitHub
parent 7aa75317f5
commit 7a2a667aaf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 82 additions and 96 deletions

View file

@ -83,6 +83,17 @@ metamigo-docker-release:
variables: variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo
metamigo-frontend-docker-build:
extends: .docker-build
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo-frontend
DOCKERFILE_PATH: ./apps/metamigo-frontend/Dockerfile
metamigo-frontend-docker-release:
extends: .docker-release
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo-frontend
elasticsearch-docker-build: elasticsearch-docker-build:
extends: .docker-build extends: .docker-build
variables: variables:

View file

@ -1,27 +0,0 @@
leafcutter-docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-build
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/leafcutter
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/leafcutter && make docker/build-fresh-push
leafcutter-docker-release:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-release
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/leafcutter
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
DOCKER_TAG_NEW: ${CI_COMMIT_REF_NAME}
only:
- main
- develop
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/leafcutter && make docker/add-tag

View file

@ -1,27 +0,0 @@
link-docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-build
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/link
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/link && make docker/build-fresh-push
link-docker-release:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-release
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/link
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
DOCKER_TAG_NEW: ${CI_COMMIT_REF_NAME}
only:
- main
- develop
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/link && make docker/add-tag

View file

@ -1,27 +0,0 @@
metamigo-docker-build:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-build
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/metamigo-cli && make docker/build-fresh-push
metamigo-docker-release:
image: registry.gitlab.com/guardianproject-ops/docker-alpine-git:latest
services:
- docker:dind
stage: docker-release
variables:
DOCKER_NS: ${CI_REGISTRY}/digiresilience/link/link-stack/metamigo
DOCKER_TAG: ${CI_COMMIT_SHORT_SHA}
DOCKER_TAG_NEW: ${CI_COMMIT_REF_NAME}
only:
- main
- develop
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- cd apps/metamigo-cli && make docker/add-tag

View file

@ -9,10 +9,10 @@ elif [[ "$1" == "worker" ]]; then
echo "docker-entrypoint: starting worker" echo "docker-entrypoint: starting worker"
exec dumb-init ./cli worker exec dumb-init ./cli worker
elif [[ "$1" == "cli" ]]; then elif [[ "$1" == "cli" ]]; then
echo "docker-entrypoint: starting frontend" echo "docker-entrypoint: starting cli"
shift 1 shift 1
exec ./cli "$@" exec ./cli "$@"
else else
echo "docker-entrypoint: missing argument, one of: api, worker, frontend, cli" echo "docker-entrypoint: missing argument, one of: api, worker, cli"
exit 1 exit 1
fi fi

View file

@ -5,7 +5,7 @@ module.exports = {
"eslint-config-link/profile/node", "eslint-config-link/profile/node",
"eslint-config-link/profile/typescript", "eslint-config-link/profile/typescript",
"eslint-config-link/profile/jest", "eslint-config-link/profile/jest",
"next", "eslint-config-next",
], ],
parserOptions: { tsconfigRootDir: __dirname }, parserOptions: { tsconfigRootDir: __dirname },
}; };

View file

@ -0,0 +1,52 @@
FROM node:20 as base
FROM base AS builder
ARG APP_DIR=/opt/metamigo-frontend
RUN mkdir -p ${APP_DIR}/
RUN npm i -g turbo
WORKDIR ${APP_DIR}
COPY . .
RUN turbo prune --scope=@digiresilience/metamigo-frontend --docker
FROM base AS installer
ARG APP_DIR=/opt/metamigo-frontend
WORKDIR ${APP_DIR}
COPY .gitignore .gitignore
COPY --from=builder ${APP_DIR}/out/json/ .
COPY --from=builder ${APP_DIR}/out/package-lock.json ./package-lock.json
RUN npm ci --omit=dev
COPY --from=builder ${APP_DIR}/out/full/ .
RUN npm i -g turbo
RUN turbo run build --filter=metamigo-frontend
FROM base AS runner
ARG APP_DIR=/opt/metamigo-frontend
WORKDIR ${APP_DIR}/
ARG BUILD_DATE
ARG VERSION
LABEL maintainer="Darren Clarke <darren@redaranj.com>"
LABEL org.label-schema.build-date=$BUILD_DATE
LABEL org.label-schema.version=$VERSION
ENV APP_DIR ${APP_DIR}
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install -y --no-install-recommends \
dumb-init
RUN mkdir -p ${APP_DIR}
RUN chown -R node ${APP_DIR}/
USER node
WORKDIR ${APP_DIR}
COPY --from=installer ${APP_DIR}/node_modules/ ./node_modules/
COPY --from=installer ${APP_DIR}/packages/ ./packages/
COPY --from=installer ${APP_DIR}/apps/metamigo-frontend/ ./apps/metamigo-frontend/
COPY --from=installer ${APP_DIR}/package.json ./package.json
USER root
WORKDIR ${APP_DIR}/apps/metamigo-frontend/
RUN chmod +x docker-entrypoint.sh
USER node
EXPOSE 3000
ENV PORT 3000
ENV NODE_ENV production
ENTRYPOINT ["/opt/metamigo-frontend/apps/metamigo-frontend/docker-entrypoint.sh"]

View file

@ -0,0 +1,5 @@
#!/bin/bash
set -e
echo "starting metamigo-frontend"
exec dumb-init npm run start

View file

@ -197,18 +197,18 @@ services:
POSTGRES_USER: "root" POSTGRES_USER: "root"
POSTGRES_DB: "metamigo" POSTGRES_DB: "metamigo"
ports: ports:
- 127.0.0.1:5433:5432 - 127.0.0.1:5435:5432
metamigo-api: metamigo-api:
build: build:
context: . context: .
dockerfile: ./apps/metamigo-cli/Dockerfile dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-cli image: registry.gitlab.com/digiresilience/link/link-stack/metamigo
container_name: metamigo-api container_name: metamigo-api
restart: ${RESTART} restart: ${RESTART}
command: [ "api" ] command: [ "api" ]
ports: ports:
- 127.0.0.1:8004:3001 - 127.0.0.1:8003:3001
environment: *common-metamigo-variables environment: *common-metamigo-variables
volumes: volumes:
- ./signald-state:/signald - ./signald-state:/signald
@ -223,13 +223,12 @@ services:
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-frontend image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-frontend
container_name: metamigo-frontend container_name: metamigo-frontend
restart: ${RESTART} restart: ${RESTART}
command: [ "frontend" ]
expose: expose:
- "3000" - "3000"
ports: ports:
- 127.0.0.1:8002:3000 - 127.0.0.1:8002:3000
depends_on: # depends_on:
- metamigo-api # - metamigo-api
environment: environment:
<<: *common-metamigo-variables <<: *common-metamigo-variables
VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST} VIRTUAL_HOST: ${METAMIGO_VIRTUAL_HOST}
@ -239,7 +238,7 @@ services:
build: build:
context: . context: .
dockerfile: ./apps/metamigo-cli/Dockerfile dockerfile: ./apps/metamigo-cli/Dockerfile
image: registry.gitlab.com/digiresilience/link/link-stack/metamigo-cli image: registry.gitlab.com/digiresilience/link/link-stack/metamigo
container_name: metamigo-worker container_name: metamigo-worker
restart: ${RESTART} restart: ${RESTART}
command: [ "worker" ] command: [ "worker" ]
@ -276,7 +275,7 @@ services:
expose: expose:
- "3000" - "3000"
ports: ports:
- "8003:3000" - "8004:3000"
environment: environment:
ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL} ZAMMAD_PROXY_URL: ${ZAMMAD_PROXY_URL}
ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN} ZAMMAD_API_TOKEN: ${ZAMMAD_API_TOKEN}
@ -302,7 +301,7 @@ services:
expose: expose:
- "3000" - "3000"
ports: ports:
- "8004:3000" - "8005:3000"
environment: environment:
LINK_EMBEDDED: "true" LINK_EMBEDDED: "true"
NEXTAUTH_URL: ${LINK_URL} NEXTAUTH_URL: ${LINK_URL}

View file

@ -29,10 +29,10 @@ export class NextAuthAdapter<TRepositories extends IMetamigoRepositories> {
private repos: TRepositories, private repos: TRepositories,
private readonly sessionMaxAge = defaultSessionMaxAge, private readonly sessionMaxAge = defaultSessionMaxAge,
private readonly sessionUpdateAge = defaulteSessionUpdateAge private readonly sessionUpdateAge = defaulteSessionUpdateAge
) {} ) { }
async createUser(profile: UnsavedUser): Promise<SavedUser> { async createUser(profile: UnsavedUser): Promise<SavedUser> {
// @ts-expect-error Typescript doesn't like lodash's omit() // @ts-ignore Typescript doesn't like lodash's omit()
return this.repos.users.upsert(omit(profile, ["isActive", "id"])); return this.repos.users.upsert(omit(profile, ["isActive", "id"]));
} }
@ -142,7 +142,7 @@ export class NextAuthAdapter<TRepositories extends IMetamigoRepositories> {
async getSessionAndUser( async getSessionAndUser(
sessionToken: string sessionToken: string
): Promise<{ session: AdapterSession; user: any } | null> { ): Promise<{ session: AdapterSession; user: any; } | null> {
const session = await this.repos.sessions.findBy({ sessionToken }); const session = await this.repos.sessions.findBy({ sessionToken });
if (!session) return null; if (!session) return null;
if (session && session.expires && new Date() > session.expires) { if (session && session.expires && new Date() > session.expires) {