smartcloud 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/MIT-LICENSE +21 -0
- data/README.md +79 -0
- data/bin/runner +20 -0
- data/bin/smartcloud +54 -0
- data/lib/smartcloud.rb +16 -0
- data/lib/smartcloud/boot.rb +93 -0
- data/lib/smartcloud/docker.rb +120 -0
- data/lib/smartcloud/grids/grid-mysql/docker-entrypoint-initdb.d/.keep +0 -0
- data/lib/smartcloud/grids/grid-nginx/fastcgi.conf +9 -0
- data/lib/smartcloud/grids/grid-nginx/nginx.tmpl +373 -0
- data/lib/smartcloud/grids/grid-runner/Dockerfile +27 -0
- data/lib/smartcloud/grids/grid-runner/buildpacks/rails/Dockerfile +30 -0
- data/lib/smartcloud/grids/grid-solr/docker-entrypoint-initdb.d/.keep +0 -0
- data/lib/smartcloud/grids/grid-solr/sunspot/conf/schema.xml +278 -0
- data/lib/smartcloud/grids/grid-solr/sunspot/conf/solrconfig.xml +632 -0
- data/lib/smartcloud/grids/mysql.rb +60 -0
- data/lib/smartcloud/grids/nginx.rb +133 -0
- data/lib/smartcloud/grids/runner.rb +373 -0
- data/lib/smartcloud/grids/solr.rb +92 -0
- data/lib/smartcloud/machine.rb +63 -0
- data/lib/smartcloud/templates/dotsmartcloud/config/environment.rb +13 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-mysql/data/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-nginx/certificates/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-nginx/htpasswd/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-nginx/users.yml +1 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/apps/containers/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/apps/repositories/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/buildpacks/rails/gems/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-runner/pre-receive +13 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/README.txt +77 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_ca.txt +8 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_fr.txt +15 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_ga.txt +5 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/contractions_it.txt +23 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/hyphenations_ga.txt +5 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stemdict_nl.txt +6 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stoptags_ja.txt +420 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ar.txt +125 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_bg.txt +193 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ca.txt +220 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_cz.txt +172 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_da.txt +110 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_de.txt +294 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_el.txt +78 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_en.txt +54 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_es.txt +356 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_eu.txt +99 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_fa.txt +313 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_fi.txt +97 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_fr.txt +186 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ga.txt +110 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_gl.txt +161 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_hi.txt +235 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_hu.txt +211 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_hy.txt +46 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_id.txt +359 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_it.txt +303 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ja.txt +127 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_lv.txt +172 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_nl.txt +119 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_no.txt +194 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_pt.txt +253 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ro.txt +233 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_ru.txt +243 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_sv.txt +133 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_th.txt +119 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/stopwords_tr.txt +212 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/lang/userdict_ja.txt +29 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/managed-schema +1007 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/params.json +20 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/protwords.txt +21 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/solrconfig.xml +1355 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/stopwords.txt +14 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/_default/conf/synonyms.txt +29 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/_rest_managed.json +1 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/_schema_analysis_stopwords_english.json +38 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/_schema_analysis_synonyms_english.json +11 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/README.txt +11 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/kmeans-attributes.xml +19 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/lingo-attributes.xml +24 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/clustering/carrot2/stc-attributes.xml +19 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/currency.xml +67 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/elevate.xml +42 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_ca.txt +8 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_fr.txt +15 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_ga.txt +5 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/contractions_it.txt +23 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/hyphenations_ga.txt +5 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stemdict_nl.txt +6 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stoptags_ja.txt +420 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ar.txt +125 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_bg.txt +193 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ca.txt +220 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ckb.txt +136 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_cz.txt +172 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_da.txt +110 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_de.txt +294 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_el.txt +78 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_en.txt +54 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_es.txt +356 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_eu.txt +99 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_fa.txt +313 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_fi.txt +97 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_fr.txt +186 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ga.txt +110 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_gl.txt +161 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_hi.txt +235 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_hu.txt +211 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_hy.txt +46 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_id.txt +359 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_it.txt +303 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ja.txt +127 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_lv.txt +172 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_nl.txt +119 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_no.txt +194 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_pt.txt +253 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ro.txt +233 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_ru.txt +243 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_sv.txt +133 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_th.txt +119 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/stopwords_tr.txt +212 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/lang/userdict_ja.txt +29 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/managed-schema +1187 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/mapping-FoldToASCII.txt +3813 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/params.json +11 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/protwords.txt +21 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/solrconfig.xml +1616 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/spellings.txt +2 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/stopwords.txt +14 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/synonyms.txt +29 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/update-script.js +53 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/README.txt +101 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/VM_global_library.vm +186 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/browse.vm +33 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/cluster.vm +19 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/cluster_results.vm +31 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/debug.vm +28 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/did_you_mean.vm +11 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/error.vm +11 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_fields.vm +24 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_pivot.vm +12 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_queries.vm +12 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facet_ranges.vm +23 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/facets.vm +10 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/footer.vm +43 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/head.vm +37 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/header.vm +7 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/hit.vm +25 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/hit_grouped.vm +43 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/hit_plain.vm +25 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/join_doc.vm +20 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.css +48 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/jquery.autocomplete.js +763 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/layout.vm +24 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/main.css +231 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/mime_type_lists.vm +68 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/pagination_bottom.vm +22 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/pagination_top.vm +29 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/product_doc.vm +32 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query.vm +42 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query_form.vm +64 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query_group.vm +43 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/query_spatial.vm +75 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/results_list.vm +22 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/richtext_doc.vm +153 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/suggest.vm +8 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/velocity/tabs.vm +50 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/example.xsl +132 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/example_atom.xsl +67 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/example_rss.xsl +66 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/luke.xsl +337 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sample_techproducts_configs/conf/xslt/updateXml.xsl +70 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/_rest_managed.json +1 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/admin-extra.html +31 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/currency.xml +67 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/elevate.xml +36 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/lang/stopwords_en.txt +54 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/mapping-ISOLatin1Accent.txt +246 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/protwords.txt +21 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/schema.xml +278 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/scripts.conf +24 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/solrconfig.xml +632 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/spellings.txt +2 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/configsets/sunspot/conf/synonyms.txt +29 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/lib/.keep +0 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/solr.xml +53 -0
- data/lib/smartcloud/templates/dotsmartcloud/grids/grid-solr/data/zoo.cfg +31 -0
- data/lib/smartcloud/user.rb +72 -0
- metadata +237 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
# The main Smartcloud Grids Mysql driver
|
2
|
+
module Smartcloud
|
3
|
+
module Grids
|
4
|
+
class Mysql
|
5
|
+
def initialize
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.up(exposed)
|
9
|
+
if Smartcloud::Docker.running?
|
10
|
+
# Creating networks
|
11
|
+
unless system("docker network inspect mysql-network", [:out, :err] => File::NULL)
|
12
|
+
print "-----> Creating network mysql-network ... "
|
13
|
+
if system("docker network create mysql-network", out: File::NULL)
|
14
|
+
puts "done"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Creating & Starting containers
|
19
|
+
print "-----> Creating container mysql ... "
|
20
|
+
if system("docker create \
|
21
|
+
--name='mysql' \
|
22
|
+
--env MYSQL_RANDOM_ROOT_PASSWORD=yes \
|
23
|
+
#{"--publish='3306:3306'" if exposed == '--exposed'} \
|
24
|
+
--volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-mysql/data:/var/lib/mysql' \
|
25
|
+
--restart='always' \
|
26
|
+
--network='mysql-network' \
|
27
|
+
mysql:5.7.27 \
|
28
|
+
--default-authentication-plugin=mysql_native_password", out: File::NULL)
|
29
|
+
|
30
|
+
puts "done"
|
31
|
+
print "-----> Starting container mysql ... "
|
32
|
+
if system("docker start mysql", out: File::NULL)
|
33
|
+
puts "done"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.down
|
40
|
+
if Smartcloud::Docker.running?
|
41
|
+
# Stopping & Removing containers - in reverse order
|
42
|
+
print "-----> Stopping container mysql ... "
|
43
|
+
if system("docker stop 'mysql'", out: File::NULL)
|
44
|
+
puts "done"
|
45
|
+
print "-----> Removing container mysql ... "
|
46
|
+
if system("docker rm 'mysql'", out: File::NULL)
|
47
|
+
puts "done"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# Removing networks
|
52
|
+
print "-----> Removing network mysql-network ... "
|
53
|
+
if system("docker network rm mysql-network", out: File::NULL)
|
54
|
+
puts "done"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# The main Smartcloud Grids Nginx driver
|
2
|
+
module Smartcloud
|
3
|
+
module Grids
|
4
|
+
class Nginx
|
5
|
+
def initialize
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.up(exposed)
|
9
|
+
if Smartcloud::Docker.running?
|
10
|
+
# Creating volumes
|
11
|
+
print "-----> Creating volume nginx-confd ... "
|
12
|
+
if system("docker volume create nginx-confd", out: File::NULL)
|
13
|
+
puts "done"
|
14
|
+
end
|
15
|
+
|
16
|
+
print "-----> Creating volume nginx-vhost ... "
|
17
|
+
if system("docker volume create nginx-vhost", out: File::NULL)
|
18
|
+
puts "done"
|
19
|
+
end
|
20
|
+
|
21
|
+
print "-----> Creating volume nginx-shtml ... "
|
22
|
+
if system("docker volume create nginx-shtml", out: File::NULL)
|
23
|
+
puts "done"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Creating networks
|
27
|
+
unless system("docker network inspect nginx-network", [:out, :err] => File::NULL)
|
28
|
+
print "-----> Creating network nginx-network ... "
|
29
|
+
if system("docker network create nginx-network", out: File::NULL)
|
30
|
+
puts "done"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Creating & Starting containers
|
35
|
+
print "-----> Creating container nginx ... "
|
36
|
+
if system("docker create \
|
37
|
+
--name='nginx' \
|
38
|
+
#{"--publish='80:80' --publish='443:443'" if exposed == '--exposed'} \
|
39
|
+
--volume='nginx-confd:/etc/nginx/conf.d/' \
|
40
|
+
--volume='nginx-vhost:/etc/nginx/vhost.d/' \
|
41
|
+
--volume='nginx-shtml:/usr/share/nginx/html' \
|
42
|
+
--volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-nginx/certificates:/etc/nginx/certs' \
|
43
|
+
--volume='#{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-nginx/fastcgi.conf:/etc/nginx/fastcgi.conf:ro' \
|
44
|
+
--volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-nginx/htpasswd:/etc/nginx/htpasswd:ro' \
|
45
|
+
--restart='always' \
|
46
|
+
--network='nginx-network' \
|
47
|
+
nginx", out: File::NULL)
|
48
|
+
|
49
|
+
puts "done"
|
50
|
+
print "-----> Starting container nginx ... "
|
51
|
+
if system("docker start nginx", out: File::NULL)
|
52
|
+
puts "done"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
print "-----> Creating container nginx-gen ... "
|
57
|
+
if system("docker create \
|
58
|
+
--name='nginx-gen' \
|
59
|
+
--volumes-from nginx \
|
60
|
+
--volume='#{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-nginx/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro' \
|
61
|
+
--volume='/var/run/docker.sock:/tmp/docker.sock:ro' \
|
62
|
+
--restart='always' \
|
63
|
+
--network='nginx-network' \
|
64
|
+
jwilder/docker-gen \
|
65
|
+
-notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf", out: File::NULL)
|
66
|
+
|
67
|
+
puts "done"
|
68
|
+
print "-----> Starting container nginx-gen ... "
|
69
|
+
if system("docker start nginx-gen", out: File::NULL)
|
70
|
+
puts "done"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
print "-----> Creating container nginx-letsencrypt ... "
|
75
|
+
if system("docker create \
|
76
|
+
--name='nginx-letsencrypt' \
|
77
|
+
--env NGINX_PROXY_CONTAINER=nginx \
|
78
|
+
--env NGINX_DOCKER_GEN_CONTAINER=nginx-gen \
|
79
|
+
--volumes-from nginx \
|
80
|
+
--volume='/var/run/docker.sock:/var/run/docker.sock:ro' \
|
81
|
+
--restart='always' \
|
82
|
+
--network='nginx-network' \
|
83
|
+
jrcs/letsencrypt-nginx-proxy-companion", out: File::NULL)
|
84
|
+
|
85
|
+
puts "done"
|
86
|
+
print "-----> Starting container nginx-letsencrypt ... "
|
87
|
+
if system("docker start nginx-letsencrypt", out: File::NULL)
|
88
|
+
puts "done"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.down
|
95
|
+
if Smartcloud::Docker.running?
|
96
|
+
# Stopping & Removing containers - in reverse order
|
97
|
+
print "-----> Stopping container nginx-letsencrypt ... "
|
98
|
+
if system("docker stop 'nginx-letsencrypt'", out: File::NULL)
|
99
|
+
puts "done"
|
100
|
+
print "-----> Removing container nginx-letsencrypt ... "
|
101
|
+
if system("docker rm 'nginx-letsencrypt'", out: File::NULL)
|
102
|
+
puts "done"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
print "-----> Stopping container nginx-gen ... "
|
107
|
+
if system("docker stop 'nginx-gen'", out: File::NULL)
|
108
|
+
puts "done"
|
109
|
+
print "-----> Removing container nginx-gen ... "
|
110
|
+
if system("docker rm 'nginx-gen'", out: File::NULL)
|
111
|
+
puts "done"
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
print "-----> Stopping container nginx ... "
|
116
|
+
if system("docker stop 'nginx'", out: File::NULL)
|
117
|
+
puts "done"
|
118
|
+
print "-----> Removing container nginx ... "
|
119
|
+
if system("docker rm 'nginx'", out: File::NULL)
|
120
|
+
puts "done"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# Removing networks
|
125
|
+
print "-----> Removing network nginx-network ... "
|
126
|
+
if system("docker network rm nginx-network", out: File::NULL)
|
127
|
+
puts "done"
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,373 @@
|
|
1
|
+
# The main Smartcloud Grids Git driver
|
2
|
+
module Smartcloud
|
3
|
+
module Grids
|
4
|
+
class Runner
|
5
|
+
def initialize
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.up
|
9
|
+
if Smartcloud::Docker.running?
|
10
|
+
# Creating swapfile
|
11
|
+
# self.create_swapfile
|
12
|
+
|
13
|
+
# Creating images
|
14
|
+
self.create_images
|
15
|
+
|
16
|
+
# Creating & Starting containers
|
17
|
+
if system("docker image inspect smartcloud/runner", [:out, :err] => File::NULL) && system("docker image inspect smartcloud/buildpacks/rails", [:out, :err] => File::NULL)
|
18
|
+
print "-----> Creating container runner ... "
|
19
|
+
if system("docker create \
|
20
|
+
--name='runner' \
|
21
|
+
--env VIRTUAL_PROTO=fastcgi \
|
22
|
+
--env VIRTUAL_HOST=#{Smartcloud.config.git_domain} \
|
23
|
+
--env LETSENCRYPT_HOST=#{Smartcloud.config.git_domain} \
|
24
|
+
--env LETSENCRYPT_EMAIL=#{Smartcloud.config.sysadmin_email} \
|
25
|
+
--env LETSENCRYPT_TEST=#{Smartcloud.config.letsencrypt_test} \
|
26
|
+
--env USER_HOME_PATH=#{Smartcloud.config.user_home_path} \
|
27
|
+
--expose='9000' \
|
28
|
+
--volume='#{Smartcloud.config.user_home_path}/.smartcloud/config:#{Smartcloud.config.user_home_path}/.smartcloud/config' \
|
29
|
+
--volume='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner:#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner' \
|
30
|
+
--volume='/var/run/docker.sock:/var/run/docker.sock' \
|
31
|
+
--user=#{File.basename(Smartcloud.config.user_home_path)} \
|
32
|
+
--workdir='#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps' \
|
33
|
+
--restart='always' \
|
34
|
+
--network='nginx-network' \
|
35
|
+
smartcloud/runner \
|
36
|
+
spawn-fcgi -n -p 9000 /usr/bin/fcgiwrap -f", out: File::NULL)
|
37
|
+
puts "done"
|
38
|
+
|
39
|
+
print "-----> Starting container runner ... "
|
40
|
+
if system("docker start runner", out: File::NULL)
|
41
|
+
puts "done"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.down
|
49
|
+
if Smartcloud::Docker.running?
|
50
|
+
# Stopping & Removing containers - in reverse order
|
51
|
+
print "-----> Stopping container runner ... "
|
52
|
+
if system("docker stop 'runner'", out: File::NULL)
|
53
|
+
puts "done"
|
54
|
+
|
55
|
+
print "-----> Removing container runner ... "
|
56
|
+
if system("docker rm 'runner'", out: File::NULL)
|
57
|
+
puts "done"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Removing images
|
62
|
+
self.destroy_images
|
63
|
+
|
64
|
+
# Removing swapfile
|
65
|
+
# self.destroy_swapfile
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.create_swapfile
|
70
|
+
# Creating swapfile for bundler to work properly
|
71
|
+
unless system("sudo swapon -s | grep -ci '/swapfile'", out: File::NULL)
|
72
|
+
print "-----> Creating swap swapfile ... "
|
73
|
+
system("sudo install -o root -g root -m 0600 /dev/null /swapfile", out: File::NULL)
|
74
|
+
system("sudo dd if=/dev/zero of=/swapfile bs=1k count=2048k", [:out, :err] => File::NULL)
|
75
|
+
system("sudo mkswap /swapfile", out: File::NULL)
|
76
|
+
system("sudo sh -c 'echo \"/swapfile none swap sw 0 0\" >> /etc/fstab'", out: File::NULL)
|
77
|
+
system("echo 10 | sudo tee /proc/sys/vm/swappiness", out: File::NULL)
|
78
|
+
system("sudo sed -i '/^vm.swappiness = /d' /etc/sysctl.conf", out: File::NULL)
|
79
|
+
system("echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf", out: File::NULL)
|
80
|
+
puts "done"
|
81
|
+
|
82
|
+
print "-----> Starting swap swapfile ... "
|
83
|
+
if system("sudo swapon /swapfile", out: File::NULL)
|
84
|
+
puts "done"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.destroy_swapfile
|
90
|
+
if system("sudo swapon -s | grep -ci '/swapfile'", out: File::NULL)
|
91
|
+
print "-----> Stopping swap swapfile ... "
|
92
|
+
if system("sudo swapoff /swapfile", out: File::NULL)
|
93
|
+
system("sudo sed -i '/^vm.swappiness = /d' /etc/sysctl.conf", out: File::NULL)
|
94
|
+
system("echo 60 | sudo tee /proc/sys/vm/swappiness", out: File::NULL)
|
95
|
+
puts "done"
|
96
|
+
|
97
|
+
print "-----> Removing swap swapfile ... "
|
98
|
+
system("sudo sed -i '/^\\/swapfile/d' /etc/fstab", out: File::NULL)
|
99
|
+
if system("sudo rm /swapfile", out: File::NULL)
|
100
|
+
puts "done"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.create_images
|
107
|
+
unless system("docker image inspect smartcloud/runner", [:out, :err] => File::NULL)
|
108
|
+
print "-----> Creating image smartcloud/runner ... "
|
109
|
+
if system("docker image build -t smartcloud/runner \
|
110
|
+
--build-arg DOCKER_GID=`getent group docker | cut -d: -f3` \
|
111
|
+
--build-arg USER_UID=`id -u` \
|
112
|
+
--build-arg USER_NAME=`id -un` \
|
113
|
+
#{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-runner", out: File::NULL)
|
114
|
+
puts "done"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
unless system("docker image inspect smartcloud/buildpacks/rails", [:out, :err] => File::NULL)
|
119
|
+
print "-----> Creating image smartcloud/buildpacks/rails ... "
|
120
|
+
if system("docker image build -t smartcloud/buildpacks/rails #{Smartcloud.config.root_path}/lib/smartcloud/grids/grid-runner/buildpacks/rails", out: File::NULL)
|
121
|
+
puts "done"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.destroy_images
|
127
|
+
if system("docker image inspect smartcloud/buildpacks/rails", [:out, :err] => File::NULL)
|
128
|
+
print "-----> Removing image smartcloud/buildpacks/rails ... "
|
129
|
+
if system("docker image rm smartcloud/buildpacks/rails", out: File::NULL)
|
130
|
+
puts "done"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
if system("docker image inspect smartcloud/runner", [:out, :err] => File::NULL)
|
135
|
+
print "-----> Removing image smartcloud/runner ... "
|
136
|
+
if system("docker image rm smartcloud/runner", out: File::NULL)
|
137
|
+
puts "done"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# Creating App!
|
143
|
+
#
|
144
|
+
# Example:
|
145
|
+
# >> Apps.create
|
146
|
+
# => Creation Complete
|
147
|
+
#
|
148
|
+
# Arguments:
|
149
|
+
# appname => (String)
|
150
|
+
# username => (String)
|
151
|
+
def self.create_app(appname, username)
|
152
|
+
if Smartcloud::Docker.running?
|
153
|
+
repository_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/repositories/#{appname}.git"
|
154
|
+
container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
|
155
|
+
print "-----> Creating Application ... "
|
156
|
+
|
157
|
+
# Checking if app with given name already exists
|
158
|
+
if Dir.exist?(repository_path)
|
159
|
+
puts "failed. App with name '#{appname}' already exists."
|
160
|
+
exit
|
161
|
+
end
|
162
|
+
|
163
|
+
# Creating Directories
|
164
|
+
FileUtils.mkdir_p(repository_path)
|
165
|
+
FileUtils.mkdir_p(container_path)
|
166
|
+
|
167
|
+
# Initializing bare repo and pre-receive
|
168
|
+
Dir.chdir(repository_path) do
|
169
|
+
%x[git init --bare]
|
170
|
+
%x[chmod +x #{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/pre-receive]
|
171
|
+
%x[ln -s #{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/pre-receive #{repository_path}/hooks/pre-receive]
|
172
|
+
puts "done"
|
173
|
+
end
|
174
|
+
|
175
|
+
# Creating Environment File
|
176
|
+
if File.exist?("#{Smartcloud.config.user_home_path}/.smartcloud/config/environment.rb")
|
177
|
+
require "#{Smartcloud.config.user_home_path}/.smartcloud/config/environment"
|
178
|
+
end
|
179
|
+
unless File.exist? "#{container_path}/env"
|
180
|
+
print "-----> Creating App Environment ... "
|
181
|
+
system("cat > #{container_path}/env <<- EOF
|
182
|
+
## System
|
183
|
+
USERNAME=#{username}
|
184
|
+
KEEP_RELEASES=3
|
185
|
+
|
186
|
+
## Docker
|
187
|
+
VIRTUAL_HOST=#{appname}.#{Smartcloud.config.apps_domain}
|
188
|
+
LETSENCRYPT_HOST=#{appname}.#{Smartcloud.config.apps_domain}
|
189
|
+
LETSENCRYPT_EMAIL=#{Smartcloud.config.sysadmin_email}
|
190
|
+
LETSENCRYPT_TEST=false
|
191
|
+
EOF")
|
192
|
+
puts "done"
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def self.destroy_app(appname)
|
198
|
+
if Smartcloud::Docker.running?
|
199
|
+
# Stopping & Removing old container
|
200
|
+
self.stop_app(appname)
|
201
|
+
|
202
|
+
# Destroying Directories
|
203
|
+
print "-----> Deleting App #{appname} ... "
|
204
|
+
repository_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/repositories/#{appname}.git"
|
205
|
+
container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
|
206
|
+
FileUtils.rm_r(repository_path)
|
207
|
+
FileUtils.rm_r(container_path)
|
208
|
+
puts "done"
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def self.prereceive_app(appname, username, oldrev, newrev, refname)
|
213
|
+
container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
|
214
|
+
|
215
|
+
## Verify the user and ensure the user is correct and has access to this repository
|
216
|
+
print "-----> Verifying User ... "
|
217
|
+
unless File.exist? "#{container_path}/env"
|
218
|
+
puts "Environment could not be loaded ... Failed"
|
219
|
+
exit 1
|
220
|
+
end
|
221
|
+
|
222
|
+
# Load ENV vars
|
223
|
+
File.open("#{container_path}/env").each_line do |line|
|
224
|
+
line.chomp!
|
225
|
+
next if line.empty? || line.start_with?('#')
|
226
|
+
key, value = line.split "="
|
227
|
+
ENV[key] = value
|
228
|
+
end
|
229
|
+
|
230
|
+
# Match Username
|
231
|
+
unless ENV['USERNAME'] == username
|
232
|
+
puts "User is not authorized ... Failed"
|
233
|
+
exit 1
|
234
|
+
end
|
235
|
+
puts "done"
|
236
|
+
|
237
|
+
# Only run this script for the master branch. You can remove this
|
238
|
+
# if block if you wish to run it for others as well.
|
239
|
+
if refname == "refs/heads/master"
|
240
|
+
print "-----> Initializing Application ... "
|
241
|
+
|
242
|
+
# Note: There should be no space between + and " in now_date.
|
243
|
+
# Note: date will be UTC date until timezone has been changed.
|
244
|
+
now_date = `date +"%Y%m%d%H%M%S"`.chomp!
|
245
|
+
container_path_with_now_date = "#{container_path}/#{now_date}"
|
246
|
+
|
247
|
+
unless Dir.exist? container_path_with_now_date
|
248
|
+
FileUtils.mkdir_p(container_path_with_now_date)
|
249
|
+
if system("git archive #{newrev} | tar -x -C #{container_path_with_now_date}")
|
250
|
+
puts "done"
|
251
|
+
|
252
|
+
# Clean up very old versions
|
253
|
+
Dir.chdir(container_path) do
|
254
|
+
app_versions = Dir.glob('*').select { |f| File.directory? f }.sort
|
255
|
+
destroy_count = app_versions.count - ENV['KEEP_RELEASES'].to_i
|
256
|
+
if destroy_count > 0
|
257
|
+
print "-----> Deleting Old Application Versions ... "
|
258
|
+
destroy_count.times do
|
259
|
+
FileUtils.rm_r(File.join(Dir.pwd, app_versions.shift))
|
260
|
+
end
|
261
|
+
puts "done"
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
# Start App
|
266
|
+
self.start_app(appname)
|
267
|
+
else
|
268
|
+
puts "failed. Could not extract new app version."
|
269
|
+
exit 1
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
def self.start_app(appname, app_version = 0)
|
276
|
+
if Smartcloud::Docker.running?
|
277
|
+
container_path = "#{Smartcloud.config.user_home_path}/.smartcloud/grids/grid-runner/apps/containers/#{appname}"
|
278
|
+
|
279
|
+
Dir.chdir(container_path) do
|
280
|
+
if app_version == 0
|
281
|
+
app_versions = Dir.glob('*').select { |f| File.directory? f }.sort
|
282
|
+
app_version = app_versions.last
|
283
|
+
end
|
284
|
+
|
285
|
+
container_path_with_now_date = "#{container_path}/#{app_version}"
|
286
|
+
|
287
|
+
puts "-----> Launching Application ... "
|
288
|
+
|
289
|
+
if File.exist? "#{container_path_with_now_date}/bin/rails"
|
290
|
+
# Stopping & Removing container
|
291
|
+
self.stop_app(appname)
|
292
|
+
|
293
|
+
# Starting Rails App
|
294
|
+
self.start_rails_app(appname, container_path, container_path_with_now_date)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
# This line is important to cancel pre-receive push if finally the app could not be started.
|
299
|
+
# If the app was finally started, then this line should never be executed.
|
300
|
+
exit 1
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
def self.stop_app(appname)
|
305
|
+
if Smartcloud::Docker.running?
|
306
|
+
if system("docker inspect -f '{{.State.Running}}' #{appname}", [:out, :err] => File::NULL)
|
307
|
+
print "-----> Stopping container #{appname} ... "
|
308
|
+
if system("docker stop '#{appname}'", out: File::NULL)
|
309
|
+
puts "done"
|
310
|
+
|
311
|
+
print "-----> Removing container #{appname} ... "
|
312
|
+
if system("docker rm '#{appname}'", out: File::NULL)
|
313
|
+
puts "done"
|
314
|
+
end
|
315
|
+
end
|
316
|
+
else
|
317
|
+
puts "-----> Container #{appname} is currently not running."
|
318
|
+
end
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
def self.start_rails_app(appname, container_path, container_path_with_now_date)
|
323
|
+
puts "-----> Ruby on Rails Application Detected"
|
324
|
+
|
325
|
+
# Setup rails env
|
326
|
+
env_path = "#{container_path}/env"
|
327
|
+
system("grep -q '^## Rails' #{env_path} || echo '\n## Rails' >> #{env_path}")
|
328
|
+
system("grep -q '^RAILS_ENV=' #{env_path} || echo 'RAILS_ENV=production' >> #{env_path}")
|
329
|
+
system("grep -q '^RACK_ENV=' #{env_path} || echo 'RACK_ENV=production' >> #{env_path}")
|
330
|
+
system("grep -q '^RAILS_LOG_TO_STDOUT=' #{env_path} || echo 'RAILS_LOG_TO_STDOUT=enabled' >> #{env_path}")
|
331
|
+
system("grep -q '^RAILS_SERVE_STATIC_FILES=' #{env_path} || echo 'RAILS_SERVE_STATIC_FILES=enabled' >> #{env_path}")
|
332
|
+
system("grep -q '^LANG=' #{env_path} || echo 'LANG=en_US.UTF-8' >> #{env_path}")
|
333
|
+
system("grep -q '^RAILS_MASTER_KEY=' #{env_path} || echo 'RAILS_MASTER_KEY=yourmasterkey' >> #{env_path}")
|
334
|
+
puts "-----> WARNING: Please set your RAILS_MASTER_KEY env var for this rails app." if system("grep -q '^RAILS_MASTER_KEY=yourmasterkey' #{env_path}")
|
335
|
+
|
336
|
+
# Setup Procfile
|
337
|
+
unless File.exist? "#{container_path_with_now_date}/Procfile"
|
338
|
+
puts "-----> WARNING: Procfile not detected. Adding a default Procfile. It is recommended to add your own Procfile."
|
339
|
+
system("cat > #{container_path_with_now_date}/Procfile <<- EOF
|
340
|
+
web: bundle exec puma -C config/puma.rb
|
341
|
+
EOF")
|
342
|
+
end
|
343
|
+
|
344
|
+
# Creating & Starting container
|
345
|
+
# IMPORTANT NOTE:
|
346
|
+
# The below commands of docker are executed here. However, they run from the host.
|
347
|
+
# Therefore, the ~ used in the commands below is used to denote the home directory of the host
|
348
|
+
# and not the runner.
|
349
|
+
print "-----> Creating container #{appname} ... "
|
350
|
+
if system("docker create \
|
351
|
+
--name='#{appname}' \
|
352
|
+
--env-file='#{container_path}/env' \
|
353
|
+
--expose='5000' \
|
354
|
+
--volume='~#{container_path_with_now_date}:/code' \
|
355
|
+
--restart='always' \
|
356
|
+
--network='nginx-network' \
|
357
|
+
smartcloud/buildpacks/rails", out: File::NULL)
|
358
|
+
puts "done"
|
359
|
+
|
360
|
+
system("docker network connect solr-network #{appname}")
|
361
|
+
system("docker network connect mysql-network #{appname}")
|
362
|
+
|
363
|
+
print "-----> Starting container #{appname} ... "
|
364
|
+
if system("docker start #{appname}", out: File::NULL)
|
365
|
+
puts "done"
|
366
|
+
system("docker logs #{appname} --follow")
|
367
|
+
exit 0
|
368
|
+
end
|
369
|
+
end
|
370
|
+
end
|
371
|
+
end
|
372
|
+
end
|
373
|
+
end
|