Add automatic doc build and deploy
[akkoma] / .gitlab-ci.yml
1 image: elixir:1.8.1
2
3 services:
4 - name: postgres:9.6.2
5 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
6
7 variables:
8 POSTGRES_DB: pleroma_test
9 POSTGRES_USER: postgres
10 POSTGRES_PASSWORD: postgres
11 DB_HOST: postgres
12 MIX_ENV: test
13
14 cache:
15 key: ${CI_COMMIT_REF_SLUG}
16 paths:
17 - deps
18 - _build
19 stages:
20 - lint
21 - test
22 - analysis
23 - docs_build
24 - docs_deploy
25
26 before_script:
27 - mix local.hex --force
28 - mix local.rebar --force
29 - mix deps.get
30 - mix compile --force
31 - mix ecto.create
32 - mix ecto.migrate
33
34 lint:
35 stage: lint
36 script:
37 - mix format --check-formatted
38
39 unit-testing:
40 stage: test
41 script:
42 - mix test --trace --preload-modules
43
44 analysis:
45 stage: analysis
46 script:
47 - mix credo --strict --only=warnings,todo,fixme,consistency,readability
48
49 docs_build:
50 stage: docs_build
51 only:
52 - master@pleroma/pleroma
53 - develop@pleroma/pleroma
54 variables:
55 MIX_ENV: dev
56 before_script:
57 - mix local.hex --force
58 - mix local.rebar --force
59 - mix deps.get
60 - mix compile
61 script:
62 - mix docs
63 artifacts:
64 paths:
65 - priv/static/doc
66
67 docs_deploy:
68 stage: docs_deploy
69 image: alpine:3.9
70 only:
71 - master@pleroma/pleroma
72 - develop@pleroma/pleroma
73 before_script:
74 - apk update && apk add openssh-client rsync
75 script:
76 - echo ${CI_COMMIT_REF_NAME}
77 - mkdir -p ~/.ssh
78 - echo "${SSH_HOST_KEY}" > ~/.ssh/known_hosts
79 - eval $(ssh-agent -s)
80 - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
81 - rsync -hrvz --delete -e "ssh -p ${SSH_PORT}" priv/static/doc/ "${SSH_USER_HOST_LOCATION}/${CI_COMMIT_REF_NAME}"