From 9846ddb18d1c025eef7df8854c9fa41d144ed888 Mon Sep 17 00:00:00 2001 From: Ambrose Chua Date: Tue, 27 Mar 2018 23:47:53 +0800 Subject: [PATCH] Initial installation scripts --- .dockerignore | 3 ++ .drone.yml | 8 +++++ .install/golang.sh | 32 ++++++++++++++++++ .install/install.sh | 20 ++++++++++++ .install/node.sh | 80 +++++++++++++++++++++++++++++++++++++++++++++ .install/zsh.sh | 9 +++++ .versions | 7 ++++ Dockerfile | 21 ++++++++++++ 8 files changed, 180 insertions(+) create mode 100644 .dockerignore create mode 100644 .drone.yml create mode 100755 .install/golang.sh create mode 100755 .install/install.sh create mode 100755 .install/node.sh create mode 100755 .install/zsh.sh create mode 100755 .versions create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4338af3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +Dockerfile +README.md +.git diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..033f07e --- /dev/null +++ b/.drone.yml @@ -0,0 +1,8 @@ +pipeline: + docker: + image: plugins/docker + registry: registry.labs.0x.no + repo: registry.labs.0x.no/env + tags: + - latest + diff --git a/.install/golang.sh b/.install/golang.sh new file mode 100755 index 0000000..18d1cce --- /dev/null +++ b/.install/golang.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +echo +echo "Installing Go $GOLANG_VERSION..." +echo + +apk add --no-cache --virtual .build-deps \ + bash \ + gcc \ + musl-dev \ + openssl \ + go + +GOROOT_BOOTSTRAP="$(go env GOROOT)" +GOOS="$(go env GOOS)" +GOARCH="$(go env GOARCH)" +GOHOSTOS="$(go env GOHOSTOS)" +GOHOSTARCH="$(go env GOHOSTARCH)" + +wget -O go.tgz "https://golang.org/dl/go$GOLANG_VERSION.src.tar.gz" + +echo 'f3de49289405fda5fd1483a8fe6bd2fa5469e005fd567df64485c4fa000c7f24 *go.tgz' | sha256sum -c - +tar -C /usr/local -xzf go.tgz +rm go.tgz +cd /usr/local/go/src +./make.bash +apk del .build-deps + +echo 'export GOPATH="$HOME/go"' >> /etc/profile.d/golang +echo 'export PATH="$GOPATH/bin:/usr/local/go/bin:$PATH"' >> /etc/profile.d/golang diff --git a/.install/install.sh b/.install/install.sh new file mode 100755 index 0000000..76ecf51 --- /dev/null +++ b/.install/install.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +set -e + +BASE_DIR="$(dirname $0)" +source ./.versions + +for f in $BASE_DIR/*; do + + BASE_NAME="$(basename $f)" + if [ "$BASE_NAME" = "install.sh" ]; then + continue + fi + + echo + echo "Running $BASE_NAME..." + + $f + +done diff --git a/.install/node.sh b/.install/node.sh new file mode 100755 index 0000000..cce99c1 --- /dev/null +++ b/.install/node.sh @@ -0,0 +1,80 @@ +#!/bin/sh + +set -e + +echo +echo "Installing Node.js $NODE_VERSION..." +echo + +apk add --no-cache \ + libstdc++ + +apk add --no-cache --virtual .build-deps \ + binutils-gold \ + curl \ + g++ \ + gcc \ + gnupg \ + libgcc \ + linux-headers \ + make \ + python + +for key in \ + 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ + FD3A5288F042B6850C66B31F09FE44734EB7990E \ + 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ + DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ + C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ + B9AE9905FFD7803F25714661B63B535A4C206CA9 \ + 56730D5401028683275BD23C23EFEFE93C4CFFFE \ + 77984A986EBC2AA786BC0F66B01FBB92821C587A \ +; do + gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || + gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || + gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" +done + +curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" +curl -SLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" + +gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc +grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - +tar -xf "node-v$NODE_VERSION.tar.xz" +cd "node-v$NODE_VERSION" +./configure +make -j$(getconf _NPROCESSORS_ONLN) +make install +apk del .build-deps +cd .. +rm -Rf "node-v$NODE_VERSION" +rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt + +echo +echo "Installing Yarn $YARN_VERSION..." +echo + +apk add --no-cache --virtual .build-deps-yarn \ + curl \ + gnupg \ + tar + +for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ +; do + gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || + gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || + gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" +done + +curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" +curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" + +gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz +mkdir -p /opt +tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ +ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn +ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg +rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz +apk del .build-deps-yarn + diff --git a/.install/zsh.sh b/.install/zsh.sh new file mode 100755 index 0000000..b92a7ad --- /dev/null +++ b/.install/zsh.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +echo +echo "Installing zsh..." +echo + +apk add --no-cache zsh diff --git a/.versions b/.versions new file mode 100755 index 0000000..95f5d98 --- /dev/null +++ b/.versions @@ -0,0 +1,7 @@ +#!/bin/sh + +export GOLANG_VERSION=1.10 + +export NODE_VERSION=9.9.0 +export YARN_VERSION=1.5.1 + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..95d1ed1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM alpine:latest + +# Install tools from source + +WORKDIR / + +COPY .versions .versions +COPY .install/* .install/ +RUN ./.install/install.sh + +# Create user + +RUN adduser -s /bin/zsh -D ambrose +USER ambrose + +# Install dotfiles + +WORKDIR /home/ambrose + +COPY . . +