b8b15cec9e
Use git diff to search for changelog entry See merge request pleroma/pleroma!3875
161 lines
3.3 KiB
YAML
161 lines
3.3 KiB
YAML
image: registry.gitlab.com/soapbox-pub/rebased/ci
|
|
|
|
variables: &global_variables
|
|
POSTGRES_DB: pleroma_test
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
DB_HOST: postgres
|
|
DB_PORT: 5432
|
|
MIX_ENV: test
|
|
# Needed for Dokku deployment.
|
|
# https://github.com/dokku/dokku/issues/2514#issuecomment-616775470
|
|
GIT_DEPTH: 0
|
|
|
|
cache: &cache
|
|
key:
|
|
files:
|
|
- mix.lock
|
|
paths:
|
|
- deps
|
|
- _build
|
|
policy: pull
|
|
|
|
stages:
|
|
- deps
|
|
- test
|
|
- deploy
|
|
|
|
deps:
|
|
stage: deps
|
|
script:
|
|
- mix deps.get
|
|
- mix deps.compile
|
|
cache:
|
|
<<: *cache
|
|
policy: pull-push
|
|
only:
|
|
changes:
|
|
- mix.lock
|
|
|
|
openapi:
|
|
stage: test
|
|
only:
|
|
changes:
|
|
- ".gitlab-ci.yml"
|
|
- "lib/pleroma/web/api_spec/**/*.ex"
|
|
- "lib/pleroma/web/api_spec.ex"
|
|
artifacts:
|
|
paths:
|
|
- spec.json
|
|
script:
|
|
- mix pleroma.openapi_spec spec.json
|
|
|
|
test:
|
|
stage: test
|
|
only:
|
|
changes: &elixir-changes
|
|
- ".gitlab-ci.yml"
|
|
- "**/*.ex"
|
|
- "**/*.exs"
|
|
- "mix.lock"
|
|
services: &db-services
|
|
- name: postgres:13-alpine
|
|
alias: postgres
|
|
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
|
before_script: &db-setup
|
|
- mix ecto.create
|
|
- mix ecto.migrate
|
|
script:
|
|
- mix test --cover --preload-modules
|
|
coverage: '/^Line total: ([^ ]*%)$/'
|
|
artifacts:
|
|
reports:
|
|
coverage_report:
|
|
coverage_format: cobertura
|
|
path: coverage.xml
|
|
|
|
test-erratic:
|
|
stage: test
|
|
allow_failure: true
|
|
only:
|
|
changes: *elixir-changes
|
|
services: *db-services
|
|
before_script: *db-setup
|
|
script:
|
|
- mix test --only=erratic
|
|
|
|
lint:
|
|
stage: test
|
|
only:
|
|
changes: *elixir-changes
|
|
script:
|
|
- mix format --check-formatted
|
|
|
|
analysis:
|
|
stage: test
|
|
only:
|
|
changes: *elixir-changes
|
|
script:
|
|
- mix credo --strict --only=warnings,todo,fixme,consistency,readability
|
|
|
|
cycles:
|
|
stage: test
|
|
only:
|
|
changes: *elixir-changes
|
|
script:
|
|
- mix xref graph --format cycles --label compile | awk '{print $0} END{exit ($0 != "No cycles found")}'
|
|
|
|
# Deploy with Dokku
|
|
# https://github.com/dokku/gitlab-ci
|
|
# https://github.com/dokku/ci-docker-image
|
|
review:
|
|
image: dokku/ci-docker-image
|
|
stage: test
|
|
environment:
|
|
name: review/$CI_COMMIT_REF_NAME
|
|
url: https://rebased-$CI_COMMIT_REF_SLUG.dokku.soapbox.pub
|
|
only:
|
|
- branches
|
|
except:
|
|
- develop
|
|
variables:
|
|
GIT_REMOTE_URL: ssh://dokku@$DOKKU_HOST/rebased-$CI_COMMIT_REF_SLUG
|
|
GIT_PUSH_FLAGS: --force
|
|
script: dokku-deploy
|
|
allow_failure: true
|
|
|
|
release:
|
|
stage: deploy
|
|
variables:
|
|
MIX_ENV: prod
|
|
PLEROMA_BUILD_BRANCH: $CI_COMMIT_REF_NAME
|
|
script:
|
|
- mix deps.get
|
|
- mkdir release
|
|
- mix release --path release
|
|
artifacts:
|
|
name: "rebased-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA-$CI_JOB_NAME"
|
|
paths:
|
|
- release/*
|
|
cache: {}
|
|
only:
|
|
refs:
|
|
- develop
|
|
changes: *elixir-changes
|
|
|
|
docker:
|
|
stage: deploy
|
|
image: docker:20.10.17
|
|
cache: {}
|
|
services:
|
|
- docker:20.10.17-dind
|
|
tags:
|
|
- dind
|
|
# 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
|
|
- docker build -t $CI_REGISTRY_IMAGE .
|
|
- docker push $CI_REGISTRY_IMAGE
|
|
only:
|
|
refs:
|
|
- develop
|