generated from rajrajhans/phoenix-elixir-nix-starter
-
Notifications
You must be signed in to change notification settings - Fork 3
156 lines (135 loc) · 5.2 KB
/
ci.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
name: "CI"
on:
push:
branches: [main]
pull_request:
branches: [develop, main]
env:
MIX_ENV: test
ENV: test
jobs:
dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: set elixir and otp version
id: hex-info
shell: bash
run: |
ELIXIR_VERSION=$(nix-shell shell.nix --run "mix hex.info" | sed -n 2p | awk '{print $2}')
OTP_VERSION=$(nix-shell shell.nix --run "mix hex.info" | sed -n 3p | awk '{print $2}')
echo Elixir: $ELIXIR_VERSION
echo OTP: $OTP_VERSION
echo "::set-output name=otp-version::$OTP_VERSION"
echo "::set-output name=elixir-version::$ELIXIR_VERSION"
- name: Retrieve Mix Dependencies Cache
uses: actions/cache@v2
id: mix-cache
with:
path: |
deps
_build
key: my-random-cache-key-1234-${{ runner.os }}-${{ steps.hex-info.outputs.otp-version }}-${{ steps.hex-info.outputs.elixir-version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Install Mix Dependencies
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
nix-shell shell.nix --run 'run release'
lint:
needs: dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: set elixir and otp version
id: hex-info
shell: bash
run: |
ELIXIR_VERSION=$(nix-shell shell.nix --run "mix hex.info" | sed -n 2p | awk '{print $2}')
OTP_VERSION=$(nix-shell shell.nix --run "mix hex.info" | sed -n 3p | awk '{print $2}')
echo Elixir: $ELIXIR_VERSION
echo OTP: $OTP_VERSION
echo "::set-output name=otp-version::$OTP_VERSION"
echo "::set-output name=elixir-version::$ELIXIR_VERSION"
- name: Retrieve Mix Dependencies Cache
uses: actions/cache@v2
id: mix-cache
with:
path: |
deps
_build
key: my-random-cache-key-1234-${{ runner.os }}-${{ steps.hex-info.outputs.otp-version }}-${{ steps.hex-info.outputs.elixir-version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Check Formatting
run: nix-shell shell.nix --run 'run format.check'
- name: Restore PLT cache
uses: actions/cache@v2
id: plt_cache
with:
key: |
${{ runner.os }}-${{ steps.hex-info.outputs.elixir-version }}-${{ steps.hex-info.outputs.otp-version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}-plt
restore-keys: |
${{ runner.os }}-${{ steps.hex-info.outputs.elixir-version }}-${{ steps.hex-info.outputs.otp-version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}-plt
path: |
priv/plts
# Create PLTs if no cache was found
- name: Create PLTs
if: steps.plt_cache.outputs.cache-hit != 'true'
run: |
mkdir -p priv/plts
nix-shell shell.nix --run 'run mix dialyzer --plt'
- name: Run credo & dialyzer
run: nix-shell shell.nix --run 'run lint.all'
test:
needs: dependencies
runs-on: ubuntu-latest
services:
postgres:
image: postgres:14
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: media_search_demo_test
ports:
- 5432/tcp
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: set elixir and otp version
id: hex-info
shell: bash
run: |
ELIXIR_VERSION=$(nix-shell shell.nix --run "mix hex.info" | sed -n 2p | awk '{print $2}')
OTP_VERSION=$(nix-shell shell.nix --run "mix hex.info" | sed -n 3p | awk '{print $2}')
echo Elixir: $ELIXIR_VERSION
echo OTP: $OTP_VERSION
echo "::set-output name=otp-version::$OTP_VERSION"
echo "::set-output name=elixir-version::$ELIXIR_VERSION"
- name: Retrieve Mix Dependencies Cache
uses: actions/cache@v2
id: mix-cache
with:
path: |
deps
_build
key: my-random-cache-key-1234-${{ runner.os }}-${{ steps.hex-info.outputs.otp-version }}-${{ steps.hex-info.outputs.elixir-version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Install Mix Dependencies
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
nix-shell shell.nix --run 'run release'
- name: Run Tests
run: |
nix-shell shell.nix --run 'run test.migration'
nix-shell shell.nix --run 'run test.ci'
env:
DATABASE_URL: postgresql://postgres:postgres@localhost:${{job.services.postgres.ports[5432]}}/media_search_demo_test