X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=.gitlab-ci.yml;h=b34c7e98d524fdebd8cb17a35bd96b46050a59fc;hb=2ef8f0be6c1d852be1b91690e0702c69a225c147;hp=d915ebae93aee674b13325d9657fbb6b8102fb39;hpb=3c0abfca53751624ebd6ea7174ee880d9e7b29e7;p=akkoma diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d915ebae9..b34c7e98d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,23 +1,29 @@ image: elixir:1.8.1 -variables: +variables: &global_variables POSTGRES_DB: pleroma_test POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres DB_HOST: postgres MIX_ENV: test + DOCKER_DRIVER: overlay2 + DOCKER_HOST: unix:///var/run/docker.sock + DOCKER_IMAGE: $CI_REGISTRY_IMAGE:latest + DOCKER_IMAGE_SHA: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA -cache: +cache: &global_cache_policy key: ${CI_COMMIT_REF_SLUG} paths: - - deps - - _build + - deps + - _build + stages: - build - test - benchmark - deploy - release + - docker before_script: - mix local.hex --force @@ -31,6 +37,7 @@ build: benchmark: stage: benchmark + when: manual variables: MIX_ENV: benchmark services: @@ -45,6 +52,10 @@ benchmark: unit-testing: stage: test + cache: &testing_cache_policy + <<: *global_cache_policy + policy: pull + services: - name: postgres:9.6 alias: postgres @@ -53,36 +64,55 @@ unit-testing: - mix deps.get - mix ecto.create - mix ecto.migrate - - mix coveralls --trace --preload-modules + - mix coveralls --preload-modules + +federated-testing: + stage: test + cache: *testing_cache_policy + services: + - name: minibikini/postgres-with-rum:12 + 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 + - epmd -daemon + - mix test --trace --only federated unit-testing-rum: stage: test + cache: *testing_cache_policy services: - name: minibikini/postgres-with-rum:12 alias: postgres command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] variables: + <<: *global_variables RUM_ENABLED: "true" script: - mix deps.get - mix ecto.create - mix ecto.migrate - "mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/" - - mix test --trace --preload-modules + - mix test --preload-modules lint: stage: test + cache: *testing_cache_policy script: - mix format --check-formatted analysis: stage: test + cache: *testing_cache_policy script: - mix deps.get - mix credo --strict --only=warnings,todo,fixme,consistency,readability docs-deploy: stage: deploy + cache: *testing_cache_policy image: alpine:latest only: - stable@pleroma/pleroma @@ -240,3 +270,20 @@ arm64-musl: variables: *release-variables before_script: *before-release-musl script: *release + +docker: + stage: docker + image: docker:latest + tags: + - dind + before_script: &before-docker + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - export CI_JOB_TIMESTAMP=$(date --utc -Iseconds) + - export CI_VCS_REF=$CI_COMMIT_SHORT_SHA + script: + - docker pull $DOCKER_IMAGE || true + - docker build --cache-from $DOCKER_IMAGE --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $DOCKER_IMAGE_SHA -t $DOCKER_IMAGE . + - docker push $DOCKER_IMAGE_SHA + - docker push $DOCKER_IMAGE + only: + - develop