6275520348
* Fix building from source on arm Not building from source causes argon2 to pull the wrong arch, so we have to build from source. But building from source is causing the new Kerberos module to fail on arm64 and keytar to fail on both. The latter has been very difficult to debug because the GitHub image provides a different result to containers based on Ubuntu 20.04. Because of this, use a container instead. Use debian:buster as the container because it is easier to set up the architecture sources (no need to modify the sources) and because it seems to come with glibc 2.28 rather than 2.31. Also use the exact version of Node (18.15.0) for reproducibility. * Set owner and group during tar to zero Otherwise you get IDs that can cause (benign) errors while extracting, which might be confusing. At the very least, I did not see these errors from previous tars (although they seem to use 1001). There is no guarantee what IDs might exist so 0 seems the most reasonable.
74 lines
2.2 KiB
Bash
Executable File
74 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Packages code-server for the current OS and architecture into ./release-packages.
|
|
# This script assumes that a standalone release is built already into ./release-standalone
|
|
|
|
main() {
|
|
cd "$(dirname "${0}")/../.."
|
|
source ./ci/lib.sh
|
|
source ./ci/build/build-lib.sh
|
|
|
|
# Allow us to override architecture
|
|
# we use this for our Linux ARM64 cross compile builds
|
|
if [ "$#" -eq 1 ] && [ "$1" ]; then
|
|
ARCH=$1
|
|
fi
|
|
|
|
mkdir -p release-packages
|
|
|
|
release_archive
|
|
|
|
if [[ $OS == "linux" ]]; then
|
|
release_nfpm
|
|
fi
|
|
}
|
|
|
|
release_archive() {
|
|
local release_name="code-server-$VERSION-$OS-$ARCH"
|
|
if [[ $OS == "linux" ]]; then
|
|
tar -czf "release-packages/$release_name.tar.gz" --owner=0 --group=0 --transform "s/^\.\/release-standalone/$release_name/" ./release-standalone
|
|
else
|
|
tar -czf "release-packages/$release_name.tar.gz" -s "/^release-standalone/$release_name/" release-standalone
|
|
fi
|
|
|
|
echo "done (release-packages/$release_name)"
|
|
|
|
release_gcp
|
|
}
|
|
|
|
release_gcp() {
|
|
mkdir -p "release-gcp/$VERSION"
|
|
cp "release-packages/$release_name.tar.gz" "./release-gcp/$VERSION/$OS-$ARCH.tar.gz"
|
|
mkdir -p "release-gcp/latest"
|
|
cp "./release-packages/$release_name.tar.gz" "./release-gcp/latest/$OS-$ARCH.tar.gz"
|
|
}
|
|
|
|
# Generates deb and rpm packages.
|
|
release_nfpm() {
|
|
local nfpm_config
|
|
|
|
export NFPM_ARCH
|
|
|
|
# Code deletes some files from the extension node_modules directory which
|
|
# leaves broken symlinks in the corresponding .bin directory. nfpm will fail
|
|
# on these broken symlinks so clean them up.
|
|
rm -fr "./release-standalone/lib/vscode/extensions/node_modules/.bin"
|
|
|
|
PKG_FORMAT="deb"
|
|
NFPM_ARCH="$(get_nfpm_arch $PKG_FORMAT "$ARCH")"
|
|
nfpm_config="$(envsubst < ./ci/build/nfpm.yaml)"
|
|
echo "Building deb"
|
|
echo "$nfpm_config" | head --lines=4
|
|
nfpm pkg -f <(echo "$nfpm_config") --target "release-packages/code-server_${VERSION}_${NFPM_ARCH}.deb"
|
|
|
|
PKG_FORMAT="rpm"
|
|
NFPM_ARCH="$(get_nfpm_arch $PKG_FORMAT "$ARCH")"
|
|
nfpm_config="$(envsubst < ./ci/build/nfpm.yaml)"
|
|
echo "Building rpm"
|
|
echo "$nfpm_config" | head --lines=4
|
|
nfpm pkg -f <(echo "$nfpm_config") --target "release-packages/code-server-$VERSION-$NFPM_ARCH.rpm"
|
|
}
|
|
|
|
main "$@"
|