2022-06-01 11:22:49 -07:00
|
|
|
image: node:18
|
2020-04-14 11:07:40 -07:00
|
|
|
|
|
|
|
variables:
|
|
|
|
NODE_ENV: test
|
|
|
|
|
2022-12-30 09:39:08 -08:00
|
|
|
default:
|
|
|
|
interruptible: true
|
|
|
|
|
2022-06-17 17:02:58 -07:00
|
|
|
cache: &cache
|
2021-08-23 12:36:14 -07:00
|
|
|
key:
|
|
|
|
files:
|
|
|
|
- yarn.lock
|
|
|
|
paths:
|
2022-05-17 04:39:59 -07:00
|
|
|
- node_modules/
|
2022-06-17 17:02:58 -07:00
|
|
|
policy: pull
|
2020-04-14 16:00:02 -07:00
|
|
|
|
2020-04-14 11:07:40 -07:00
|
|
|
stages:
|
2022-05-25 08:00:28 -07:00
|
|
|
- deps
|
2020-04-14 11:07:40 -07:00
|
|
|
- test
|
2020-08-30 11:59:39 -07:00
|
|
|
- deploy
|
2022-12-28 17:45:41 -08:00
|
|
|
- release
|
2020-04-14 11:07:40 -07:00
|
|
|
|
2022-05-25 08:00:28 -07:00
|
|
|
deps:
|
|
|
|
stage: deps
|
|
|
|
script: yarn install --ignore-scripts
|
2022-05-25 12:36:30 -07:00
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- yarn.lock
|
2022-06-17 17:02:58 -07:00
|
|
|
cache:
|
|
|
|
<<: *cache
|
|
|
|
policy: push
|
2020-04-14 11:07:40 -07:00
|
|
|
|
2022-06-17 16:21:45 -07:00
|
|
|
danger:
|
|
|
|
stage: test
|
2022-06-17 16:23:53 -07:00
|
|
|
script:
|
|
|
|
# https://github.com/danger/danger-js/issues/1029#issuecomment-998915436
|
|
|
|
- export CI_MERGE_REQUEST_IID=${CI_OPEN_MERGE_REQUESTS#*!}
|
|
|
|
- npx danger ci
|
2022-12-30 09:26:16 -08:00
|
|
|
except:
|
2022-12-31 18:50:05 -08:00
|
|
|
variables:
|
|
|
|
- $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
|
2022-06-19 12:13:35 -07:00
|
|
|
allow_failure: true
|
2022-06-17 16:21:45 -07:00
|
|
|
|
2020-04-14 11:07:40 -07:00
|
|
|
lint-js:
|
2022-05-25 07:58:19 -07:00
|
|
|
stage: test
|
2022-04-04 08:50:14 -07:00
|
|
|
script: yarn lint:js
|
2021-08-22 14:17:31 -07:00
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- "**/*.js"
|
2022-03-18 13:36:15 -07:00
|
|
|
- "**/*.jsx"
|
2023-01-17 16:34:11 -08:00
|
|
|
- "**/*.cjs"
|
|
|
|
- "**/*.mjs"
|
2022-03-18 13:36:15 -07:00
|
|
|
- "**/*.ts"
|
|
|
|
- "**/*.tsx"
|
2021-08-22 14:17:31 -07:00
|
|
|
- ".eslintignore"
|
2023-01-17 16:34:11 -08:00
|
|
|
- ".eslintrc.cjs"
|
2020-04-14 11:07:40 -07:00
|
|
|
|
|
|
|
lint-sass:
|
2022-05-25 07:58:19 -07:00
|
|
|
stage: test
|
2022-04-04 08:50:14 -07:00
|
|
|
script: yarn lint:sass
|
2021-08-22 14:17:31 -07:00
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- "**/*.scss"
|
|
|
|
- "**/*.css"
|
|
|
|
- ".stylelintrc.json"
|
2020-04-14 11:07:40 -07:00
|
|
|
|
2020-04-14 16:00:02 -07:00
|
|
|
jest:
|
|
|
|
stage: test
|
2022-07-06 09:23:35 -07:00
|
|
|
script: yarn test:coverage --runInBand
|
2021-08-22 14:17:31 -07:00
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- "**/*.js"
|
|
|
|
- "**/*.json"
|
|
|
|
- "app/soapbox/**/*"
|
|
|
|
- "webpack/**/*"
|
2022-05-25 12:36:30 -07:00
|
|
|
- "custom/**/*"
|
2023-01-17 16:34:11 -08:00
|
|
|
- "jest.config.cjs"
|
2021-08-22 14:17:31 -07:00
|
|
|
- "package.json"
|
|
|
|
- "yarn.lock"
|
2022-06-13 12:10:32 -07:00
|
|
|
- ".gitlab-ci.yml"
|
2022-06-13 11:57:10 -07:00
|
|
|
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
|
2022-06-13 10:15:07 -07:00
|
|
|
artifacts:
|
|
|
|
reports:
|
2022-06-13 11:26:51 -07:00
|
|
|
junit: junit.xml
|
2022-06-13 10:15:07 -07:00
|
|
|
coverage_report:
|
|
|
|
coverage_format: cobertura
|
|
|
|
path: .coverage/cobertura-coverage.xml
|
2020-04-14 11:16:08 -07:00
|
|
|
|
2022-05-20 16:47:49 -07:00
|
|
|
nginx-test:
|
|
|
|
stage: test
|
|
|
|
image: nginx:latest
|
2022-12-30 09:25:18 -08:00
|
|
|
before_script:
|
|
|
|
- cp installation/mastodon.conf /etc/nginx/conf.d/default.conf
|
2022-05-20 16:47:49 -07:00
|
|
|
script: nginx -t
|
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- "installation/mastodon.conf"
|
|
|
|
|
2020-04-14 11:20:07 -07:00
|
|
|
build-production:
|
2022-05-25 08:15:41 -07:00
|
|
|
stage: test
|
2022-12-28 22:17:29 -08:00
|
|
|
script:
|
|
|
|
- yarn build
|
|
|
|
- yarn manage:translations en
|
|
|
|
# Fail if files got changed.
|
|
|
|
# https://stackoverflow.com/a/9066385
|
|
|
|
- git diff --quiet
|
2020-04-14 11:20:07 -07:00
|
|
|
variables:
|
|
|
|
NODE_ENV: production
|
2020-04-14 11:07:40 -07:00
|
|
|
artifacts:
|
|
|
|
paths:
|
2022-05-25 08:15:41 -07:00
|
|
|
- static
|
2020-04-14 11:07:40 -07:00
|
|
|
|
2020-08-30 11:59:39 -07:00
|
|
|
docs-deploy:
|
|
|
|
stage: deploy
|
|
|
|
image: alpine:latest
|
2020-08-29 14:51:17 -07:00
|
|
|
before_script:
|
|
|
|
- apk add curl
|
|
|
|
script:
|
2020-08-30 11:49:42 -07:00
|
|
|
- curl -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' https://gitlab.com/api/v4/projects/15685485/trigger/pipeline
|
2020-08-29 11:18:51 -07:00
|
|
|
only:
|
2022-12-31 18:50:05 -08:00
|
|
|
variables:
|
|
|
|
- $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
|
2021-08-22 14:17:31 -07:00
|
|
|
changes:
|
|
|
|
- "docs/**/*"
|
2021-08-21 21:48:29 -07:00
|
|
|
|
2022-05-18 19:48:16 -07:00
|
|
|
review:
|
|
|
|
stage: deploy
|
|
|
|
environment:
|
|
|
|
name: review/$CI_COMMIT_REF_NAME
|
|
|
|
url: https://$CI_COMMIT_REF_SLUG.git.soapbox.pub
|
|
|
|
script:
|
|
|
|
- npx -y surge static $CI_COMMIT_REF_SLUG.git.soapbox.pub
|
2022-05-25 08:23:55 -07:00
|
|
|
allow_failure: true
|
2022-05-18 19:48:16 -07:00
|
|
|
|
2021-08-21 21:48:29 -07:00
|
|
|
pages:
|
|
|
|
stage: deploy
|
2021-09-06 21:59:19 -07:00
|
|
|
before_script: []
|
2021-08-21 21:48:29 -07:00
|
|
|
script:
|
2021-09-06 21:59:19 -07:00
|
|
|
# artifacts are kept between jobs
|
2021-09-06 20:48:42 -07:00
|
|
|
- mv static public
|
2021-09-06 21:56:29 -07:00
|
|
|
variables:
|
|
|
|
NODE_ENV: production
|
2021-08-21 21:48:29 -07:00
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- public
|
|
|
|
only:
|
2022-12-31 18:50:05 -08:00
|
|
|
variables:
|
|
|
|
- $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
|
2022-09-04 13:37:34 -07:00
|
|
|
|
|
|
|
docker:
|
2022-09-04 13:58:48 -07:00
|
|
|
stage: deploy
|
2023-02-02 16:12:36 -08:00
|
|
|
image: docker:23.0.0
|
2022-09-04 13:37:34 -07:00
|
|
|
services:
|
2023-02-02 16:12:36 -08:00
|
|
|
- docker:23.0.0-dind
|
2022-10-09 09:33:10 -07:00
|
|
|
tags:
|
|
|
|
- dind
|
2022-09-04 13:37:34 -07:00
|
|
|
# https://medium.com/devops-with-valentine/how-to-build-a-docker-image-and-push-it-to-the-gitlab-container-registry-from-a-gitlab-ci-pipeline-acac0d1f26df
|
|
|
|
script:
|
|
|
|
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER $CI_REGISTRY --password-stdin
|
2023-02-15 17:55:56 -08:00
|
|
|
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG .
|
|
|
|
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
|
|
|
|
rules:
|
|
|
|
- if: $CI_COMMIT_TAG
|
|
|
|
interruptible: false
|
2022-12-28 17:45:41 -08:00
|
|
|
|
|
|
|
release:
|
|
|
|
stage: release
|
|
|
|
rules:
|
|
|
|
- if: $CI_COMMIT_TAG
|
|
|
|
script:
|
2023-01-08 14:34:50 -08:00
|
|
|
- npx ts-node ./scripts/do-release.ts
|
2023-01-08 14:32:35 -08:00
|
|
|
interruptible: false
|
|
|
|
|
2022-12-28 22:04:02 -08:00
|
|
|
include:
|
2022-12-29 07:49:39 -08:00
|
|
|
- template: Jobs/Dependency-Scanning.gitlab-ci.yml
|
2023-01-08 14:34:50 -08:00
|
|
|
- template: Security/License-Scanning.gitlab-ci.yml
|