From 278443069f8c75f77ec66fa801d5c0acd0df65c5 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Tue, 31 Jul 2018 21:34:32 +0530 Subject: [PATCH 1/6] build: clean up unused artifacts leftover from the build stage --- assets/build/install.sh | 44 +++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/assets/build/install.sh b/assets/build/install.sh index c1c42a33..b604f370 100755 --- a/assets/build/install.sh +++ b/assets/build/install.sh @@ -62,11 +62,15 @@ GITLAB_SHELL_VERSION=${GITLAB_SHELL_VERSION:-$(cat ${GITLAB_INSTALL_DIR}/GITLAB_ GITLAB_WORKHORSE_VERSION=${GITLAB_WORKHOUSE_VERSION:-$(cat ${GITLAB_INSTALL_DIR}/GITLAB_WORKHORSE_VERSION)} GITLAB_PAGES_VERSION=${GITLAB_PAGES_VERSION:-$(cat ${GITLAB_INSTALL_DIR}/GITLAB_PAGES_VERSION)} -#download golang +# download golang echo "Downloading Go ${GOLANG_VERSION}..." wget -cnv https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz -P ${GITLAB_BUILD_DIR}/ tar -xf ${GITLAB_BUILD_DIR}/go${GOLANG_VERSION}.linux-amd64.tar.gz -C /tmp/ +# setup go toolchain path +export GOROOT=/tmp/go +export PATH=${GOROOT}/bin:$PATH + # install gitlab-shell echo "Downloading gitlab-shell v.${GITLAB_SHELL_VERSION}..." mkdir -p ${GITLAB_SHELL_INSTALL_DIR} @@ -76,47 +80,53 @@ rm -rf ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.gz chown -R ${GITLAB_USER}: ${GITLAB_SHELL_INSTALL_DIR} cd ${GITLAB_SHELL_INSTALL_DIR} -exec_as_git cp -a ${GITLAB_SHELL_INSTALL_DIR}/config.yml.example ${GITLAB_SHELL_INSTALL_DIR}/config.yml +exec_as_git cp -a config.yml.example config.yml if [[ -x ./bin/compile ]]; then echo "Compiling gitlab-shell golang executables..." - exec_as_git PATH=/tmp/go/bin:$PATH GOROOT=/tmp/go ./bin/compile + ./bin/compile + rm -rf go_build fi -exec_as_git ./bin/install +./bin/install # remove unused repositories directory created by gitlab-shell install -exec_as_git rm -rf ${GITLAB_HOME}/repositories +rm -rf ${GITLAB_HOME}/repositories # download gitlab-workhorse echo "Cloning gitlab-workhorse v.${GITLAB_WORKHORSE_VERSION}..." exec_as_git git clone -q -b v${GITLAB_WORKHORSE_VERSION} --depth 1 ${GITLAB_WORKHORSE_URL} ${GITLAB_WORKHORSE_INSTALL_DIR} chown -R ${GITLAB_USER}: ${GITLAB_WORKHORSE_INSTALL_DIR} -#install gitlab-workhorse -cd ${GITLAB_WORKHORSE_INSTALL_DIR} -PATH=/tmp/go/bin:$PATH GOROOT=/tmp/go make install +# install gitlab-workhorse +make -C ${GITLAB_WORKHORSE_INSTALL_DIR} install + +# we don't need to keep the sources around +rm -rf ${GITLAB_WORKHORSE_INSTALL_DIR} #download pages echo "Downloading gitlab-pages v.${GITLAB_PAGES_VERSION}..." exec_as_git git clone -q -b v${GITLAB_PAGES_VERSION} --depth 1 ${GITLAB_PAGES_URL} ${GITLAB_PAGES_INSTALL_DIR} chown -R ${GITLAB_USER}: ${GITLAB_PAGES_INSTALL_DIR} -#install gitlab-pages -cd ${GITLAB_PAGES_INSTALL_DIR} -PATH=/tmp/go/bin:$PATH GOROOT=/tmp/go make -cp -f gitlab-pages /usr/local/bin/ +# install gitlab-pages +make -C ${GITLAB_PAGES_INSTALL_DIR} +cp -f ${GITLAB_PAGES_INSTALL_DIR}/gitlab-pages /usr/local/bin/ + +# we don't need to keep the sources around +rm -rf ${GITLAB_PAGES_INSTALL_DIR} # download gitaly echo "Downloading gitaly v.${GITALY_SERVER_VERSION}..." exec_as_git git clone -q -b v${GITALY_SERVER_VERSION} --depth 1 ${GITLAB_GITALY_URL} ${GITLAB_GITALY_INSTALL_DIR} +cp ${GITLAB_GITALY_INSTALL_DIR}/config.toml.example ${GITLAB_GITALY_INSTALL_DIR}/config.toml chown -R ${GITLAB_USER}: ${GITLAB_GITALY_INSTALL_DIR} -# copy default config for gitaly -exec_as_git cp ${GITLAB_GITALY_INSTALL_DIR}/config.toml.example ${GITLAB_GITALY_INSTALL_DIR}/config.toml # install gitaly cd ${GITLAB_GITALY_INSTALL_DIR} -ln -sf /tmp/go /usr/local/go -PATH=/tmp/go/bin:$PATH make install && make clean -rm -f /usr/local/go +make install + +# cleanup unwanted stuff +rm -rf gitaly gitaly-ssh ruby/vendor/bundle/ruby/**/cache +make clean # remove go rm -rf ${GITLAB_BUILD_DIR}/go${GOLANG_VERSION}.linux-amd64.tar.gz /tmp/go From bf5c5d3a2398ef23124902c1c646f41defcd8e4d Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Wed, 1 Aug 2018 08:17:44 +0530 Subject: [PATCH 2/6] install: update gitlab-shell tarball url --- assets/build/install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/build/install.sh b/assets/build/install.sh index b604f370..4732870a 100755 --- a/assets/build/install.sh +++ b/assets/build/install.sh @@ -2,7 +2,7 @@ set -e GITLAB_CLONE_URL=https://gitlab.com/gitlab-org/gitlab-ce.git -GITLAB_SHELL_URL=https://gitlab.com/gitlab-org/gitlab-shell/repository/archive.tar.gz +GITLAB_SHELL_URL=https://gitlab.com/gitlab-org/gitlab-shell/-/archive/v${GITLAB_SHELL_VERSION}/gitlab-shell-v${GITLAB_SHELL_VERSION}.tar.bz2 GITLAB_WORKHORSE_URL=https://gitlab.com/gitlab-org/gitlab-workhorse.git GITLAB_PAGES_URL=https://gitlab.com/gitlab-org/gitlab-pages.git GITLAB_GITALY_URL=https://gitlab.com/gitlab-org/gitaly.git @@ -74,9 +74,9 @@ export PATH=${GOROOT}/bin:$PATH # install gitlab-shell echo "Downloading gitlab-shell v.${GITLAB_SHELL_VERSION}..." mkdir -p ${GITLAB_SHELL_INSTALL_DIR} -wget -cq ${GITLAB_SHELL_URL}?ref=v${GITLAB_SHELL_VERSION} -O ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.gz -tar xf ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.gz --strip 1 -C ${GITLAB_SHELL_INSTALL_DIR} -rm -rf ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.gz +wget -cq ${GITLAB_SHELL_URL} -O ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.bz2 +tar xf ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.bz2 --strip 1 -C ${GITLAB_SHELL_INSTALL_DIR} +rm -rf ${GITLAB_BUILD_DIR}/gitlab-shell-${GITLAB_SHELL_VERSION}.tar.bz2 chown -R ${GITLAB_USER}: ${GITLAB_SHELL_INSTALL_DIR} cd ${GITLAB_SHELL_INSTALL_DIR} From 3b17df4d95612676d9b766c762b80745509db39d Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Wed, 1 Aug 2018 10:52:25 +0530 Subject: [PATCH 3/6] use GOROOT variable whenever possible --- assets/build/install.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/assets/build/install.sh b/assets/build/install.sh index 4732870a..bdd8de15 100755 --- a/assets/build/install.sh +++ b/assets/build/install.sh @@ -9,6 +9,11 @@ GITLAB_GITALY_URL=https://gitlab.com/gitlab-org/gitaly.git GEM_CACHE_DIR="${GITLAB_BUILD_DIR}/cache" +GOROOT=/tmp/go +PATH=${GOROOT}/bin:$PATH + +export GOROOT PATH + BUILD_DEPENDENCIES="gcc g++ make patch pkg-config cmake paxctl \ libc6-dev ruby${RUBY_VERSION}-dev \ libmysqlclient-dev libpq-dev zlib1g-dev libyaml-dev libssl-dev \ @@ -67,10 +72,6 @@ echo "Downloading Go ${GOLANG_VERSION}..." wget -cnv https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz -P ${GITLAB_BUILD_DIR}/ tar -xf ${GITLAB_BUILD_DIR}/go${GOLANG_VERSION}.linux-amd64.tar.gz -C /tmp/ -# setup go toolchain path -export GOROOT=/tmp/go -export PATH=${GOROOT}/bin:$PATH - # install gitlab-shell echo "Downloading gitlab-shell v.${GITLAB_SHELL_VERSION}..." mkdir -p ${GITLAB_SHELL_INSTALL_DIR} @@ -129,7 +130,7 @@ rm -rf gitaly gitaly-ssh ruby/vendor/bundle/ruby/**/cache make clean # remove go -rm -rf ${GITLAB_BUILD_DIR}/go${GOLANG_VERSION}.linux-amd64.tar.gz /tmp/go +rm -rf ${GITLAB_BUILD_DIR}/go${GOLANG_VERSION}.linux-amd64.tar.gz ${GOROOT} # remove HSTS config from the default headers, we configure it in nginx exec_as_git sed -i "/headers\['Strict-Transport-Security'\]/d" ${GITLAB_INSTALL_DIR}/app/controllers/application_controller.rb From a95766d652dc914e0c0c9c00f3f2bbb599edd9b9 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Wed, 1 Aug 2018 10:54:40 +0530 Subject: [PATCH 4/6] install: simplify gitlab-workhorse build steps --- Dockerfile | 1 - assets/build/install.sh | 13 ++++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index ed8f74e9..de718c9d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,6 @@ ENV GITLAB_VERSION=11.1.3 \ ENV GITLAB_INSTALL_DIR="${GITLAB_HOME}/gitlab" \ GITLAB_SHELL_INSTALL_DIR="${GITLAB_HOME}/gitlab-shell" \ - GITLAB_WORKHORSE_INSTALL_DIR="${GITLAB_HOME}/gitlab-workhorse" \ GITLAB_PAGES_INSTALL_DIR="${GITLAB_HOME}/gitlab-pages" \ GITLAB_GITALY_INSTALL_DIR="${GITLAB_HOME}/gitaly" \ GITLAB_DATA_DIR="${GITLAB_HOME}/data" \ diff --git a/assets/build/install.sh b/assets/build/install.sh index bdd8de15..f3634d84 100755 --- a/assets/build/install.sh +++ b/assets/build/install.sh @@ -7,6 +7,8 @@ GITLAB_WORKHORSE_URL=https://gitlab.com/gitlab-org/gitlab-workhorse.git GITLAB_PAGES_URL=https://gitlab.com/gitlab-org/gitlab-pages.git GITLAB_GITALY_URL=https://gitlab.com/gitlab-org/gitaly.git +GITLAB_WORKHORSE_BUILD_DIR=/tmp/gitlab-workhorse + GEM_CACHE_DIR="${GITLAB_BUILD_DIR}/cache" GOROOT=/tmp/go @@ -94,14 +96,11 @@ rm -rf ${GITLAB_HOME}/repositories # download gitlab-workhorse echo "Cloning gitlab-workhorse v.${GITLAB_WORKHORSE_VERSION}..." -exec_as_git git clone -q -b v${GITLAB_WORKHORSE_VERSION} --depth 1 ${GITLAB_WORKHORSE_URL} ${GITLAB_WORKHORSE_INSTALL_DIR} -chown -R ${GITLAB_USER}: ${GITLAB_WORKHORSE_INSTALL_DIR} +git clone -q -b v${GITLAB_WORKHORSE_VERSION} --depth 1 ${GITLAB_WORKHORSE_URL} ${GITLAB_WORKHORSE_BUILD_DIR} +make -C ${GITLAB_WORKHORSE_BUILD_DIR} install -# install gitlab-workhorse -make -C ${GITLAB_WORKHORSE_INSTALL_DIR} install - -# we don't need to keep the sources around -rm -rf ${GITLAB_WORKHORSE_INSTALL_DIR} +# clean up +rm -rf ${GITLAB_WORKHORSE_BUILD_DIR} #download pages echo "Downloading gitlab-pages v.${GITLAB_PAGES_VERSION}..." From 571334f97e3e6b8c61bd51b3d8bd977c493f4523 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Wed, 1 Aug 2018 10:55:19 +0530 Subject: [PATCH 5/6] install: simplify gitlab-pages build steps --- Dockerfile | 1 - assets/build/install.sh | 14 +++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index de718c9d..d8ff435d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,6 @@ ENV GITLAB_VERSION=11.1.3 \ ENV GITLAB_INSTALL_DIR="${GITLAB_HOME}/gitlab" \ GITLAB_SHELL_INSTALL_DIR="${GITLAB_HOME}/gitlab-shell" \ - GITLAB_PAGES_INSTALL_DIR="${GITLAB_HOME}/gitlab-pages" \ GITLAB_GITALY_INSTALL_DIR="${GITLAB_HOME}/gitaly" \ GITLAB_DATA_DIR="${GITLAB_HOME}/data" \ GITLAB_BUILD_DIR="${GITLAB_CACHE_DIR}/build" \ diff --git a/assets/build/install.sh b/assets/build/install.sh index f3634d84..5479ce1e 100755 --- a/assets/build/install.sh +++ b/assets/build/install.sh @@ -8,6 +8,7 @@ GITLAB_PAGES_URL=https://gitlab.com/gitlab-org/gitlab-pages.git GITLAB_GITALY_URL=https://gitlab.com/gitlab-org/gitaly.git GITLAB_WORKHORSE_BUILD_DIR=/tmp/gitlab-workhorse +GITLAB_PAGES_BUILD_DIR=/tmp/gitlab-pages GEM_CACHE_DIR="${GITLAB_BUILD_DIR}/cache" @@ -102,17 +103,16 @@ make -C ${GITLAB_WORKHORSE_BUILD_DIR} install # clean up rm -rf ${GITLAB_WORKHORSE_BUILD_DIR} -#download pages +# download gitlab-pages echo "Downloading gitlab-pages v.${GITLAB_PAGES_VERSION}..." -exec_as_git git clone -q -b v${GITLAB_PAGES_VERSION} --depth 1 ${GITLAB_PAGES_URL} ${GITLAB_PAGES_INSTALL_DIR} -chown -R ${GITLAB_USER}: ${GITLAB_PAGES_INSTALL_DIR} +git clone -q -b v${GITLAB_PAGES_VERSION} --depth 1 ${GITLAB_PAGES_URL} ${GITLAB_PAGES_BUILD_DIR} # install gitlab-pages -make -C ${GITLAB_PAGES_INSTALL_DIR} -cp -f ${GITLAB_PAGES_INSTALL_DIR}/gitlab-pages /usr/local/bin/ +make -C ${GITLAB_PAGES_BUILD_DIR} +cp -a ${GITLAB_PAGES_BUILD_DIR}/gitlab-pages /usr/local/bin/ -# we don't need to keep the sources around -rm -rf ${GITLAB_PAGES_INSTALL_DIR} +# clean up +rm -rf ${GITLAB_PAGES_BUILD_DIR} # download gitaly echo "Downloading gitaly v.${GITALY_SERVER_VERSION}..." From cdfa19d4f1ff041bee160bc1148082ead023583a Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Wed, 1 Aug 2018 10:55:56 +0530 Subject: [PATCH 6/6] install: simplify and optimize gitaly installation directory contents --- assets/build/install.sh | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/assets/build/install.sh b/assets/build/install.sh index 5479ce1e..56a484f3 100755 --- a/assets/build/install.sh +++ b/assets/build/install.sh @@ -9,6 +9,7 @@ GITLAB_GITALY_URL=https://gitlab.com/gitlab-org/gitaly.git GITLAB_WORKHORSE_BUILD_DIR=/tmp/gitlab-workhorse GITLAB_PAGES_BUILD_DIR=/tmp/gitlab-pages +GITLAB_GITALY_BUILD_DIR=/tmp/gitaly GEM_CACHE_DIR="${GITLAB_BUILD_DIR}/cache" @@ -114,19 +115,20 @@ cp -a ${GITLAB_PAGES_BUILD_DIR}/gitlab-pages /usr/local/bin/ # clean up rm -rf ${GITLAB_PAGES_BUILD_DIR} -# download gitaly +# download and build gitaly echo "Downloading gitaly v.${GITALY_SERVER_VERSION}..." -exec_as_git git clone -q -b v${GITALY_SERVER_VERSION} --depth 1 ${GITLAB_GITALY_URL} ${GITLAB_GITALY_INSTALL_DIR} -cp ${GITLAB_GITALY_INSTALL_DIR}/config.toml.example ${GITLAB_GITALY_INSTALL_DIR}/config.toml -chown -R ${GITLAB_USER}: ${GITLAB_GITALY_INSTALL_DIR} +git clone -q -b v${GITALY_SERVER_VERSION} --depth 1 ${GITLAB_GITALY_URL} ${GITLAB_GITALY_BUILD_DIR} # install gitaly -cd ${GITLAB_GITALY_INSTALL_DIR} -make install +make -C ${GITLAB_GITALY_BUILD_DIR} install +mkdir -p ${GITLAB_GITALY_INSTALL_DIR} +cp -a ${GITLAB_GITALY_BUILD_DIR}/ruby ${GITLAB_GITALY_INSTALL_DIR}/ +cp -a ${GITLAB_GITALY_BUILD_DIR}/config.toml.example ${GITLAB_GITALY_INSTALL_DIR}/config.toml +rm -rf ${GITLAB_GITALY_INSTALL_DIR}/ruby/vendor/bundle/ruby/**/cache +chown -R ${GITLAB_USER}: ${GITLAB_GITALY_INSTALL_DIR} -# cleanup unwanted stuff -rm -rf gitaly gitaly-ssh ruby/vendor/bundle/ruby/**/cache -make clean +# clean up +rm -rf ${GITLAB_GITALY_BUILD_DIR} # remove go rm -rf ${GITLAB_BUILD_DIR}/go${GOLANG_VERSION}.linux-amd64.tar.gz ${GOROOT}