git.iko.soy/typeable/octopod
on iko/CI help sign in
typeable/octopod/dev/default.nix
188 lines 4.7 kB history raw
1{ pkgs ? hsPkgs.pkgs
2, sources ? import ../nix/sources.nix
3, nix-filter ? import sources.nix-filter
4, hsPkgs ? import ./.. { inherit prod system; }
5, migrations ? ../migrations
6, octopod-css ? import ../octopod-css { inherit pkgsSrc; }
7, pkgsSrc ? hsPkgs.pkgsSrc
8, prod ? false
9, system ? builtins.currentSystem
10}:
11let frontendConfig = pkgs.writeTextDir "config.json" ''
12 {
13 "app_url": "http://localhost:8000",
14 "ws_url": "ws://localhost:4020",
15 "app_auth": "",
16 "kubernetes_dashboard_url_template": "https://echo-url.github.io/#"
17 }
18'';
19in
21 frontend =
22 let
23 frontend = hsPkgs.octopod-frontend-pretty;
25 caddyConfig = pkgs.writeText "caddy-config" ''
26 http://localhost:8000
28 header Cache-Control no-cache
30 reverse_proxy /api/* localhost:3002
32 file_server /config.json {
33 root ${frontendConfig}
34 }
36 file_server {
37 root ${frontend}
38 }
40 log {
41 output stdout
42 format single_field common_log
43 }
44 '';
46 caddyRun = pkgs.writeScript "run-caddy.sh" ''
47 #!${pkgs.bash}/bin/bash
49 ${pkgs.caddy}/bin/caddy run --config ${caddyConfig} --adapter caddyfile
50 '';
51 in
52 caddyRun;
54 caddyForGhcid =
55 let
56 caddyConfig = pkgs.writeText "caddy-config" ''
57 http://localhost:8000
59 header Cache-Control no-cache
61 reverse_proxy /api/* localhost:3002
63 @notStatic {
64 not file {
65 root ${octopod-css}
66 }
67 not path /config.json
68 }
70 reverse_proxy @notStatic localhost:3003
72 file_server /config.json {
73 root ${frontendConfig}
74 }
76 file_server {
77 root ${octopod-css}
78 }
80 log {
81 output stdout
82 format single_field common_log
83 }
84 '';
86 caddyRun = pkgs.writeScript "run-caddy.sh" ''
87 #!${pkgs.bash}/bin/bash
89 ${pkgs.caddy}/bin/caddy run --config ${caddyConfig} --adapter caddyfile
90 '';
91 in
92 caddyRun;
94 backend =
95 let
96 echoScript = pkgs.writeScript "echo.sh" ''
97 #!${pkgs.bash}/bin/bash
99 echo $0 $@
100 exit 0
101 '';
103 failScript = pkgs.writeScript "fail.sh" ''
104 #!${pkgs.bash}/bin/bash
106 echo "You did something wrong :("
108 1>&2 echo "You did something wrong, but you shouldn't see this."
110 exit 1
111 '';
113 infoScript = pkgs.writeScript "info.sh" ''
114 #!${pkgs.bash}/bin/bash
116 sleep 4
118 for i in {1..10}
119 do
120 echo "key$i,value"
121 done
123 exit 0
124 '';
126 keysScript = pkgs.writeScript "keys.sh" ''
127 #!${pkgs.bash}/bin/bash
129 sleep 4
131 for i in {1..10}
132 do
133 echo "key$i"
134 done
136 exit 0
137 '';
139 writeScript = pkgs.writeScript "write.sh" ''
140 #!${pkgs.bash}/bin/bash
142 #!/bin/bash
144 echo $0 $@ >> ./tmp/calls.txt
145 exit 0
146 '';
148 runBackend = pkgs.writeScript "run-backend.sh" ''
149 #!${pkgs.bash}/bin/bash
151 ${pkgs.sqitchPg}/bin/sqitch deploy --chdir ${migrations} -t postgresql://octopod:octopod@localhost:5432/octopod
153 export PROJECT_NAME="Example Project"
154 export BASE_DOMAIN=octopod.example.com
155 export NAMESPACE=deployment
156 export ARCHIVE_RETENTION=60
157 export STATUS_UPDATE_TIMEOUT=600
158 export CREATION_COMMAND=${echoScript}
159 export UPDATE_COMMAND=${echoScript}
160 export UPDATE_ENVS_COMMAND=${echoScript}
161 export ARCHIVE_COMMAND=${echoScript}
162 export CHECKING_COMMAND=${echoScript}
163 export CLEANUP_COMMAND=${echoScript}
164 export ARCHIVE_CHECKING_COMMAND=${echoScript}
165 export CONFIG_CHECKING_COMMAND=${echoScript}
166 export INFO_COMMAND=${infoScript}
167 export NOTIFICATION_COMMAND=${writeScript}
168 export DEPLOYMENT_CONFIG_COMMAND=${infoScript}
169 export DEPLOYMENT_KEYS_COMMAND=${keysScript}
170 export APPLICATION_CONFIG_COMMAND=${infoScript}
171 export APPLICATION_KEYS_COMMAND=${keysScript}
172 export UNARCHIVE_COMMAND=${writeScript}
173 export POWER_AUTHORIZATION_HEADER="123"
174 export CACHE_INVALIDATION_TIME="60"
175 export CACHE_UPDATE_TIME="20"
176 export CONTROL_SCRIPT_TIMEOUT="10"
177 export DEBUG=true
178 export PROD_LOGS=false
179 ${hsPkgs.octopod-backend.components.exes.octopod-exe}/bin/octopod-exe \
180 --port 4443 \
181 --ui-port 3002 \
182 --ws-port 4020 \
183 --db "host='127.0.0.1' port=5432 user='octopod' password='octopod'" \
184 --db-pool-size 10
185 '';
186 in
187 runBackend;