Files

141 lines
3.5 KiB
YAML

image: node:22
variables:
CHROME_BIN: chromium-browser
CONTAINER_IMAGE: ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHORT_SHA}
POSTGRES_HOST_AUTH_METHOD: "trust"
EMAIL_BACKEND: "django.core.mail.backends.console.EmailBackend"
SECRET_KEY: "testing"
ENABLE_TEST_API: "true"
FF_NETWORK_PER_BUILD: 1
DEBUG: "true"
GIT_SUBMODULE_STRATEGY: normal
SAST_EXCLUDED_PATHS: "*.stories.ts, *.spec.ts, cypress"
include:
- template: SAST.gitlab-ci.yml
- template: Dependency-Scanning.gitlab-ci.yml
- template: Secret-Detection.gitlab-ci.yml
stages:
- test
- build
- deploy
test:
stage: test
image: node:22-alpine
script:
- npm ci --force
# Disabled because storybook :(
#- npm run lint
test-e2e:
stage: test
variables:
ENABLE_ORGANIZATION_CREATION: "true"
CELERY_TASK_ALWAYS_EAGER: "true"
services:
- postgres
- name: registry.gitlab.com/glitchtip/glitchtip-backend:master
alias: backend
command: ["./bin/run-migrate-and-runserver.sh"]
image:
name: cypress/included:14.0.0
entrypoint: [""]
script:
- npm ci --force
- cp src/proxy.conf.ci.json src/proxy.conf.json
- npm run e2e
except:
- tags
artifacts:
when: always
paths:
- cypress/videos/**/*.mp4
- cypress/screenshots/**/*.png
expire_in: 1 day
build-assets:
stage: test
script:
- npm ci --force
- npm run build-prod
artifacts:
paths:
- dist/
build-docker:
stage: build
image: docker:cli
services:
- docker:dind
dependencies:
- build-assets
# needs: ["build-assets"]
only:
refs:
- master
- tags
variables:
- $CI_COMMIT_REF_PROTECTED
script:
- echo "Start build docker step $CI_REGISTRY_IMAGE commit ref $CI_COMMIT_REF_NAME"
- trap '' PIPE
- VERSION=${CI_COMMIT_REF_NAME#*v}
- echo "Build version $VERSION ci registry image $CI_REGISTRY_IMAGE commit ref $CI_COMMIT_REF_NAME"
- docker build -f Dockerfile.prod -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME} -t ${CONTAINER_IMAGE} --build-arg FRONTEND_GLITCHTIP_VERSION=$VERSION .
- if [ $CI_COMMIT_REF_NAME = "master" ]; then docker tag ${CONTAINER_IMAGE} ${CI_REGISTRY_IMAGE}:latest; fi
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
- docker push ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}
- docker push ${CONTAINER_IMAGE}
- if [ $CI_COMMIT_REF_NAME = "master" ]; then docker push ${CI_REGISTRY_IMAGE}:latest; fi
upload-sourcemaps:
stage: deploy
image: getsentry/sentry-cli
dependencies:
- build-assets
script:
- VERSION=glitchtip@${CI_COMMIT_REF_NAME#*v}
- sentry-cli releases files ${VERSION} upload-sourcemaps dist/glitchtip-frontend/browser
allow_failure: true
only:
refs:
- tags
variables:
- $CI_COMMIT_REF_PROTECTED
deploy-staging:
stage: deploy
image:
name: alpine/helm:3.15
entrypoint: [""]
# needs: ["build-docker", "test-e2e"]
script:
- helm repo add glitchtip https://gitlab.com/api/v4/projects/16325141/packages/helm/stable
- helm upgrade glitchtip-staging glitchtip/glitchtip --set-string image.tag=${CI_COMMIT_SHORT_SHA} --reuse-values
environment:
name: staging
url: https://staging.glitchtip.com
only:
refs:
- master
variables:
- $CI_COMMIT_REF_PROTECTED
pages:
stage: deploy
script:
- npm ci --cache .npm --prefer-offline --force
- npm run build-static
- npm run build-marketing
- mv dist/marketing/browser public
- cp 404.html public/
artifacts:
paths:
- public
only:
- marketing