summaryrefslogtreecommitdiff
path: root/ci/data
diff options
context:
space:
mode:
authorBret Koppel <bret@olo.com>2025-10-07 09:00:37 -0400
committerGitHub <noreply@github.com>2025-10-07 09:00:37 -0400
commit910d7fd656b9e957181732b36761449de5a970d1 (patch)
tree0f8ee46af3e93aa489785d64d54c5e155ef0057b /ci/data
parent9adba239b937df2830a5110adaa1dae17b7dd7d7 (diff)
parent0ad86ba37be273ee1fe4d9bdd5f7bb15c5701abf (diff)
Merge pull request #1 from ololabs/initial-commit
initial commit
Diffstat (limited to 'ci/data')
-rw-r--r--ci/data/etc/sbclrc6
-rw-r--r--ci/data/etc/snow/figwheel-main.edn34
-rw-r--r--ci/data/etc/snow/options.lisp20
-rwxr-xr-xci/data/install-root.sh40
-rwxr-xr-xci/data/install-user-sbcl.sh10
-rw-r--r--ci/data/snow-starter.lisp7
-rwxr-xr-xci/data/start_app.sh45
7 files changed, 162 insertions, 0 deletions
diff --git a/ci/data/etc/sbclrc b/ci/data/etc/sbclrc
new file mode 100644
index 0000000..3a931d0
--- /dev/null
+++ b/ci/data/etc/sbclrc
@@ -0,0 +1,6 @@
+;;; The following lines added by ql:add-to-init-file:
+#-quicklisp
+(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
+ (user-homedir-pathname))))
+ (when (probe-file quicklisp-init)
+ (load quicklisp-init)))
diff --git a/ci/data/etc/snow/figwheel-main.edn b/ci/data/etc/snow/figwheel-main.edn
new file mode 100644
index 0000000..864266c
--- /dev/null
+++ b/ci/data/etc/snow/figwheel-main.edn
@@ -0,0 +1,34 @@
+;; Figwheel-main configuration options see: https://figwheel.org/config-options
+;; these will be overriden by the metadata config options in dev.cljs.edn build file
+{
+ ;; Set the server port https://figwheel.org/config-options#ring-server-options
+ ;; :ring-server-options {:port 9500}
+
+ ;; Change the target directory from the "target" to "resources"
+ ;; https://figwheel.org/config-options#target-dir
+ ;; :target-dir "resources"
+
+ ;; Server Ring Handler (optional) https://figwheel.org/docs/ring-handler.html
+ ;; If you want to embed a ring handler into the figwheel server, this
+ ;; is for simple ring servers
+ ;; :ring-handler hello_world.server/handler
+
+ ;; To be able to open files in your editor from the heads up display
+ ;; you will need to put a script on your path. This script will have
+ ;; to take a file path and a line number ie.
+ ;; in ~/bin/myfile-opener:
+ ;;
+ ;; #! /bin/sh
+ ;; emacsclient -n +$2:$3 $1
+ ;;
+ ;; :open-file-command "myfile-opener"
+
+ ;; if you are using emacsclient you can just use
+ ;; :open-file-command "emacsclient"
+
+ ;; Logging output gets printed to the REPL, if you want to redirect it to a file:
+ ;; :log-file "figwheel-main.log"
+
+ :target-dir "resources"
+ :open-url false
+}
diff --git a/ci/data/etc/snow/options.lisp b/ci/data/etc/snow/options.lisp
new file mode 100644
index 0000000..290ba00
--- /dev/null
+++ b/ci/data/etc/snow/options.lisp
@@ -0,0 +1,20 @@
+((:name "snow"
+ :url "http://localhost:3013"
+ :document-root "snow"
+ :title "Super Nifty Olo Webapp"
+ :meta-description "Super Nifty Olo Webapp"
+ :region "us-east-1"
+ :queue (:sleep-interval 15
+ :git (:num-process-threads 10
+ :wait-interval 0
+ :exclude-dirs (".vscode" "frodomat" "frodomat-ci" "frodomat-teamcity" "ssh-tunnel" "ssl-cert" "datamat" "datamat-ci"))
+ :aws (:num-process-threads 30
+ :wait-interval 90)
+ :octopus-slow (:num-process-threads 1
+ :wait-interval 0)
+ :octopus-fast (:num-process-threads 10
+ :wait-interval 0)
+ :tfcloud (:num-process-threads 1
+ :wait-interval 0)
+ :awx (:num-process-threads 10
+ :wait-interval 0))))
diff --git a/ci/data/install-root.sh b/ci/data/install-root.sh
new file mode 100755
index 0000000..ca4f1c4
--- /dev/null
+++ b/ci/data/install-root.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+echo 'APT::Acquire::Retries "3";' > /etc/apt/apt.conf.d/80-retries
+export DEBIAN_FRONTEND=noninteractive
+apt-get update
+apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
+apt-get -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" aptitude
+aptitude -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" apt-transport-https ca-certificates software-properties-common language-pack-de
+update-ca-certificates
+aptitude update
+aptitude -y install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" sbcl sbcl-source leiningen dnsutils bind9-host vim curl wget rlwrap pass rsync sudo gh jq lsof zip unzip
+
+mkdir -p /opt/aws-cli
+pushd /tmp
+rm -rf aws
+curl -o awscliv2.zip https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip
+unzip awscliv2.zip
+pushd aws
+./install -i /opt/aws-cli -b /usr/local/bin --update
+popd
+popd
+
+rsync -av /data/ /
+
+if (( OLO_UID != 0 )); then
+ userdel ubuntu || true
+ groupdel ubuntu || true
+ rm -rf /home/ubuntu || true
+ export HOMEDIR="/home/${OLO_USERNAME}"
+ groupadd -g "${OLO_GID}" "${OLO_GROUPNAME}" || OLO_GROUPNAME=$(grep -F "x:${OLO_GID}:" /etc/group | awk -F: '{print $1}')
+ useradd -s /bin/bash -m -u "${OLO_UID}" -g "${OLO_GROUPNAME}" "${OLO_USERNAME}" || OLO_USERNAME=$(grep -F "x:${OLO_UID}:" /etc/passwd | awk -F: '{print $1}')
+ SUDOERS_FILENAME="${OLO_USERNAME//\./_}"
+ echo "${OLO_USERNAME} ALL=(ALL) NOPASSWD: ALL" > "/etc/sudoers.d/${SUDOERS_FILENAME}"
+ chmod 0440 "/etc/sudoers.d/${SUDOERS_FILENAME}"
+ mkdir -p "${HOMEDIR}/.gnupg"
+ chown "${OLO_USERNAME}":"${OLO_GROUPNAME}" "${HOMEDIR}/.gnupg"
+ chmod 0700 "${HOMEDIR}/.gnupg"
+fi
+
+exit 0
diff --git a/ci/data/install-user-sbcl.sh b/ci/data/install-user-sbcl.sh
new file mode 100755
index 0000000..e9d03ff
--- /dev/null
+++ b/ci/data/install-user-sbcl.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+curl -o ~/quicklisp.lisp https://beta.quicklisp.org/quicklisp.lisp
+sbcl --load ~/quicklisp.lisp --eval "(quicklisp-quickstart:install)" --eval "(sb-ext:exit)"
+sbcl --eval "(loop for pkg in '(cl-ppcre cl-smtp hunchentoot cl-log ironclad cl-markdown tmpdir swank net-telent-date uffi drakma cl-json postmodern fiveam local-time trivial-octet-streams cl-ppcre) do (ql:quickload (symbol-name pkg)))" --eval "(sb-ext:exit)"
+
+mkdir -p ~/.config/common-lisp
+echo "(:source-registry (:tree (:home \"common-lisp/systems\")) :inherit-configuration)" | tee ~/.config/common-lisp/source-registry.conf
+
+exit 0
diff --git a/ci/data/snow-starter.lisp b/ci/data/snow-starter.lisp
new file mode 100644
index 0000000..e808f7a
--- /dev/null
+++ b/ci/data/snow-starter.lisp
@@ -0,0 +1,7 @@
+(load "/etc/sbclrc")
+(asdf:operate 'asdf:load-op 'swank)
+(setf swank::*loopback-interface* "0.0.0.0")
+(swank:create-server :port 4109 :dont-close t)
+(asdf:operate 'asdf:load-op 'snow)
+(in-package :snow)
+(snow)
diff --git a/ci/data/start_app.sh b/ci/data/start_app.sh
new file mode 100755
index 0000000..029afe1
--- /dev/null
+++ b/ci/data/start_app.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+mkdir -p ~/common-lisp/systems ~/opt
+cd ~/opt
+git clone -b main git@ns:repos/snow.git
+git clone -b master git@github.com:ckonstanski/org-ckons-cljs.form.git
+git clone -b master git@github.com:ckonstanski/org-ckons-cljs.notifications
+git clone -b master git@github.com:ckonstanski/org-ckons-condition
+git clone -b master git@github.com:ckonstanski/org-ckons-core
+git clone -b master git@github.com:ckonstanski/org-ckons-file
+git clone -b master git@github.com:ckonstanski/org-ckons-http
+git clone -b master git@github.com:ckonstanski/org-ckons-json
+git clone -b master git@github.com:ckonstanski/org-ckons-serializable
+git clone -b master git@github.com:ckonstanski/org-ckons-session
+git clone -b master git@github.com:ckonstanski/org-ckons-sql
+
+logdir="/var/log/lisp"
+mv ${logdir}/snow.log.1 ${logdir}/snow.log.2
+mv ${logdir}/${APPNAME}snow.log ${logdir}/snow.log.1
+
+pushd ~/common-lisp/systems
+ln -s ~/opt/snow/lisp/snow.asd snow.asd
+ln -s ~/opt/org-ckons-condition/org-ckons-condition.asd org-ckons-condition.asd
+ln -s ~/opt/org-ckons-core/org-ckons-core.asd org-ckons-core.asd
+ln -s ~/opt/org-ckons-file/org-ckons-file.asd org-ckons-file.asd
+ln -s ~/opt/org-ckons-http/org-ckons-http.asd org-ckons-http.asd
+ln -s ~/opt/org-ckons-json/org-ckons-json.asd org-ckons-json.asd
+ln -s ~/opt/org-ckons-serializable/org-ckons-serializable.asd org-ckons-serializable.asd
+ln -s ~/opt/org-ckons-session/org-ckons-session.asd org-ckons-session.asd
+ln -s ~/opt/org-ckons-sql/org-ckons-sql.asd org-ckons-sql.asd
+popd
+
+pushd ~/opt/snow/lisp/webapps/snow/clojurescript/snow
+ln -s /etc/snow/figwheel-main.edn figwheel-main.edn
+mkdir checkouts
+pushd checkouts
+ln -s ~/opt/org-ckons-cljs.form org-ckons-cljs.form
+ln -s ~/opt/org-ckons-cljs.notifications org-ckons-cljs.notifications
+popd
+
+lein clean
+lein fig:build | tee /tmp/snow/lein.log &
+popd
+
+SBCL_HOME=/usr/lib/sbcl SBCL_SOURCE_ROOT=/usr/lib/sbcl/src exec sbcl --dynamic-space-size 2048 --userinit /data/snow-starter.lisp | tee /tmp/snow/sbcl.log