♻️ Refactor on docker and build scripts.

- Migrate to from ubuntu to debian.
- Add new buildenv image.
- Remove production images building from this repo.
- Better comaptibility with other architectures (arm64).
- Improved config management.
This commit is contained in:
Andrey Antukh 2020-01-20 13:03:01 +01:00
parent 655c7ae023
commit f57ce57cb3
26 changed files with 400 additions and 5348 deletions

View file

@ -1,20 +1,19 @@
const gulp = require("gulp");
const scss = require("gulp-sass");
const autoprefixer = require('gulp-autoprefixer');
const rimraf = require("rimraf");
const mustache = require("gulp-mustache");
const rename = require("gulp-rename");
const gulpif = require("gulp-if");
const gzip = require("gulp-gzip");
const cleancss = require("gulp-clean-css");
const fs = require("fs");
const gulp = require("gulp");
const gulpif = require("gulp-if");
const gzip = require("gulp-gzip");
const l = require("lodash");
const mustache = require("gulp-mustache");
const rename = require("gulp-rename");
const rimraf = require("rimraf");
const scss = require("gulp-sass");
const paths = {};
paths.app = "./resources/";
paths.output = "./resources/public/";
paths.dist = "./dist/";
paths.target = "./target/";
paths.dist = "./target/dist/";
paths.scss = paths.app + "styles/**/*.scss";
/***********************************************
@ -34,10 +33,7 @@ gulp.task("dist:clean", function(next) {
});
function makeAutoprefixer() {
return autoprefixer('last 2 version',
'safari 5',
'ios 6',
'android 4');
return autoprefixer('last 2 version');
}
@ -74,12 +70,12 @@ gulp.task("scss:main", scssPipeline({
output: paths.output + "css/"
}));
gulp.task("scss:view", scssPipeline({
input: paths.app + "styles/view.scss",
output: paths.output + "css/"
}));
// gulp.task("scss:view", scssPipeline({
// input: paths.app + "styles/view.scss",
// output: paths.output + "css/"
// }));
gulp.task("scss", gulp.parallel("scss:main", "scss:view"));
gulp.task("scss", gulp.parallel("scss:main"));
function readLocales() {
const path = __dirname + "/resources/locales.json";
@ -125,12 +121,12 @@ gulp.task("template:main", templatePipeline({
output: paths.output
}));
gulp.task("template:view", templatePipeline({
input: paths.app + "templates/view.mustache",
output: paths.output + "view/"
}));
// gulp.task("template:view", templatePipeline({
// input: paths.app + "templates/view.mustache",
// output: paths.output + "view/"
// }));
gulp.task("templates", gulp.parallel("template:view", "template:main"));
gulp.task("templates", gulp.parallel("template:main"));
// Entry Point
@ -157,16 +153,16 @@ gulp.task("dist:clean", function(next) {
// Templates
gulp.task("dist:template:main", templatePipeline({
input: paths.app + "index.mustache",
input: paths.app + "templates/index.mustache",
output: paths.dist,
}));
gulp.task("dist:template:view", templatePipeline({
input: paths.app + "view.mustache",
output: paths.dist + "view/",
}));
// gulp.task("dist:template:view", templatePipeline({
// input: paths.app + "view.mustache",
// output: paths.dist + "view/",
// }));
gulp.task("dist:templates", gulp.parallel("dist:template:view", "dist:template:main"));
gulp.task("dist:templates", gulp.parallel("dist:template:main"));
// Styles
@ -175,12 +171,12 @@ gulp.task("dist:scss:main", scssPipeline({
output: paths.dist + "css/"
}));
gulp.task("dist:scss:view", scssPipeline({
input: paths.app + "styles/view.scss",
output: paths.dist + "css/"
}));
// gulp.task("dist:scss:view", scssPipeline({
// input: paths.app + "styles/view.scss",
// output: paths.dist + "css/"
// }));
gulp.task("dist:scss", gulp.parallel("dist:scss:main", "dist:scss:view"));
gulp.task("dist:scss", gulp.parallel("dist:scss:main"));
// Copy

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>UXBOX - The Open-Source prototyping tool</title>
<link href="/css/main.css?ts={{& ts}}" rel="stylesheet" type="text/css" />
<link href="css/main.css?ts={{& ts}}" rel="stylesheet" type="text/css" />
<link rel="icon" href="/images/favicon.png" />
</head>
<body>
@ -13,8 +13,8 @@
<section id="loader"></section>
<section id="modal"></section>
<script src="/js/cljs_base.js?ts={{& ts}}"></script>
<script src="/js/main.js?ts={{& ts}}"></script>
<script src="js/cljs_base.js?ts={{& ts}}"></script>
<script src="js/main.js?ts={{& ts}}"></script>
<script>uxbox.main.init({{& tr }})</script>
</body>
</html>

16
frontend/scripts/build-app.sh Executable file
View file

@ -0,0 +1,16 @@
#!/usr/bin/env bash
source ~/.bashrc
export NODE_ENV=production;
set -ex
npx gulp dist:clean || exit 1;
npx gulp dist || exit 1;
cp -r ./target/dist ./target/dist2
mv ./target/dist2 ./target/dist/dbg
clojure -Adev tools.clj dist:all || exit 1;
npx gulp dist:gzip || exit 1;

View file

@ -1,13 +0,0 @@
#!/usr/bin/env bash
source ~/.bashrc
set -ex
npm ci
npx gulp dist:clean || exit 1
npx gulp dist || exit 1
clojure -Adev tools.clj dbg-dist:all || exit 1
npx gulp dist:gzip || exit 1

View file

@ -1,16 +0,0 @@
#!/usr/bin/env bash
source ~/.bashrc
set -ex
npm ci
export NODE_ENV=production;
npx gulp dist:clean || exit 1;
npx gulp dist || exit 1;
clojure -Adev tools.clj dist:all || exit 1
npx gulp dist:gzip || exit 1

View file

@ -26,7 +26,7 @@
;; This excludes webworker instantiation on nodejs where
;; the tests are run.
(when (not= *target* "nodejs")
(defonce worker (uw/init "/js/worker.js")))
(defonce worker (uw/init "js/worker.js")))
(defn align-point
[point]

View file

@ -43,7 +43,7 @@
:anon-fn-naming-policy :mapped
:optimizations :none
:infer-externs true
:verbose false
:verbose true
:source-map true
:static-fns false
:pretty-print true
@ -63,9 +63,9 @@
:asset-path "/js"
:modules {:main {:entries #{"uxbox.main"}
:output-to "resources/public/js/main.js"}
:view {:entries #{"uxbox.view"}
:output-to "resources/public/js/view.js"
}}})
;; :view {:entries #{"uxbox.view"}
;; :output-to "resources/public/js/view.js"}
}})
(def worker-build-options
{:main 'uxbox.worker
@ -78,36 +78,42 @@
(-> (merge default-build-options
main-build-options
dist-build-options)
(assoc :output-dir "dist/js")
(assoc-in [:modules :main :output-to] "dist/js/main.js")
(assoc-in [:modules :view :output-to] "dist/js/view.js")))
(assoc :output-dir "target/dist/js/")
(assoc-in [:modules :main :output-to] "target/dist/js/main.js")
#_(assoc-in [:modules :view :output-to] "target/dist/js/view.js")))
(def main-dbg-dist-build-options
(merge main-dist-build-options
{:optimizations :advanced
:pseudo-names true
:pretty-print true}))
(def main-dist-dbg-build-options
(-> (merge main-dist-build-options
{:optimizations :advanced
:pseudo-names true
:pretty-print true})
(assoc :output-dir "target/dist/dbg/js/")
(assoc-in [:modules :main :output-to] "target/dist/dbg/js/main.js")
#_(assoc-in [:modules :view :output-to] "target/dist/dbg/js/view.js")))
(def worker-dist-build-options
(merge default-build-options
worker-build-options
dist-build-options
{:output-to "dist/js/worker.js"
:output-dir "dist/js/worker"
:source-map "dist/js/worker.js.map"}))
{:output-to "target/dist/js/worker.js"
:output-dir "target/dist/js/worker"
:source-map "target/dist/js/worker.js.map"}))
(def worker-dbg-dist-build-options
(def worker-dist-dbg-build-options
(merge worker-dist-build-options
{:optimizations :advanced
:pseudo-names true
:pretty-print true}))
:pretty-print true
:output-to "target/dist/dbg/js/worker.js"
:output-dir "target/dist/dbg/js/worker"
:source-map "target/dist/dbg/js/worker.js.map"}))
;; --- Tasks Definitions
(defmethod task "dist:main"
[args]
(let [cfg main-dist-build-options]
(pprint cfg)
;; (pprint cfg)
(api/build (api/inputs "src") cfg)))
(defmethod task "dist:worker"
@ -116,27 +122,24 @@
;; (pprint cfg)
(api/build (api/inputs "src") cfg)))
(defmethod task "dbg-dist:main"
(defmethod task "dist-dbg:main"
[args]
(let [cfg main-dbg-dist-build-options]
(let [cfg main-dist-dbg-build-options]
;; (pprint cfg)
(api/build (api/inputs "src") cfg)))
(defmethod task "dbg-dist:worker"
(defmethod task "dist-dbg:worker"
[args]
(let [cfg worker-dbg-dist-build-options]
(let [cfg worker-dist-dbg-build-options]
;; (pprint cfg)
(api/build (api/inputs "src") cfg)))
(defmethod task "dist:all"
[args]
(task ["dist:main"])
(task ["dist:worker"]))
(defmethod task "dbg-dist:all"
[args]
(task ["dbg-dist:main"])
(task ["dbg-dist:worker"]))
(task ["dist:worker"])
(task ["dist-dbg:main"])
(task ["dist-dbg:worker"]))
(defmethod task "repl:node"
[args]
@ -157,7 +160,7 @@
(api/build (api/inputs "src" "test")
(assoc default-build-options
:main 'uxbox.tests.main
:verbose false
:verbose true
:target :nodejs
:source-map true
:output-to "target/tests/main.js"