#!/usr/bin/env bash # ci.bash -- Build code-server in the CI. set -euo pipefail # This script assumes that yarn has already ran. function main() { cd "$(dirname "${0}")/.." local code_server_version=${VERSION:-${TRAVIS_TAG:-${DRONE_TAG:-}}} if [[ -z $code_server_version ]]; then code_server_version=$(grep version ./package.json | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[:space:]') fi export VERSION=$code_server_version YARN_CACHE_FOLDER="$(pwd)/yarn-cache" export YARN_CACHE_FOLDER # Always minify and package on tags since that's when releases are pushed. if [[ -n ${DRONE_TAG:-} || -n ${TRAVIS_TAG:-} ]]; then export MINIFY="true" export PACKAGE="true" fi yarn build yarn binary if [[ -n ${PACKAGE:-} ]]; then yarn package fi cd binaries if [[ -n ${STRIP_BIN_TARGET:-} ]]; then # In this case provide plainly named binaries. for binary in code-server*; do echo "Moving $binary to code-server" mv "$binary" code-server done elif [[ -n ${DRONE_TAG:-} || -n ${TRAVIS_TAG:-} ]]; then # Prepare directory for uploading binaries on release. for binary in code-server*; do mkdir -p "../binary-upload" local prefix="code-server-$code_server_version-" local target="${binary#$prefix}" if [[ $target == "linux-x86_64" ]]; then echo "Copying $binary to ../binary-upload/latest-linux" cp "$binary" "../binary-upload/latest-linux" fi local gcp_dir gcp_dir="../binary-upload/releases/$code_server_version/$target" mkdir -p "$gcp_dir" echo "Copying $binary to $gcp_dir/code-server" cp "$binary" "$gcp_dir/code-server" done fi } main "$@"