141 lines
3.5 KiB
YAML
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
|