mirror of
https://github.com/SmartHoneybee/ubiquitous-memory
synced 2025-04-29 23:29:39 +02:00
* Update to Mattermost 5.28.1 * Update release.mk patch for 5.28 * Repair to original patch text * Run patch in batch mode * Try to fix patch file I'm having a hard time understanding why this is not working on CI. * Working 5.28.1 release.mk patch I was previously working off mattermost-server HEAD's copy of release.mk which has apparently changed since 5.28.1, so future PRs will need to make more changes to this patch. But for now, this should allow the patch to be applied.
108 lines
4.7 KiB
Bash
108 lines
4.7 KiB
Bash
#!/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.4.0}"
|
|
# node key id and release
|
|
NODE_KEY="${NODE_KEY:-9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280}"
|
|
NODE_RELEASE="${NODE_RELEASE:-10}"
|
|
|
|
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 parallel
|
|
# receive missing key (retry on failure)
|
|
parallel --verbose --delay=30 --retries=5 "apt-key adv --keyserver 'ipv4.pool.sks-keyservers.net' --recv-keys '{}'" ::: "${NODE_KEY}"
|
|
# 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 go from Debian backports
|
|
apt-get install --quiet --target-release "${DEBIAN_RELEASE}-backports" \
|
|
golang-go
|
|
# install dependencies
|
|
apt-get install --quiet \
|
|
wget build-essential patch git nodejs
|
|
# install 'pngquant' build dependencies (required by node module)
|
|
apt-get build-dep --quiet \
|
|
pngquant
|
|
# 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)"
|
|
# switch to 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
|
|
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
|
|
# 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
|
|
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
|
|
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-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"
|