on master help sign in
refactor on 20200510
a5c3f0bHugh JF Chen
ci/DevOps/local/test/build/build.sh+1−1
@@ -23,7 +23,7 @@ if [ -f ${SCRIPT_ABS_PATH}/nix/project-m36.nix ]; then
23 else
23 else
24 #nix-shell --run "cd ${SCRIPT_ABS_PATH}/../../../../.. ; cabal new-update ; cabal new-clean ; cabal new-test" ${SCRIPT_ABS_PATH}/nix/shell.nix
24 #nix-shell --run "cd ${SCRIPT_ABS_PATH}/../../../../.. ; cabal new-update ; cabal new-clean ; cabal new-test" ${SCRIPT_ABS_PATH}/nix/shell.nix
25 #nix-shell --run "cd ${SCRIPT_ABS_PATH}/../../../../.. ; cabal new-clean" ${SCRIPT_ABS_PATH}/nix/shell.nix
25 #nix-shell --run "cd ${SCRIPT_ABS_PATH}/../../../../.. ; cabal new-clean" ${SCRIPT_ABS_PATH}/nix/shell.nix
26− nix-build -A project-m36-server-docker -A project-m36-websocket-server-docker -A project-m36-tutd-docker ${SCRIPT_ABS_PATH}/nix/default.nix
26+ nix-build -A project-m36-docker ${SCRIPT_ABS_PATH}/nix/default.nix
27 fi
27 fi
28else
28else
29 info "No ${SCRIPT_ABS_PATH}/nix/project-m36.nix found, skip building"
29 info "No ${SCRIPT_ABS_PATH}/nix/project-m36.nix found, skip building"
ci/DevOps/local/test/build/nix/default.nix+23−123
@@ -238,136 +238,40 @@ divert 258 DIVERT # Divert pseudo-protocol
238 '';
238 '';
239 };
239 };
240
240
241− overrideCabal = drv: f: (drv.override (args: args // {
242− mkDerivation = drv: (args.mkDerivation drv).override f;
243− })) // {
244− overrideScope = scope: overrideCabal (drv.overrideScope scope) f;
245− };
246−
247− static-project-m36-server = drv: overrideCabal drv (drv: {
248− postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc $out/bin/Example* $out/bin/tutd $out/bin/bigrel $out/bin/handles $out/bin/project-m36-websocket-server";
249− });
250−
251− static-project-m36-websocket-server = drv: overrideCabal drv (drv: {
252− postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc $out/bin/Example* $out/bin/tutd $out/bin/bigrel $out/bin/handles $out/bin/project-m36-server";
253− });
254−
255− static-project-m36-tutd = drv: overrideCabal drv (drv: {
256− postFixup = "rm -rf $out/lib $out/nix-support $out/share/doc $out/bin/Example* $out/bin/project-m36-server $out/bin/bigrel $out/bin/handles $out/bin/project-m36-websocket-server";
257− });
258−
259− static-project-m36-example = drv: overrideCabal drv (drv: {
260− postFixup = "rm -fr $out/lib $out/nix-support $out/share/doc $out/bin/tutd $out/bin/bigrel $out/bin/handles $out/bin/project-m36-server $out/bin/project-m36-websocket-server";
261− });
262−
263− project-m36-server-docker = pkgs.dockerTools.buildImage {
264− name = "project-m36-server";
265− tag = project-m36.version;
266−
267− contents = [ (static-project-m36-server static-project-m36)
268− project-m36-env ];
269− config = {
270− Env = [
271− "PARA1="
272− "PARA2="
273− ];
274− User = "project-m36";
275− Cmd = [ "${static-project-m36}/bin/project-m36-server" ];
276− ExposedPorts = {
277− "5432/tcp" = {};
278− };
279− WorkingDir = "/data";
280− Volumes = {
281− "/data" = {};
282− };
283− };
284−};
285−
286− project-m36-websocket-server-docker = pkgs.dockerTools.buildImage {
287− name = "project-m36-websocket";
288− tag = project-m36.version;
289−
290− contents = [ (static-project-m36-websocket-server static-project-m36)
291− project-m36-env ];
292− config = {
293− Env = [
294− "PARA1="
295− "PARA2="
296− ];
297− User = "project-m36";
298− Cmd = [ "${static-project-m36}/bin/project-m36-websocket-server" ];
299− ExposedPorts = {
300− "5432/tcp" = {};
301− };
302− WorkingDir = "/data";
303− Volumes = {
304− "/data" = {};
305− };
306− };
307−};
308− project-m36-tutd-docker = pkgs.dockerTools.buildImage {
309− name = "project-m36-tutd";
310− tag = project-m36.version;
311−
312− contents = [ (static-project-m36-tutd static-project-m36)
313− project-m36-env ];
314− config = {
315− Env = [
316− "PARA1="
317− "PARA2="
318− ];
319− User = "project-m36";
320− Cmd = [ "${static-project-m36}/bin/tutd" ];
321− ExposedPorts = {
322− "5432/tcp" = {};
323− };
324− WorkingDir = "/data";
325− Volumes = {
326− "/data" = {};
327− };
328− };
329−};
330− project-m36-example-docker = pkgs.dockerTools.buildImage {
331− name = "project-m36-example";
332− tag = project-m36.version;
333−
334− contents = [ (static-project-m36-example static-project-m36)
335− project-m36-env ];
336− config = {
337− Env = [
338− "PARA1="
339− "PARA2="
340− ];
341− User = "project-m36";
342− Cmd = [ "${static-project-m36}/bin/Example-SimpleClient" ];
343− ExposedPorts = {
344− "5432/tcp" = {};
345− };
346− WorkingDir = "/data";
347− Volumes = {
348− "/data" = {};
349− };
350− };
351−};
352 project-m36-docker = pkgs.dockerTools.buildImage {
241 project-m36-docker = pkgs.dockerTools.buildImage {
353 name = "project-m36";
242 name = "project-m36";
354 tag = project-m36.version;
243 tag = project-m36.version;
355−
244+ created = "now";
245+ # This is a quick and dirty hack to fix the hard-coding architecture
246+ extraCommands = ''
247+ myar=$(uname -m)
248+ case $myar in
249+ aarch64)
250+ cat $out/json | sed 's/"amd64"/"arm64"/g' > $out/json1
251+ cp $out/json1 $out/json
252+ ;;
253+ *) ;;
254+ esac
255+ '';
256+
356 contents = [ static-project-m36
257 contents = [ static-project-m36
357 project-m36-env ];
258 project-m36-env ];
358 config = {
259 config = {
359− Env = [
260+ Env = [
360− "PARA1="
261+ "PATH=${static-project-m36}/bin:$PATH"
361− "PARA2="
262+ "DATABASE=mytestdb"
263+ "DATABASE_DIRECTORY=/var/project-m36/data"
264+ "HOSTNAME=localhost"
265+ "PORT=54321"
362 ];
266 ];
363 User = "project-m36";
267 User = "project-m36";
364− Cmd = [ "${static-project-m36}/bin/project-m36-server" ];
268+ Cmd = [ "project-m36-server" ];
365 ExposedPorts = {
269 ExposedPorts = {
366− "5432/tcp" = {};
270+ "54321/tcp" = {};
367 };
271 };
368− WorkingDir = "/data";
272+ WorkingDir = "/var/project-m36/data";
369 Volumes = {
273 Volumes = {
370− "/data" = {};
274+ "/var/project-m36/data" = {};
371 };
275 };
372 };
276 };
373};
277};
@@ -375,8 +279,4 @@ in {
375 inherit project-m36;
279 inherit project-m36;
376 inherit static-project-m36;
280 inherit static-project-m36;
377 inherit project-m36-docker;
281 inherit project-m36-docker;
378− inherit project-m36-server-docker;
379− inherit project-m36-websocket-server-docker;
380− inherit project-m36-tutd-docker;
381− inherit project-m36-example-docker;
382}
282}
ci/DevOps/local/test/deploy/docker-compose.yml+9−21
@@ -3,31 +3,19 @@
3version: '2'
3version: '2'
4services:
4services:
5 project-m36:
5 project-m36:
6− image: project-m36:0.1.0.0
6+ image: project-m36:0.7
7 ports:
7 ports:
8− - "3000:3000"
8+ - "54321:54321"
9− links:
9+ # links:
10− - depend_service:depend_service
10+ # - depend_service:depend_service
11 user: project-m36
11 user: project-m36
12 environment:
12 environment:
13− PARA1: XXXXX
13+ DATABASE: mytestdb
14− PARA2: YYYYY
14+ DATABASE_DIRECTORY: /var/project-m36/data
15− command: static_project-m36_nix_store_path/bin/project-m36
15+ command: project-m36-server --database $DATABASE --database-directory $DATABASE_DIRECTORY
16 volumes:
16 volumes:
17 - "project-m36_config_path:/var/project-m36/config"
17 - "project-m36_config_path:/var/project-m36/config"
18 - "project-m36_data_path:/var/project-m36/data"
18 - "project-m36_data_path:/var/project-m36/data"
19− depends_on:
19+ # depends_on:
20− - depend_service
21− restart: unless-stopped
22− depend_service:
23− build: depend_service
24− ports:
25− - "5432:5432"
26− user: depend_service
20+ # - depend_service
27− environment:
28− DEPEND_SERVICE_PARA1: ZZZZ
29− command: depend_service
30− volumes:
31− - "depend_service_path:/var/lib/depend_service_path"
32− - "depend_service_data_path:/depend_service_data"
33 restart: unless-stopped
21 restart: unless-stopped
ci/DevOps/local/test/deploy/prepare.sh+6−6
@@ -45,11 +45,11 @@ sudo chown project-m36:project-m36 /var/project-m36/docker-compose-project-m36.y
45sudo sed "s:project-m36_config_path:/var/project-m36/config:g" < /var/project-m36/docker-compose-project-m36.yml.orig | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml.01" project-m36
45sudo sed "s:project-m36_config_path:/var/project-m36/config:g" < /var/project-m36/docker-compose-project-m36.yml.orig | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml.01" project-m36
46sudo sed "s:project-m36_data_path:/var/project-m36/data:g" < /var/project-m36/docker-compose-project-m36.yml.01 | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml" project-m36
46sudo sed "s:project-m36_data_path:/var/project-m36/data:g" < /var/project-m36/docker-compose-project-m36.yml.01 | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml" project-m36
47
47
48−if [ -L ${SCRIPT_ABS_PATH}/../../../../result ]; then
48+# if [ -L ${SCRIPT_ABS_PATH}/../../../../result ]; then
49− project-m36_IMAGE_ID=$(sudo sg docker -c "docker images"|grep -w project-m36|awk '{print $3}')
49+# project-m36_IMAGE_ID=$(sudo sg docker -c "docker images"|grep -w project-m36|awk '{print $3}')
50− cmdPath=$(sudo sg docker -c "docker image inspect ${project-m36_IMAGE_ID}" | grep "/nix/store/" | awk -F"/" '{print "/nix/store/"$4}')
50+# cmdPath=$(sudo sg docker -c "docker image inspect ${project-m36_IMAGE_ID}" | grep "/nix/store/" | awk -F"/" '{print "/nix/store/"$4}')
51− sudo sed "s:static_project-m36_nix_store_path:${cmdPath}:g" < /var/project-m36/docker-compose-project-m36.yml | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml.02" project-m36
51+# sudo sed "s:static_project-m36_nix_store_path:${cmdPath}:g" < /var/project-m36/docker-compose-project-m36.yml | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml.02" project-m36
52− sudo cat /var/project-m36/docker-compose-project-m36.yml.02 | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml" project-m36
52+# sudo cat /var/project-m36/docker-compose-project-m36.yml.02 | sudo su -p -c "dd of=/var/project-m36/docker-compose-project-m36.yml" project-m36
53−fi
53+# fi
54
54
55done_banner "project-m36" "deploy prepare"
55done_banner "project-m36" "deploy prepare"