Loading Pipfile +6 −1 Original line number Diff line number Diff line Loading @@ -5,10 +5,15 @@ name = "pypi" [packages] pelican = "*" "fabric3" = "*" pelican-minification = "*" [dev-packages] [requires] python_version = "3.6" [scripts] build = "pelican --settings publishconf.py" clean = "rm -rf __pycache__/ output/* sitespeed-result/ lighthouse-result/" dev = "pelican --listen --port 8080 --autoreload" publish = "rsync --delete --verbose --times --recursive --compress --checksum output/ nimrod@host01.shore.co.il:/var/www/www.shore.co.il/blog/" Pipfile.lock +1 −126 Original line number Diff line number Diff line { "_meta": { "hash": { "sha256": "119959021872ee07af13ffcd6190f06f366833af53825a10fcbe23801b00c3a2" "sha256": "4616ef5f2497b0e3287bac972b29bd2d5b5bbe9d93dc18744dac5f6038c0a161" }, "pipfile-spec": 6, "requires": { Loading @@ -16,92 +16,12 @@ ] }, "default": { "bcrypt": { "hashes": [ "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29", "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7", "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34", "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55", "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6", "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1", "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d" ], "version": "==3.2.0" }, "blinker": { "hashes": [ "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" ], "version": "==1.4" }, "cffi": { "hashes": [ "sha256:005f2bfe11b6745d726dbb07ace4d53f057de66e336ff92d61b8c7e9c8f4777d", "sha256:09e96138280241bd355cd585148dec04dbbedb4f46128f340d696eaafc82dd7b", "sha256:0b1ad452cc824665ddc682400b62c9e4f5b64736a2ba99110712fdee5f2505c4", "sha256:0ef488305fdce2580c8b2708f22d7785ae222d9825d3094ab073e22e93dfe51f", "sha256:15f351bed09897fbda218e4db5a3d5c06328862f6198d4fb385f3e14e19decb3", "sha256:22399ff4870fb4c7ef19fff6eeb20a8bbf15571913c181c78cb361024d574579", "sha256:23e5d2040367322824605bc29ae8ee9175200b92cb5483ac7d466927a9b3d537", "sha256:2791f68edc5749024b4722500e86303a10d342527e1e3bcac47f35fbd25b764e", "sha256:2f9674623ca39c9ebe38afa3da402e9326c245f0f5ceff0623dccdac15023e05", "sha256:3363e77a6176afb8823b6e06db78c46dbc4c7813b00a41300a4873b6ba63b171", "sha256:33c6cdc071ba5cd6d96769c8969a0531be2d08c2628a0143a10a7dcffa9719ca", "sha256:3b8eaf915ddc0709779889c472e553f0d3e8b7bdf62dab764c8921b09bf94522", "sha256:3cb3e1b9ec43256c4e0f8d2837267a70b0e1ca8c4f456685508ae6106b1f504c", "sha256:3eeeb0405fd145e714f7633a5173318bd88d8bbfc3dd0a5751f8c4f70ae629bc", "sha256:44f60519595eaca110f248e5017363d751b12782a6f2bd6a7041cba275215f5d", "sha256:4d7c26bfc1ea9f92084a1d75e11999e97b62d63128bcc90c3624d07813c52808", "sha256:529c4ed2e10437c205f38f3691a68be66c39197d01062618c55f74294a4a4828", "sha256:6642f15ad963b5092d65aed022d033c77763515fdc07095208f15d3563003869", "sha256:85ba797e1de5b48aa5a8427b6ba62cf69607c18c5d4eb747604b7302f1ec382d", "sha256:8f0f1e499e4000c4c347a124fa6a27d37608ced4fe9f7d45070563b7c4c370c9", "sha256:a624fae282e81ad2e4871bdb767e2c914d0539708c0f078b5b355258293c98b0", "sha256:b0358e6fefc74a16f745afa366acc89f979040e0cbc4eec55ab26ad1f6a9bfbc", "sha256:bbd2f4dfee1079f76943767fce837ade3087b578aeb9f69aec7857d5bf25db15", "sha256:bf39a9e19ce7298f1bd6a9758fa99707e9e5b1ebe5e90f2c3913a47bc548747c", "sha256:c11579638288e53fc94ad60022ff1b67865363e730ee41ad5e6f0a17188b327a", "sha256:c150eaa3dadbb2b5339675b88d4573c1be3cb6f2c33a6c83387e10cc0bf05bd3", "sha256:c53af463f4a40de78c58b8b2710ade243c81cbca641e34debf3396a9640d6ec1", "sha256:cb763ceceae04803adcc4e2d80d611ef201c73da32d8f2722e9d0ab0c7f10768", "sha256:cc75f58cdaf043fe6a7a6c04b3b5a0e694c6a9e24050967747251fb80d7bce0d", "sha256:d80998ed59176e8cba74028762fbd9b9153b9afc71ea118e63bbf5d4d0f9552b", "sha256:de31b5164d44ef4943db155b3e8e17929707cac1e5bd2f363e67a56e3af4af6e", "sha256:e66399cf0fc07de4dce4f588fc25bfe84a6d1285cc544e67987d22663393926d", "sha256:f0620511387790860b249b9241c2f13c3a80e21a73e0b861a2df24e9d6f56730", "sha256:f4eae045e6ab2bb54ca279733fe4eb85f1effda392666308250714e01907f394", "sha256:f92cdecb618e5fa4658aeb97d5eb3d2f47aa94ac6477c6daf0f306c5a3b9e6b1", "sha256:f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591" ], "version": "==1.14.3" }, "cryptography": { "hashes": [ "sha256:21b47c59fcb1c36f1113f3709d37935368e34815ea1d7073862e92f810dc7499", "sha256:451cdf60be4dafb6a3b78802006a020e6cd709c22d240f94f7a0696240a17154", "sha256:4549b137d8cbe3c2eadfa56c0c858b78acbeff956bd461e40000b2164d9167c6", "sha256:48ee615a779ffa749d7d50c291761dc921d93d7cf203dca2db663b4f193f0e49", "sha256:559d622aef2a2dff98a892eef321433ba5bc55b2485220a8ca289c1ecc2bd54f", "sha256:5d52c72449bb02dd45a773a203196e6d4fae34e158769c896012401f33064396", "sha256:65beb15e7f9c16e15934569d29fb4def74ea1469d8781f6b3507ab896d6d8719", "sha256:680da076cad81cdf5ffcac50c477b6790be81768d30f9da9e01960c4b18a66db", "sha256:762bc5a0df03c51ee3f09c621e1cee64e3a079a2b5020de82f1613873d79ee70", "sha256:89aceb31cd5f9fc2449fe8cf3810797ca52b65f1489002d58fe190bfb265c536", "sha256:983c0c3de4cb9fcba68fd3f45ed846eb86a2a8b8d8bc5bb18364c4d00b3c61fe", "sha256:99d4984aabd4c7182050bca76176ce2dbc9fa9748afe583a7865c12954d714ba", "sha256:9d9fc6a16357965d282dd4ab6531013935425d0dc4950df2e0cf2a1b1ac1017d", "sha256:a7597ffc67987b37b12e09c029bd1dc43965f75d328076ae85721b84046e9ca7", "sha256:ab010e461bb6b444eaf7f8c813bb716be2d78ab786103f9608ffd37a4bd7d490", "sha256:b12e715c10a13ca1bd27fbceed9adc8c5ff640f8e1f7ea76416352de703523c8", "sha256:b2bded09c578d19e08bd2c5bb8fed7f103e089752c9cf7ca7ca7de522326e921", "sha256:b372026ebf32fe2523159f27d9f0e9f485092e43b00a5adacf732192a70ba118", "sha256:cb179acdd4ae1e4a5a160d80b87841b3d0e0be84af46c7bb2cd7ece57a39c4ba", "sha256:e97a3b627e3cb63c415a16245d6cef2139cca18bb1183d1b9375a1c14e83f3b3", "sha256:f0e099fc4cc697450c3dd4031791559692dd941a95254cb9aeded66a7aa8b9bc", "sha256:f99317a0fa2e49917689b8cf977510addcfaaab769b3f899b9c481bbd76730c2" ], "version": "==3.1.1" }, "csscompressor": { "hashes": [ "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05" Loading @@ -115,14 +35,6 @@ ], "version": "==0.16" }, "fabric3": { "hashes": [ "sha256:647e485ec83f30b587862f92374d6affc217f3d79819d1d7f512e42e7ae51e81", "sha256:7c5a5f2eb3079eb6bd2a69931f1ca298844c730ce3fdc68111db16e8857a0408" ], "index": "pypi", "version": "==1.14.post1" }, "feedgenerator": { "hashes": [ "sha256:a28a5add781509390d1a6a52d017829853ee4bef1d2e7b4d5da0e9d1b395ce54", Loading Loading @@ -181,13 +93,6 @@ ], "version": "==1.1.1" }, "paramiko": { "hashes": [ "sha256:4f3e316fef2ac628b05097a637af35685183111d4bc1b5979bd397c2ab7b5898", "sha256:7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035" ], "version": "==2.7.2" }, "pelican": { "hashes": [ "sha256:2c5c721bc95caa406673d74a5b906f42289930dabee598b41930a18cf98742a5", Loading @@ -203,13 +108,6 @@ "index": "pypi", "version": "==0.1.1" }, "pycparser": { "hashes": [ "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" ], "version": "==2.20" }, "pygments": { "hashes": [ "sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998", Loading @@ -217,29 +115,6 @@ ], "version": "==2.7.1" }, "pynacl": { "hashes": [ "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4", "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4", "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574", "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d", "sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634", "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25", "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f", "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505", "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122", "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7", "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420", "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f", "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96", "sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6", "sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6", "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514", "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff", "sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80" ], "version": "==1.4.0" }, "python-dateutil": { "hashes": [ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", Loading README.md +21 −14 Original line number Diff line number Diff line Loading @@ -6,28 +6,35 @@ - Python 3.6 - [Pipenv](https://pipenv.org) - [Docker](https://www.docker.com/) (Only needed for running the lighthouse and sitespeed tests) - [direnv](http://direnv.net/) (Just for ease of use) - rsync ## Usage All tasks are done via `fab` using `pipenv` Serve a development version of the blog at http://localhost:8080/ ``` pipenv run dev ``` pipenv run $ fab -l Available commands: build Build local version of site clean Remove generated files dev Auto-regenerate files and serve at http://localhost:8080/ lighthouse Run Chrome's Lighthouse report against the local dev server preview Build production version of site publish Publish to production via rsync regenerate Automatically regenerate site upon file modification serve Serve site at http://localhost:8080/ sitespeed Run sitespeed test against the local dev server Build a production version of the blog at `output/` ``` pipenv run build ``` Publish the blog (sync to server, requires running `pipenv run build` beforehand) ``` pipenv run publish ``` Delete the outputed files ``` pipenv run clean ``` ## License Loading fabfile.pydeleted 100644 → 0 +0 −88 Original line number Diff line number Diff line from fabric.api import lcd, env, local, hosts, warn_only import fabric.contrib.project as project import multiprocessing import os env.use_ssh_config = True # Local path configuration (can be absolute or relative to fabfile) env.deploy_path = 'output' DEPLOY_PATH = env.deploy_path # Remote server configuration production = 'host01.shore.co.il' dest_path = '/var/www/www.shore.co.il/blog/' UID = os.getuid() def clean(): """Remove generated files""" local(f'rm -rf __pycache__/ {DEPLOY_PATH}/* sitespeed-result/ lighthouse-result/') def build(): """Build local version of site""" local('pelican -s pelicanconf.py') def regenerate(): """Automatically regenerate site upon file modification""" local('pelican -D -r -s pelicanconf.py') def serve(): """Serve site at http://localhost:8080/""" with lcd(DEPLOY_PATH): local('python -m http.server 8080') def dev(): """Auto-regenerate files and serve at http://localhost:8080/""" server_process = multiprocessing.Process(target=serve, daemon=True) server_process.start() regenerate() server_process.terminate() server_process.join(timeout=3) def preview(): """Build production version of site""" local('pelican -s publishconf.py') @hosts(production) def publish(): """Publish to production via rsync""" preview() project.rsync_project( remote_dir=dest_path, exclude=".DS_Store", local_dir=DEPLOY_PATH.rstrip('/') + '/', delete=True, extra_opts='-c', ) def sitespeed(): """Run sitespeed test against the local dev server""" build() with warn_only(): local('docker run --rm --privileged --net=host gliderlabs/hostlocal') server_process = multiprocessing.Process(target=serve, daemon=True) server_process.start() local(f'docker run --rm --shm-size=1g -u {UID} -v "$PWD:/sitespeed.io" sitespeedio/sitespeed.io http://169.254.255.254:8080/') server_process.terminate() server_process.join(timeout=3) def lighthouse(): """Run Chrome's Lighthouse report against the local dev server""" build() with warn_only(): local('docker run --rm --privileged --net=host gliderlabs/hostlocal') server_process = multiprocessing.Process(target=serve, daemon=True) server_process.start() local('mkdir -p lighthouse-result') local('docker run --rm -u {UID} -v "$PWD/lighthouse-result:/home/chrome/reports" --cap-add=SYS_ADMIN --user=1000 justinribeiro/lighthouse lighthouse --chrome-flags="--headless --no-sandbox --disable-gpu" http://169.254.255.254:8080/') server_process.terminate() server_process.join(timeout=3) Loading
Pipfile +6 −1 Original line number Diff line number Diff line Loading @@ -5,10 +5,15 @@ name = "pypi" [packages] pelican = "*" "fabric3" = "*" pelican-minification = "*" [dev-packages] [requires] python_version = "3.6" [scripts] build = "pelican --settings publishconf.py" clean = "rm -rf __pycache__/ output/* sitespeed-result/ lighthouse-result/" dev = "pelican --listen --port 8080 --autoreload" publish = "rsync --delete --verbose --times --recursive --compress --checksum output/ nimrod@host01.shore.co.il:/var/www/www.shore.co.il/blog/"
Pipfile.lock +1 −126 Original line number Diff line number Diff line { "_meta": { "hash": { "sha256": "119959021872ee07af13ffcd6190f06f366833af53825a10fcbe23801b00c3a2" "sha256": "4616ef5f2497b0e3287bac972b29bd2d5b5bbe9d93dc18744dac5f6038c0a161" }, "pipfile-spec": 6, "requires": { Loading @@ -16,92 +16,12 @@ ] }, "default": { "bcrypt": { "hashes": [ "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29", "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7", "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34", "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55", "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6", "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1", "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d" ], "version": "==3.2.0" }, "blinker": { "hashes": [ "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" ], "version": "==1.4" }, "cffi": { "hashes": [ "sha256:005f2bfe11b6745d726dbb07ace4d53f057de66e336ff92d61b8c7e9c8f4777d", "sha256:09e96138280241bd355cd585148dec04dbbedb4f46128f340d696eaafc82dd7b", "sha256:0b1ad452cc824665ddc682400b62c9e4f5b64736a2ba99110712fdee5f2505c4", "sha256:0ef488305fdce2580c8b2708f22d7785ae222d9825d3094ab073e22e93dfe51f", "sha256:15f351bed09897fbda218e4db5a3d5c06328862f6198d4fb385f3e14e19decb3", "sha256:22399ff4870fb4c7ef19fff6eeb20a8bbf15571913c181c78cb361024d574579", "sha256:23e5d2040367322824605bc29ae8ee9175200b92cb5483ac7d466927a9b3d537", "sha256:2791f68edc5749024b4722500e86303a10d342527e1e3bcac47f35fbd25b764e", "sha256:2f9674623ca39c9ebe38afa3da402e9326c245f0f5ceff0623dccdac15023e05", "sha256:3363e77a6176afb8823b6e06db78c46dbc4c7813b00a41300a4873b6ba63b171", "sha256:33c6cdc071ba5cd6d96769c8969a0531be2d08c2628a0143a10a7dcffa9719ca", "sha256:3b8eaf915ddc0709779889c472e553f0d3e8b7bdf62dab764c8921b09bf94522", "sha256:3cb3e1b9ec43256c4e0f8d2837267a70b0e1ca8c4f456685508ae6106b1f504c", "sha256:3eeeb0405fd145e714f7633a5173318bd88d8bbfc3dd0a5751f8c4f70ae629bc", "sha256:44f60519595eaca110f248e5017363d751b12782a6f2bd6a7041cba275215f5d", "sha256:4d7c26bfc1ea9f92084a1d75e11999e97b62d63128bcc90c3624d07813c52808", "sha256:529c4ed2e10437c205f38f3691a68be66c39197d01062618c55f74294a4a4828", "sha256:6642f15ad963b5092d65aed022d033c77763515fdc07095208f15d3563003869", "sha256:85ba797e1de5b48aa5a8427b6ba62cf69607c18c5d4eb747604b7302f1ec382d", "sha256:8f0f1e499e4000c4c347a124fa6a27d37608ced4fe9f7d45070563b7c4c370c9", "sha256:a624fae282e81ad2e4871bdb767e2c914d0539708c0f078b5b355258293c98b0", "sha256:b0358e6fefc74a16f745afa366acc89f979040e0cbc4eec55ab26ad1f6a9bfbc", "sha256:bbd2f4dfee1079f76943767fce837ade3087b578aeb9f69aec7857d5bf25db15", "sha256:bf39a9e19ce7298f1bd6a9758fa99707e9e5b1ebe5e90f2c3913a47bc548747c", "sha256:c11579638288e53fc94ad60022ff1b67865363e730ee41ad5e6f0a17188b327a", "sha256:c150eaa3dadbb2b5339675b88d4573c1be3cb6f2c33a6c83387e10cc0bf05bd3", "sha256:c53af463f4a40de78c58b8b2710ade243c81cbca641e34debf3396a9640d6ec1", "sha256:cb763ceceae04803adcc4e2d80d611ef201c73da32d8f2722e9d0ab0c7f10768", "sha256:cc75f58cdaf043fe6a7a6c04b3b5a0e694c6a9e24050967747251fb80d7bce0d", "sha256:d80998ed59176e8cba74028762fbd9b9153b9afc71ea118e63bbf5d4d0f9552b", "sha256:de31b5164d44ef4943db155b3e8e17929707cac1e5bd2f363e67a56e3af4af6e", "sha256:e66399cf0fc07de4dce4f588fc25bfe84a6d1285cc544e67987d22663393926d", "sha256:f0620511387790860b249b9241c2f13c3a80e21a73e0b861a2df24e9d6f56730", "sha256:f4eae045e6ab2bb54ca279733fe4eb85f1effda392666308250714e01907f394", "sha256:f92cdecb618e5fa4658aeb97d5eb3d2f47aa94ac6477c6daf0f306c5a3b9e6b1", "sha256:f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591" ], "version": "==1.14.3" }, "cryptography": { "hashes": [ "sha256:21b47c59fcb1c36f1113f3709d37935368e34815ea1d7073862e92f810dc7499", "sha256:451cdf60be4dafb6a3b78802006a020e6cd709c22d240f94f7a0696240a17154", "sha256:4549b137d8cbe3c2eadfa56c0c858b78acbeff956bd461e40000b2164d9167c6", "sha256:48ee615a779ffa749d7d50c291761dc921d93d7cf203dca2db663b4f193f0e49", "sha256:559d622aef2a2dff98a892eef321433ba5bc55b2485220a8ca289c1ecc2bd54f", "sha256:5d52c72449bb02dd45a773a203196e6d4fae34e158769c896012401f33064396", "sha256:65beb15e7f9c16e15934569d29fb4def74ea1469d8781f6b3507ab896d6d8719", "sha256:680da076cad81cdf5ffcac50c477b6790be81768d30f9da9e01960c4b18a66db", "sha256:762bc5a0df03c51ee3f09c621e1cee64e3a079a2b5020de82f1613873d79ee70", "sha256:89aceb31cd5f9fc2449fe8cf3810797ca52b65f1489002d58fe190bfb265c536", "sha256:983c0c3de4cb9fcba68fd3f45ed846eb86a2a8b8d8bc5bb18364c4d00b3c61fe", "sha256:99d4984aabd4c7182050bca76176ce2dbc9fa9748afe583a7865c12954d714ba", "sha256:9d9fc6a16357965d282dd4ab6531013935425d0dc4950df2e0cf2a1b1ac1017d", "sha256:a7597ffc67987b37b12e09c029bd1dc43965f75d328076ae85721b84046e9ca7", "sha256:ab010e461bb6b444eaf7f8c813bb716be2d78ab786103f9608ffd37a4bd7d490", "sha256:b12e715c10a13ca1bd27fbceed9adc8c5ff640f8e1f7ea76416352de703523c8", "sha256:b2bded09c578d19e08bd2c5bb8fed7f103e089752c9cf7ca7ca7de522326e921", "sha256:b372026ebf32fe2523159f27d9f0e9f485092e43b00a5adacf732192a70ba118", "sha256:cb179acdd4ae1e4a5a160d80b87841b3d0e0be84af46c7bb2cd7ece57a39c4ba", "sha256:e97a3b627e3cb63c415a16245d6cef2139cca18bb1183d1b9375a1c14e83f3b3", "sha256:f0e099fc4cc697450c3dd4031791559692dd941a95254cb9aeded66a7aa8b9bc", "sha256:f99317a0fa2e49917689b8cf977510addcfaaab769b3f899b9c481bbd76730c2" ], "version": "==3.1.1" }, "csscompressor": { "hashes": [ "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05" Loading @@ -115,14 +35,6 @@ ], "version": "==0.16" }, "fabric3": { "hashes": [ "sha256:647e485ec83f30b587862f92374d6affc217f3d79819d1d7f512e42e7ae51e81", "sha256:7c5a5f2eb3079eb6bd2a69931f1ca298844c730ce3fdc68111db16e8857a0408" ], "index": "pypi", "version": "==1.14.post1" }, "feedgenerator": { "hashes": [ "sha256:a28a5add781509390d1a6a52d017829853ee4bef1d2e7b4d5da0e9d1b395ce54", Loading Loading @@ -181,13 +93,6 @@ ], "version": "==1.1.1" }, "paramiko": { "hashes": [ "sha256:4f3e316fef2ac628b05097a637af35685183111d4bc1b5979bd397c2ab7b5898", "sha256:7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035" ], "version": "==2.7.2" }, "pelican": { "hashes": [ "sha256:2c5c721bc95caa406673d74a5b906f42289930dabee598b41930a18cf98742a5", Loading @@ -203,13 +108,6 @@ "index": "pypi", "version": "==0.1.1" }, "pycparser": { "hashes": [ "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0", "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705" ], "version": "==2.20" }, "pygments": { "hashes": [ "sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998", Loading @@ -217,29 +115,6 @@ ], "version": "==2.7.1" }, "pynacl": { "hashes": [ "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4", "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4", "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574", "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d", "sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634", "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25", "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f", "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505", "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122", "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7", "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420", "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f", "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96", "sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6", "sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6", "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514", "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff", "sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80" ], "version": "==1.4.0" }, "python-dateutil": { "hashes": [ "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", Loading
README.md +21 −14 Original line number Diff line number Diff line Loading @@ -6,28 +6,35 @@ - Python 3.6 - [Pipenv](https://pipenv.org) - [Docker](https://www.docker.com/) (Only needed for running the lighthouse and sitespeed tests) - [direnv](http://direnv.net/) (Just for ease of use) - rsync ## Usage All tasks are done via `fab` using `pipenv` Serve a development version of the blog at http://localhost:8080/ ``` pipenv run dev ``` pipenv run $ fab -l Available commands: build Build local version of site clean Remove generated files dev Auto-regenerate files and serve at http://localhost:8080/ lighthouse Run Chrome's Lighthouse report against the local dev server preview Build production version of site publish Publish to production via rsync regenerate Automatically regenerate site upon file modification serve Serve site at http://localhost:8080/ sitespeed Run sitespeed test against the local dev server Build a production version of the blog at `output/` ``` pipenv run build ``` Publish the blog (sync to server, requires running `pipenv run build` beforehand) ``` pipenv run publish ``` Delete the outputed files ``` pipenv run clean ``` ## License Loading
fabfile.pydeleted 100644 → 0 +0 −88 Original line number Diff line number Diff line from fabric.api import lcd, env, local, hosts, warn_only import fabric.contrib.project as project import multiprocessing import os env.use_ssh_config = True # Local path configuration (can be absolute or relative to fabfile) env.deploy_path = 'output' DEPLOY_PATH = env.deploy_path # Remote server configuration production = 'host01.shore.co.il' dest_path = '/var/www/www.shore.co.il/blog/' UID = os.getuid() def clean(): """Remove generated files""" local(f'rm -rf __pycache__/ {DEPLOY_PATH}/* sitespeed-result/ lighthouse-result/') def build(): """Build local version of site""" local('pelican -s pelicanconf.py') def regenerate(): """Automatically regenerate site upon file modification""" local('pelican -D -r -s pelicanconf.py') def serve(): """Serve site at http://localhost:8080/""" with lcd(DEPLOY_PATH): local('python -m http.server 8080') def dev(): """Auto-regenerate files and serve at http://localhost:8080/""" server_process = multiprocessing.Process(target=serve, daemon=True) server_process.start() regenerate() server_process.terminate() server_process.join(timeout=3) def preview(): """Build production version of site""" local('pelican -s publishconf.py') @hosts(production) def publish(): """Publish to production via rsync""" preview() project.rsync_project( remote_dir=dest_path, exclude=".DS_Store", local_dir=DEPLOY_PATH.rstrip('/') + '/', delete=True, extra_opts='-c', ) def sitespeed(): """Run sitespeed test against the local dev server""" build() with warn_only(): local('docker run --rm --privileged --net=host gliderlabs/hostlocal') server_process = multiprocessing.Process(target=serve, daemon=True) server_process.start() local(f'docker run --rm --shm-size=1g -u {UID} -v "$PWD:/sitespeed.io" sitespeedio/sitespeed.io http://169.254.255.254:8080/') server_process.terminate() server_process.join(timeout=3) def lighthouse(): """Run Chrome's Lighthouse report against the local dev server""" build() with warn_only(): local('docker run --rm --privileged --net=host gliderlabs/hostlocal') server_process = multiprocessing.Process(target=serve, daemon=True) server_process.start() local('mkdir -p lighthouse-result') local('docker run --rm -u {UID} -v "$PWD/lighthouse-result:/home/chrome/reports" --cap-add=SYS_ADMIN --user=1000 justinribeiro/lighthouse lighthouse --chrome-flags="--headless --no-sandbox --disable-gpu" http://169.254.255.254:8080/') server_process.terminate() server_process.join(timeout=3)