2023-10-20 00:07:16 +00:00
|
|
|
image: node:21
|
2020-04-14 18:07:40 +00:00
|
|
|
|
|
|
|
variables:
|
|
|
|
NODE_ENV: test
|
2023-09-13 19:15:35 +00:00
|
|
|
DS_EXCLUDED_ANALYZERS: gemnasium-python
|
2020-04-14 18:07:40 +00:00
|
|
|
|
2022-12-30 17:39:08 +00:00
|
|
|
default:
|
|
|
|
interruptible: true
|
|
|
|
|
2022-06-18 00:02:58 +00:00
|
|
|
cache: &cache
|
2021-08-23 19:36:14 +00:00
|
|
|
key:
|
|
|
|
files:
|
|
|
|
- yarn.lock
|
|
|
|
paths:
|
2022-05-17 11:39:59 +00:00
|
|
|
- node_modules/
|
2022-06-18 00:02:58 +00:00
|
|
|
policy: pull
|
2020-04-14 23:00:02 +00:00
|
|
|
|
2020-04-14 18:07:40 +00:00
|
|
|
stages:
|
2022-05-25 15:00:28 +00:00
|
|
|
- deps
|
2020-04-14 18:07:40 +00:00
|
|
|
- test
|
2020-08-30 18:59:39 +00:00
|
|
|
- deploy
|
2022-12-29 01:45:41 +00:00
|
|
|
- release
|
2020-04-14 18:07:40 +00:00
|
|
|
|
2022-05-25 15:00:28 +00:00
|
|
|
deps:
|
|
|
|
stage: deps
|
|
|
|
script: yarn install --ignore-scripts
|
2022-05-25 19:36:30 +00:00
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- yarn.lock
|
2022-06-18 00:02:58 +00:00
|
|
|
cache:
|
|
|
|
<<: *cache
|
|
|
|
policy: push
|
2020-04-14 18:07:40 +00:00
|
|
|
|
2023-09-18 23:12:15 +00:00
|
|
|
lint:
|
2022-05-25 14:58:19 +00:00
|
|
|
stage: test
|
2023-09-18 23:12:15 +00:00
|
|
|
script: yarn lint
|
2021-08-22 21:17:31 +00:00
|
|
|
only:
|
|
|
|
changes:
|
|
|
|
- "**/*.js"
|
2022-03-18 20:36:15 +00:00
|
|
|
- "**/*.jsx"
|
2023-01-18 00:34:11 +00:00
|
|
|
- "**/*.cjs"
|
|
|
|
- "**/*.mjs"
|
2022-03-18 20:36:15 +00:00
|
|
|
- "**/*.ts"
|
|
|
|
- "**/*.tsx"
|
2021-08-22 21:17:31 +00:00
|
|
|
- "**/*.scss"
|
|
|
|
- "**/*.css"
|
2023-09-18 23:12:15 +00:00
|
|
|
- ".eslintignore"
|
2023-12-21 17:16:29 +00:00
|
|
|
- ".eslintrc.json"
|
2021-08-22 21:17:31 +00:00
|
|
|
- ".stylelintrc.json"
|
2020-04-14 18:07:40 +00:00
|
|
|
|
2023-09-18 16:27:19 +00:00
|
|
|
build:
|
2022-05-25 15:15:41 +00:00
|
|
|
stage: test
|
2023-09-18 18:06:54 +00:00
|
|
|
before_script:
|
|
|
|
- apt-get update -y && apt-get install -y zip
|
2022-12-29 06:17:29 +00:00
|
|
|
script:
|
|
|
|
- yarn build
|
2023-09-18 16:27:19 +00:00
|
|
|
- cp dist/index.html dist/404.html
|
2023-09-18 17:54:21 +00:00
|
|
|
- cd dist && zip -r ../soapbox.zip . && cd ..
|
2020-04-14 18:20:07 +00:00
|
|
|
variables:
|
|
|
|
NODE_ENV: production
|
2020-04-14 18:07:40 +00:00
|
|
|
artifacts:
|
|
|
|
paths:
|
2023-09-18 17:54:21 +00:00
|
|
|
- soapbox.zip
|
2020-04-14 18:07:40 +00:00
|
|
|
|
2023-10-11 20:19:47 +00:00
|
|
|
i18n:
|
|
|
|
stage: test
|
|
|
|
script:
|
|
|
|
- yarn i18n
|
|
|
|
- git diff --quiet || (echo "Locale files are out of date. Please run `yarn i18n`" && exit 1)
|
|
|
|
|
2020-08-30 18:59:39 +00:00
|
|
|
docs-deploy:
|
|
|
|
stage: deploy
|
|
|
|
image: alpine:latest
|
2020-08-29 21:51:17 +00:00
|
|
|
before_script:
|
|
|
|
- apk add curl
|
|
|
|
script:
|
2020-08-30 18:49:42 +00:00
|
|
|
- curl -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' https://gitlab.com/api/v4/projects/15685485/trigger/pipeline
|
2020-08-29 18:18:51 +00:00
|
|
|
only:
|
2023-01-01 02:50:05 +00:00
|
|
|
variables:
|
|
|
|
- $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
|
2021-08-22 21:17:31 +00:00
|
|
|
changes:
|
|
|
|
- "docs/**/*"
|
2021-08-22 04:48:29 +00:00
|
|
|
|
2022-05-19 02:48:16 +00:00
|
|
|
review:
|
|
|
|
stage: deploy
|
|
|
|
environment:
|
|
|
|
name: review/$CI_COMMIT_REF_NAME
|
|
|
|
url: https://$CI_COMMIT_REF_SLUG.git.soapbox.pub
|
2023-09-18 18:30:55 +00:00
|
|
|
before_script:
|
|
|
|
- apt-get update -y && apt-get install -y unzip
|
2022-05-19 02:48:16 +00:00
|
|
|
script:
|
2023-09-18 18:38:32 +00:00
|
|
|
- unzip soapbox.zip -d dist
|
2023-09-18 16:27:19 +00:00
|
|
|
- npx -y surge dist $CI_COMMIT_REF_SLUG.git.soapbox.pub
|
2022-05-25 15:23:55 +00:00
|
|
|
allow_failure: true
|
2022-05-19 02:48:16 +00:00
|
|
|
|
2021-08-22 04:48:29 +00:00
|
|
|
pages:
|
|
|
|
stage: deploy
|
2023-09-18 18:30:55 +00:00
|
|
|
before_script:
|
|
|
|
- apt-get update -y && apt-get install -y unzip
|
2021-08-22 04:48:29 +00:00
|
|
|
script:
|
2021-09-07 04:59:19 +00:00
|
|
|
# artifacts are kept between jobs
|
2023-09-18 18:38:32 +00:00
|
|
|
- unzip soapbox.zip -d public
|
2021-09-07 04:56:29 +00:00
|
|
|
variables:
|
|
|
|
NODE_ENV: production
|
2021-08-22 04:48:29 +00:00
|
|
|
artifacts:
|
|
|
|
paths:
|
|
|
|
- public
|
|
|
|
only:
|
2023-01-01 02:50:05 +00:00
|
|
|
variables:
|
|
|
|
- $CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
|
2022-09-04 20:37:34 +00:00
|
|
|
|
|
|
|
docker:
|
2022-09-04 20:58:48 +00:00
|
|
|
stage: deploy
|
2024-02-11 16:07:01 +00:00
|
|
|
image: docker:25.0.3
|
2022-09-04 20:37:34 +00:00
|
|
|
services:
|
2024-02-11 16:07:01 +00:00
|
|
|
- docker:25.0.3-dind
|
2022-10-09 16:33:10 +00:00
|
|
|
tags:
|
|
|
|
- dind
|
2022-09-04 20:37:34 +00: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-16 01:55:56 +00: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-29 01:45:41 +00:00
|
|
|
|
|
|
|
release:
|
|
|
|
stage: release
|
|
|
|
rules:
|
|
|
|
- if: $CI_COMMIT_TAG
|
|
|
|
script:
|
2023-10-11 18:06:45 +00:00
|
|
|
- npx tsx ./scripts/do-release.ts
|
2023-01-08 22:32:35 +00:00
|
|
|
interruptible: false
|
|
|
|
|
2022-12-29 06:04:02 +00:00
|
|
|
include:
|
2022-12-29 15:49:39 +00:00
|
|
|
- template: Jobs/Dependency-Scanning.gitlab-ci.yml
|