stages:
- build
- test
+ - benchmark
- deploy
- release
- develop@pleroma/pleroma
variables:
MIX_ENV: dev
+ PLEROMA_BUILD_ENV: prod
script:
- mix deps.get
- mix compile
paths:
- priv/static/doc
+benchmark:
+ stage: benchmark
+ variables:
+ MIX_ENV: benchmark
+ services:
+ - name: lainsoykaf/postgres-with-rum
+ alias: postgres
+ command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
+ script:
+ - mix deps.get
+ - mix ecto.create
+ - mix ecto.migrate
+ - mix pleroma.load_testing
unit-testing:
stage: test
docs-deploy:
stage: deploy
- image: alpine:3.9
+ image: alpine:latest
only:
- - master@pleroma/pleroma
+ - stable@pleroma/pleroma
- develop@pleroma/pleroma
before_script:
- - apk update && apk add openssh-client rsync
+ - apk add curl
script:
- - mkdir -p ~/.ssh
- - echo "${SSH_HOST_KEY}" > ~/.ssh/known_hosts
- - eval $(ssh-agent -s)
- - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- - rsync -hrvz --delete -e "ssh -p ${SSH_PORT}" priv/static/doc/ "${SSH_USER_HOST_LOCATION}/${CI_COMMIT_REF_NAME}"
-
+ - curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" https://git.pleroma.social/api/v4/projects/673/trigger/pipeline
review_app:
image: alpine:3.9
stage: deploy
- ssh -t dokku@pleroma.online -- --force apps:destroy "$CI_ENVIRONMENT_SLUG"
- ssh -t dokku@pleroma.online -- --force postgres:destroy $(echo $CI_ENVIRONMENT_SLUG | sed -e 's/-/_/g')_db
-# TODO: Restrict to master and develop
-
amd64:
stage: release
# TODO: Replace with upstream image when 1.9.0 comes out
image: rinpatch/elixir:1.9.0-rc.0
only: &release-only
- - master@pleroma/pleroma
+ - stable@pleroma/pleroma
- develop@pleroma/pleroma
- - feature/ci-release-build@pleroma/pleroma
+ - /^maint/.*$/@pleroma/pleroma
+ - /^release/.*$/@pleroma/pleroma
artifacts: &release-artifacts
name: "pleroma-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA-$CI_JOB_NAME"
paths:
- release/*
+ # Ideally it would be never for master branch and with the next commit for develop,
+ # but Gitlab does not support neither `only` for artifacts
+ # nor setting it to never from .gitlab-ci.yml
+ # nor expiring with the next commit
+ expire_in: 42 yrs
+
cache: &release-cache
key: $CI_COMMIT_REF_NAME-$CI_JOB_NAME
paths:
script: &release
- mix deps.get --only prod
- mkdir release
+ - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_REF_NAME
- mix release --path release