image: node:16 variables: NODE_ENV: test cache: key: files: - yarn.lock paths: - node_modules stages: - lint - test - build - deploy before_script: - env - yarn lint-js: stage: lint script: yarn lint:js only: changes: - "**/*.js" - "**/*.jsx" - "**/*.ts" - "**/*.tsx" - ".eslintignore" - ".eslintrc.js" lint-sass: stage: lint script: yarn lint:sass only: changes: - "**/*.scss" - "**/*.css" - ".stylelintrc.json" jest: stage: test script: yarn test:coverage only: changes: - "**/*.js" - "**/*.json" - "app/soapbox/**/*" - "webpack/**/*" - "jest.config.js" - "package.json" - "yarn.lock" build-production: stage: build script: yarn build variables: NODE_ENV: production artifacts: paths: - static docs-deploy: stage: deploy image: alpine:latest before_script: - apk add curl script: - curl -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' https://gitlab.com/api/v4/projects/15685485/trigger/pipeline only: refs: - develop changes: - "docs/**/*" # Supposed to fail when translations are outdated, instead always passes # # i18n: # stage: build # script: yarn manage:translations # variables: # NODE_ENV: development # before_script: # - yarn # - yarn build pages: stage: deploy before_script: [] script: # artifacts are kept between jobs - mv static public variables: NODE_ENV: production artifacts: paths: - public only: refs: - develop