From 966af867e2e94c8ebf3f6adb910ea286fe11760a Mon Sep 17 00:00:00 2001
From: Erick Hitter <gitlab-s@mxs.ethitter.com>
Date: Sun, 24 Feb 2019 02:58:30 +0000
Subject: [PATCH] MVP build process

---
 .gitignore       |   2 +
 .gitlab-ci.yml   |  32 ++++++++++++++
 scripts/build.sh | 108 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 142 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .gitlab-ci.yml
 create mode 100644 scripts/build.sh

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1062418
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.idea/
+*.iml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..03588d7
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,32 @@
+image: containers.ethitter.com:443/docker/images/debian:jessie
+
+stages:
+  - test_pre_build
+  - build
+  - test
+  - deploy
+
+test_build_script:
+  stage: test_pre_build
+  image: koalaman/shellcheck-alpine:latest
+  script:
+    - shellcheck ./scripts/build.sh
+
+test_build_nginx:
+  stage: build
+  script:
+    - chmod +x ./scripts/build.sh
+    - ./scripts/build.sh
+  except:
+    - master
+
+build_nginx:
+  stage: build
+  script:
+    - chmod +x ./scripts/build.sh
+    - ./scripts/build.sh
+  artifacts:
+    paths:
+      - src/nginx/objs/nginx
+  only:
+    - master
diff --git a/scripts/build.sh b/scripts/build.sh
new file mode 100644
index 0000000..7e3d41c
--- /dev/null
+++ b/scripts/build.sh
@@ -0,0 +1,108 @@
+#!/usr/bin/env bash
+
+set -e
+set -x
+
+# Log when the build occurred.
+date
+echo ""
+
+# Capture our starting point for easier navigation.
+OG_DIR=$(pwd)
+export OG_DIR
+echo "$OG_DIR"
+echo ""
+
+# Common paths.
+NGINX_SRC_DIR="$OG_DIR/src/nginx"
+export NGINX_SRC_DIR
+
+mkdir -p "$NGINX_SRC_DIR"
+
+OPENSSL_DIR="$OG_DIR/src/openssl"
+export OPENSSL_DIR
+
+NGX_BROTLI_DIR="$OG_DIR/src/ngx_brotli"
+export NGX_BROTLI_DIR
+
+NGINX_CT_DIR="$OG_DIR/src/nginx_ct"
+export NGINX_CT_DIR
+
+# Dependency: OpenSSL
+echo ""
+echo "DEPENDENCY: OpenSSL AT $OPENSSL_TAG"
+git clone -q --recursive --depth 1 https://github.com/openssl/openssl.git -b "$OPENSSL_TAG" "$OPENSSL_DIR"
+
+# Dependency: ngx_brotli (no tagged releases)
+echo ""
+echo "DEPENDENCY: ngx_brotli"
+git clone -q --recursive --depth 1 https://github.com/google/ngx_brotli.git "$NGX_BROTLI_DIR"
+
+# Dependency: nginx-ct
+echo ""
+echo "DEPENDENCY: nginx-ct AT $NGINX_CT_TAG"
+git clone -q --recursive --depth 1 https://github.com/grahamedgecombe/nginx-ct.git -b "$NGINX_CT_TAG" "$NGINX_CT_DIR"
+
+# nginx from git mirror
+echo ""
+echo "CLONING nginx FROM GIT MIRROR AT $NGINX_TAG"
+git clone -q --recursive --depth 1 https://github.com/nginx/nginx.git -b "$NGINX_TAG" "$NGINX_SRC_DIR"
+
+# Configure nginx
+echo ""
+echo "CONFIGURE NGINX"
+cd "$NGINX_SRC_DIR" || exit 1
+
+./auto/configure \
+    --prefix=/etc/nginx \
+    --sbin-path=/usr/sbin/nginx \
+    --conf-path=/etc/nginx/nginx.conf \
+    --error-log-path=/var/log/nginx/error.log \
+    --http-log-path=/var/log/nginx/access.log \
+    --pid-path=/var/run/nginx.pid \
+    --lock-path=/var/run/nginx.lock \
+    --http-client-body-temp-path=/var/cache/nginx/client_temp \
+    --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
+    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
+    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
+    --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
+    --user=www-data \
+    --group=www-data \
+    --with-http_ssl_module \
+    --with-http_realip_module \
+    --with-http_addition_module \
+    --with-http_sub_module \
+    --with-http_dav_module \
+    --with-http_flv_module \
+    --with-http_mp4_module \
+    --with-http_gunzip_module \
+    --with-http_gzip_static_module \
+    --with-http_random_index_module \
+    --with-http_secure_link_module \
+    --with-http_stub_status_module \
+    --with-http_auth_request_module \
+    --with-threads \
+    --with-stream \
+    --with-stream_ssl_module \
+    --with-http_slice_module \
+    --with-mail \
+    --with-mail_ssl_module \
+    --with-file-aio \
+    --with-http_v2_module \
+    --with-openssl="$OPENSSL_DIR" \
+    --add-module="$NGX_BROTLI_DIR" \
+    --add-module="$NGINX_CT_DIR"
+
+# Build nginx
+echo ""
+echo "BUILDING NGINX"
+echo "Using $(nproc) jobs"
+make
+
+if [[ ! -f "$NGINX_SRC_DIR/objs/nginx" ]]; then
+    exit 1
+fi
+
+# Verify build works
+cd "$NGINX_SRC_DIR/objs" || exit 1
+./nginx -V
-- 
GitLab