mirror of
https://github.com/SmartHoneybee/ubiquitous-memory
synced 2025-04-29 23:29:39 +02:00
* Update to v7.1.2 * Try Node 16 again Last time we tried to use this, we ran into all sorts of errors due to node-sass, which is used by the mattermost frontend. I'm changing this because our build logs show NPM throwing a fit about not supporting Node 15, which we've been using. And the last several PR builds have errored out in NPM in weird ways that the internet keeps suggesting "just update NPM" to fix, so here we are. ref: commit 69dda8131efe815218fc8d26be3bd99ff2dd167f
136 lines
5.9 KiB
Bash
Executable File
136 lines
5.9 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eux
|
|
# build user
|
|
BUILD_USER_HOME="${BUILD_USER_HOME:-/build}"
|
|
BUILD_USER_NAME="${BUILD_USER_NAME:-build}"
|
|
# Debian release used during build
|
|
DEBIAN_RELEASE="${DEBIAN_RELEASE:-stretch}"
|
|
# Mattermost version to build
|
|
MATTERMOST_RELEASE="${MATTERMOST_RELEASE:-v5.26.0}"
|
|
MMCTL_RELEASE="${MMCTL_RELEASE:-v5.26.0}"
|
|
# node key id and release
|
|
NODE_KEY="${NODE_KEY:-9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280}"
|
|
NODE_RELEASE="${NODE_RELEASE:-16}"
|
|
# golang version
|
|
GO_VERSION="${GO_VERSION:-1.18.1}"
|
|
|
|
if [ "$(id -u)" -eq 0 ]; then # as root user
|
|
# create build user, if needed
|
|
set +e
|
|
if ! id -u "${BUILD_USER_NAME}"; then # create build user
|
|
set -e
|
|
useradd --create-home --home-dir "${BUILD_USER_HOME}" --skel "${PWD}" \
|
|
"${BUILD_USER_NAME}"
|
|
fi
|
|
set -e
|
|
# configure apt
|
|
printf 'APT::Install-Recommends "0";' \
|
|
> '/etc/apt/apt.conf.d/99-no-install-recommends'
|
|
printf 'APT::Install-Suggests "0";' \
|
|
> '/etc/apt/apt.conf.d/99-no-install-suggests'
|
|
printf 'APT::Get::Assume-Yes "true";' \
|
|
> '/etc/apt/apt.conf.d/99-assume-yes'
|
|
# update repositories
|
|
apt-get update
|
|
# dependencies to setup repositories
|
|
apt-get install --quiet \
|
|
gnupg2 dirmngr apt-transport-https ca-certificates curl
|
|
# receive missing key
|
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
|
|
# add required additional repositories
|
|
printf 'deb-src http://deb.debian.org/debian %s main' "${DEBIAN_RELEASE}" \
|
|
> "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-source.list"
|
|
printf 'deb http://deb.debian.org/debian %s-backports main' "${DEBIAN_RELEASE}" \
|
|
> "/etc/apt/sources.list.d/${DEBIAN_RELEASE}-backports.list"
|
|
printf 'deb https://deb.nodesource.com/node_%s.x %s main' "${NODE_RELEASE}" "${DEBIAN_RELEASE}" \
|
|
> '/etc/apt/sources.list.d/nodesource.list'
|
|
# update repositories
|
|
apt-get update
|
|
# install dependencies
|
|
apt-get install --quiet \
|
|
wget build-essential patch git nodejs python2
|
|
# install 'pngquant' build dependencies (required by node module)
|
|
apt-get build-dep --quiet \
|
|
pngquant
|
|
# install go from golang.org
|
|
wget https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz
|
|
tar -xvf go${GO_VERSION}.linux-amd64.tar.gz
|
|
mv go /usr/local
|
|
export GOROOT=/usr/local/go
|
|
export PATH=$GOROOT/bin:$PATH
|
|
# FIXME go (executed by build user) writes to GOROOT
|
|
install --directory --owner="${BUILD_USER_NAME}" \
|
|
"$(go env GOROOT)/pkg/$(go env GOOS)_$(go env GOARCH)"
|
|
# Re-invoke this build.sh script with the 'build' user
|
|
runuser -u "${BUILD_USER_NAME}" -- "${0}"
|
|
# salvage build artifacts
|
|
cp --verbose \
|
|
"${BUILD_USER_HOME}/mattermost-${MATTERMOST_RELEASE}-$(go env GOOS)-$(go env GOARCH).tar.gz" \
|
|
"${BUILD_USER_HOME}/mattermost-${MATTERMOST_RELEASE}-$(go env GOOS)-$(go env GOARCH).tar.gz.sha512sum" \
|
|
"${HOME}"
|
|
exit 0
|
|
fi
|
|
# as non-root user
|
|
export GOROOT=/usr/local/go
|
|
export PATH=$GOROOT/bin:$PATH
|
|
cd "${HOME}"
|
|
# download and extract Mattermost sources
|
|
for COMPONENT in server webapp; do
|
|
install --directory "${HOME}/go/src/github.com/mattermost/mattermost-${COMPONENT}"
|
|
wget --quiet --continue --output-document="mattermost-${COMPONENT}.tar.gz" \
|
|
"https://github.com/mattermost/mattermost-${COMPONENT}/archive/${MATTERMOST_RELEASE}.tar.gz"
|
|
tar --directory="${HOME}/go/src/github.com/mattermost/mattermost-${COMPONENT}" \
|
|
--strip-components=1 --extract --file="mattermost-${COMPONENT}.tar.gz"
|
|
done
|
|
# prepare the go build environment
|
|
install --directory "${HOME}/go/bin"
|
|
if [ "$(go env GOOS)_$(go env GOARCH)" != 'linux_amd64' ]; then
|
|
ln --symbolic \
|
|
"${HOME}/go/bin/$(go env GOOS)_$(go env GOARCH)" \
|
|
"${HOME}/go/bin/linux_amd64"
|
|
fi
|
|
# build mmctl
|
|
install --directory "${HOME}/go/src/github.com/mattermost/mmctl"
|
|
wget --quiet --continue --output-document="mmctl.tar.gz" \
|
|
"https://github.com/mattermost/mmctl/archive/${MMCTL_RELEASE}.tar.gz"
|
|
tar --directory="${HOME}/go/src/github.com/mattermost/mmctl" \
|
|
--strip-components=1 --extract --file="mmctl.tar.gz"
|
|
find "${HOME}/go/src/github.com/mattermost/mmctl/" -type f -name '*.go' | xargs \
|
|
sed -i \
|
|
-e 's#//go:build linux || darwin#//go:build linux || darwin || dragonfly || freebsd || netbsd || openbsd#' \
|
|
-e 's#// +build linux darwin#// +build linux darwin dragonfly freebsd netbsd openbsd#'
|
|
make --directory="${HOME}/go/src/github.com/mattermost/mmctl" \
|
|
BUILD_NUMBER="dev-$(go env GOOS)-$(go env GOARCH)-${MMCTL_RELEASE}" \
|
|
ADVANCED_VET=0 \
|
|
GO="GOARCH= GOOS= $(command -v go)"
|
|
# build Mattermost webapp
|
|
npm set progress false
|
|
sed -i -e 's#--verbose#--display minimal#' \
|
|
"${HOME}/go/src/github.com/mattermost/mattermost-webapp/package.json"
|
|
make --directory="${HOME}/go/src/github.com/mattermost/mattermost-webapp" \
|
|
build
|
|
# build Mattermost server
|
|
patch --directory="${HOME}/go/src/github.com/mattermost/mattermost-server" \
|
|
--strip=1 -t < "${HOME}/build-release.patch"
|
|
sed -i \
|
|
-e 's#go generate#env --unset=GOOS --unset=GOARCH go generate#' \
|
|
-e 's#$(GO) generate#env --unset=GOOS --unset=GOARCH go generate#' \
|
|
-e 's#PWD#CURDIR#' \
|
|
"${HOME}/go/src/github.com/mattermost/mattermost-server/Makefile" \
|
|
"${HOME}/go/src/github.com/mattermost/mattermost-server/build/release.mk"
|
|
make --directory="${HOME}/go/src/github.com/mattermost/mattermost-server" \
|
|
config-reset \
|
|
BUILD_NUMBER="dev-$(go env GOOS)-$(go env GOARCH)-${MATTERMOST_RELEASE}" \
|
|
GO="GOARCH= GOOS= $(command -v go)" \
|
|
PLUGIN_PACKAGES=''
|
|
make --directory="${HOME}/go/src/github.com/mattermost/mattermost-server" \
|
|
build-linux package-linux \
|
|
BUILD_NUMBER="dev-$(go env GOOS)-$(go env GOARCH)-${MATTERMOST_RELEASE}" \
|
|
GO="GOARCH=$(go env GOARCH) GOOS=$(go env GOOS) $(command -v go)" \
|
|
PLUGIN_PACKAGES=''
|
|
# rename archive and calculate its SHA512 sum
|
|
mv "${HOME}/go/src/github.com/mattermost/mattermost-server/dist/mattermost-team-linux-amd64.tar.gz" \
|
|
"${HOME}/mattermost-${MATTERMOST_RELEASE}-$(go env GOOS)-$(go env GOARCH).tar.gz"
|
|
sha512sum "${HOME}/mattermost-${MATTERMOST_RELEASE}-$(go env GOOS)-$(go env GOARCH).tar.gz" | \
|
|
tee "${HOME}/mattermost-${MATTERMOST_RELEASE}-$(go env GOOS)-$(go env GOARCH).tar.gz.sha512sum"
|