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