Rename binary release to standalone

This commit is contained in:
Anmol Sethi 2020-05-27 16:39:17 -04:00
parent 06c26a22cd
commit f71d8875d0
No known key found for this signature in database
GPG Key ID: 8CEF1878FF10ADEB
13 changed files with 74 additions and 74 deletions

2
.gitignore vendored
View File

@ -4,7 +4,7 @@ dist*
out* out*
release/ release/
release-npm-package/ release-npm-package/
release-binary/ release-standalone/
release-packages/ release-packages/
release-gcp/ release-gcp/
release-images/ release-images/

View File

@ -75,19 +75,19 @@ You can disable minification by setting `MINIFY=`.
- Builds vscode into `./lib/vscode/out-vscode`. - Builds vscode into `./lib/vscode/out-vscode`.
- [./ci/build/build-release.sh](./build/build-release.sh) (`yarn release`) - [./ci/build/build-release.sh](./build/build-release.sh) (`yarn release`)
- Bundles the output of the above two scripts into a single node module at `./release`. - Bundles the output of the above two scripts into a single node module at `./release`.
- [./ci/build/build-binary-release.sh](./build/build-binary-release.sh) (`yarn release:binary`) - [./ci/build/build-standalone-release.sh](./build/build-standalone-release.sh) (`yarn release:standalone`)
- Requires a node module already built into `./release` with the above script. - Requires a node module already built into `./release` with the above script.
- Will build a binary release with node and node_modules bundled into `./release-binary`. - Will build a standalone release with node and node_modules bundled into `./release-standalone`.
- [./ci/build/clean.sh](./build/clean.sh) (`yarn clean`) - [./ci/build/clean.sh](./build/clean.sh) (`yarn clean`)
- Removes all build artifacts. - Removes all build artifacts.
- Will also `git reset --hard lib/vscode`. - Will also `git reset --hard lib/vscode`.
- Useful to do a clean build. - Useful to do a clean build.
- [./ci/build/code-server.sh](./build/code-server.sh) - [./ci/build/code-server.sh](./build/code-server.sh)
- Copied into binary releases to run code-server with the bundled node binary. - Copied into standalone releases to run code-server with the bundled node binary.
- [./ci/build/test-binary-release.sh](./build/test-binary-release.sh) (`yarn test:binary-release`) - [./ci/build/test-standalone-release.sh](./build/test-standalone-release.sh) (`yarn test:standalone-release`)
- Ensures code-server in the `./release-binary` directory works by installing an extension. - Ensures code-server in the `./release-standalone` directory works by installing an extension.
- [./ci/build/build-packages.sh](./build/build-packages.sh) (`yarn package`) - [./ci/build/build-packages.sh](./build/build-packages.sh) (`yarn package`)
- Packages `./release-binary` into a `.tar.gz` archive in `./release-packages`. - Packages `./release-standalone` into a `.tar.gz` archive in `./release-packages`.
- If on linux, [nfpm](https://github.com/goreleaser/nfpm) is used to generate `.deb` and `.rpm`. - If on linux, [nfpm](https://github.com/goreleaser/nfpm) is used to generate `.deb` and `.rpm`.
- [./ci/build/nfpm.yaml](./build/nfpm.yaml) - [./ci/build/nfpm.yaml](./build/nfpm.yaml)
- Used to configure [nfpm](https://github.com/goreleaser/nfpm) to generate `.deb` and `.rpm`. - Used to configure [nfpm](https://github.com/goreleaser/nfpm) to generate `.deb` and `.rpm`.
@ -131,9 +131,9 @@ Helps avoid clobbering the CI configuration.
- [./steps/release.sh](./steps/release.sh) - [./steps/release.sh](./steps/release.sh)
- Runs the release process. - Runs the release process.
- Generates the npm package at `./release`. - Generates the npm package at `./release`.
- [./steps/release-binary.sh](./steps/release-binary.sh) - [./steps/release-packages.sh](./steps/release-packages.sh)
- Takes the output of the previous script and generates a binary release and - Takes the output of the previous script and generates a standalone release and
release packages into `release-packages`. release packages into `./release-packages`.
- [./steps/publish-npm.sh](./steps/publish-npm.sh) - [./steps/publish-npm.sh](./steps/publish-npm.sh)
- Grabs the `npm-package` release artifact for the current commit and publishes it on npm. - Grabs the `npm-package` release artifact for the current commit and publishes it on npm.
- [./steps/build-docker-image.sh](./steps/build-docker-image.sh) - [./steps/build-docker-image.sh](./steps/build-docker-image.sh)

View File

@ -2,7 +2,7 @@
set -euo pipefail set -euo pipefail
# Packages code-server for the current OS and architecture into ./release-packages. # Packages code-server for the current OS and architecture into ./release-packages.
# This script assumes that a binary release is built already into ./release-binary # This script assumes that a standalone release is built already into ./release-standalone
main() { main() {
cd "$(dirname "${0}")/../.." cd "$(dirname "${0}")/../.."
@ -29,9 +29,9 @@ main() {
release_archive() { release_archive() {
local release_name="code-server-$VERSION-$OS-$ARCH" local release_name="code-server-$VERSION-$OS-$ARCH"
if [[ $OS == "linux" ]]; then if [[ $OS == "linux" ]]; then
tar -czf "release-packages/$release_name.tar.gz" --transform "s/^\.\/release-binary/$release_name/" ./release-binary tar -czf "release-packages/$release_name.tar.gz" --transform "s/^\.\/release-standalone/$release_name/" ./release-standalone
else else
tar -czf "release-packages/$release_name.tar.gz" -s "/^release-binary/$release_name/" release-binary tar -czf "release-packages/$release_name.tar.gz" -s "/^release-standalone/$release_name/" ./release-standalone
fi fi
echo "done (release-packages/$release_name)" echo "done (release-packages/$release_name)"

View File

@ -5,8 +5,8 @@ main() {
cd "$(dirname "${0}")/../.." cd "$(dirname "${0}")/../.."
source ./ci/lib.sh source ./ci/lib.sh
rsync "$RELEASE_PATH/" "$RELEASE_PATH-binary" rsync "$RELEASE_PATH/" "$RELEASE_PATH-standalone"
RELEASE_PATH+=-binary RELEASE_PATH+=-standalone
# We cannot find the path to node from $PATH because yarn shims a script to ensure # We cannot find the path to node from $PATH because yarn shims a script to ensure
# we use the same version it's using so we instead run a script with yarn that # we use the same version it's using so we instead run a script with yarn that

View File

@ -8,7 +8,7 @@ main() {
rm -Rf \ rm -Rf \
out \ out \
release \ release \
release-binary \ release-standalone \
release-packages \ release-packages \
release-gcp \ release-gcp \
release-images/ \ release-images/ \

View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# This script is intended to be bundled into the binary releases. # This script is intended to be bundled into the standalone releases.
# Runs code-server with the bundled Node binary. # Runs code-server with the bundled node binary.
# More complicated than readlink -f or realpath to support macOS. # More complicated than readlink -f or realpath to support macOS.
# See https://github.com/cdr/code-server/issues/1537 # See https://github.com/cdr/code-server/issues/1537

View File

@ -13,4 +13,4 @@ license: "MIT"
files: files:
./ci/build/code-server-nfpm.sh: /usr/bin/code-server ./ci/build/code-server-nfpm.sh: /usr/bin/code-server
./ci/build/code-server.service: /usr/lib/systemd/user/code-server.service ./ci/build/code-server.service: /usr/lib/systemd/user/code-server.service
./release-binary/**/*: "/usr/lib/code-server/" ./release-standalone/**/*: "/usr/lib/code-server/"

View File

@ -10,18 +10,18 @@ main() {
local EXTENSIONS_DIR local EXTENSIONS_DIR
EXTENSIONS_DIR="$(mktemp -d)" EXTENSIONS_DIR="$(mktemp -d)"
echo "Testing binary release" echo "Testing standalone release."
./release-binary/bin/code-server --extensions-dir "$EXTENSIONS_DIR" --install-extension ms-python.python ./release-standalone/bin/code-server --extensions-dir "$EXTENSIONS_DIR" --install-extension ms-python.python
local installed_extensions local installed_extensions
installed_extensions="$(./release-binary/bin/code-server --extensions-dir "$EXTENSIONS_DIR" --list-extensions 2>&1)" installed_extensions="$(./release-standalone/bin/code-server --extensions-dir "$EXTENSIONS_DIR" --list-extensions 2>&1)"
if [[ $installed_extensions != "ms-python.python" ]]; then if [[ $installed_extensions != "ms-python.python" ]]; then
echo "Unexpected output from listing extensions:" echo "Unexpected output from listing extensions:"
echo "$installed_extensions" echo "$installed_extensions"
exit 1 exit 1
fi fi
echo "Binary release works correctly" echo "Standalone release works correctly."
} }
main "$@" main "$@"

View File

@ -7,8 +7,8 @@ main() {
# https://github.com/actions/upload-artifact/issues/38 # https://github.com/actions/upload-artifact/issues/38
tar -xzf release-npm-package/package.tar.gz tar -xzf release-npm-package/package.tar.gz
yarn release:binary yarn release:standalone
yarn test:binary-release yarn test:standalone-release
yarn package yarn package
} }

View File

@ -51,14 +51,14 @@ yarn --production
node . node .
``` ```
Now you can build binary packages with: Now you can build the packages with:
``` ```
yarn release:binary yarn release:standalone
yarn test:binary-release yarn test:standalone-release
yarn package yarn package
# The binary release is in ./release-binary # The standalone release is in ./release-standalone
# .deb, .rpm and the binary archive are in ./release-packages # .deb, .rpm and the standalone archive are in ./release-packages
``` ```
## Structure ## Structure

View File

@ -10,7 +10,7 @@
- [Arch Linux](#arch-linux) - [Arch Linux](#arch-linux)
- [yarn, npm](#yarn-npm) - [yarn, npm](#yarn-npm)
- [macOS](#macos) - [macOS](#macos)
- [Binary Releases](#binary-releases) - [Standalone Releases](#standalone-releases)
- [Docker](#docker) - [Docker](#docker)
<!-- END doctoc generated TOC please keep comment here to allow auto update --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->
@ -50,9 +50,9 @@ commands presented in the rest of this document.
- `--dry-run` to echo the commands for the install process without running them. - `--dry-run` to echo the commands for the install process without running them.
- `--method` to choose the installation method. - `--method` to choose the installation method.
- `--method=detect` to detect the package manager but fallback to `--method=archive`. - `--method=detect` to detect the package manager but fallback to `--method=standalone`.
- `--method=archive` to install a binary release archive into `~/.local`. - `--method=standalone` to install a standalone release archive into `~/.local`.
- `--prefix=/usr/local` to install a binary release archive system wide. - `--prefix=/usr/local` to install a standalone release archive system wide.
- `--version=X.X.X` to install version `X.X.X` instead of latest. - `--version=X.X.X` to install version `X.X.X` instead of latest.
- `--help` to see full usage docs. - `--help` to see full usage docs.
@ -61,17 +61,17 @@ commands presented in the rest of this document.
- For Debian, Ubuntu and Raspbian it will install the latest deb package. - For Debian, Ubuntu and Raspbian it will install the latest deb package.
- For Fedora, CentOS, RHEL and openSUSE it will install the latest rpm package. - For Fedora, CentOS, RHEL and openSUSE it will install the latest rpm package.
- For Arch Linux it will install the AUR package. - For Arch Linux it will install the AUR package.
- For any unrecognized Linux operating system it will install the latest binary release into `~/.local`. - For any unrecognized Linux operating system it will install the latest standalone release into `~/.local`.
- Add `~/.local/bin` to your `$PATH` to run code-server. - Add `~/.local/bin` to your `$PATH` to run code-server.
- For macOS it will install the Homebrew package. - For macOS it will install the Homebrew package.
- If Homebrew is not installed it will install the latest binary release into `~/.local`. - If Homebrew is not installed it will install the latest standalone release into `~/.local`.
- Add `~/.local/bin` to your `$PATH` to run code-server. - Add `~/.local/bin` to your `$PATH` to run code-server.
- If ran on an architecture with no binary releases, it will install the npm package with `yarn` or `npm`. - If ran on an architecture with no releases, it will install the npm package with `yarn` or `npm`.
- We only have binary releases for amd64 and arm64 presently. - We only have releases for amd64 and arm64 presently.
## Debian, Ubuntu ## Debian, Ubuntu
@ -136,7 +136,7 @@ brew services start code-server
# Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
``` ```
## Binary Releases ## Standalone Releases
We publish self contained `.tar.gz` archives for every release on [github](https://github.com/cdr/code-server/releases). We publish self contained `.tar.gz` archives for every release on [github](https://github.com/cdr/code-server/releases).
They bundle the node binary and `node_modules`. They bundle the node binary and `node_modules`.
@ -148,7 +148,7 @@ They bundle the node binary and `node_modules`.
You can add the code-server `bin` directory to your `$PATH` to easily execute `code-server` You can add the code-server `bin` directory to your `$PATH` to easily execute `code-server`
without the full path every time. without the full path every time.
Here is an example script for installing and using a binary `code-server` release on Linux: Here is an example script for installing and using a standalone `code-server` release on Linux:
```bash ```bash
mkdir -p ~/.local/lib ~/.local/bin mkdir -p ~/.local/lib ~/.local/bin

View File

@ -26,14 +26,14 @@ Usage:
Echo the commands for the install process without running them. Echo the commands for the install process without running them.
--version X.X.X --version X.X.X
Install a specific version instead of the latest. Install a specific version instead of the latest.
--method [detect | archive] --method [detect | standalone]
Choose the installation method. Defaults to detect. Choose the installation method. Defaults to detect.
- detect detects the system package manager and tries to use it. - detect detects the system package manager and tries to use it.
Full reference on the process is further below. Full reference on the process is further below.
- archive installs a binary release archive into ~/.local - standalone installs a standalone release archive into ~/.local
Add ~/.local/bin to your \$PATH to use it. Add ~/.local/bin to your \$PATH to use it.
--prefix <dir> --prefix <dir>
Sets the prefix used by binary release archives. Defaults to ~/.local Sets the prefix used by standalone release archives. Defaults to ~/.local
The release is unarchived into ~/.local/lib/code-server-X.X.X The release is unarchived into ~/.local/lib/code-server-X.X.X
and the binary symlinked into ~/.local/bin/code-server and the binary symlinked into ~/.local/bin/code-server
To install system wide pass ---prefix=/usr/local To install system wide pass ---prefix=/usr/local
@ -41,16 +41,16 @@ Usage:
- For Debian, Ubuntu and Raspbian it will install the latest deb package. - For Debian, Ubuntu and Raspbian it will install the latest deb package.
- For Fedora, CentOS, RHEL and openSUSE it will install the latest rpm package. - For Fedora, CentOS, RHEL and openSUSE it will install the latest rpm package.
- For Arch Linux it will install the AUR package. - For Arch Linux it will install the AUR package.
- For any unrecognized Linux operating system it will install the latest binary - For any unrecognized Linux operating system it will install the latest standalone
release into ~/.local release into ~/.local
- For macOS it will install the Homebrew package. - For macOS it will install the Homebrew package.
- If Homebrew is not installed it will install the latest binary release - If Homebrew is not installed it will install the latest standalone release
into ~/.local into ~/.local
- If ran on an architecture with no binary releases, it will install the - If ran on an architecture with no releases, it will install the
npm package with yarn or npm. npm package with yarn or npm.
- We only have binary releases for amd64 and arm64 presently. - We only have releases for amd64 and arm64 presently.
It will cache all downloaded assets into ~/.cache/code-server It will cache all downloaded assets into ~/.cache/code-server
@ -65,12 +65,12 @@ echo_latest_version() {
echo "$version" echo "$version"
} }
echo_archive_postinstall() { echo_standalone_postinstall() {
echo echo
cat << EOF cat << EOF
Binary release has been installed into $ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION Standalone release has been installed into $STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION
Please extend your path to use code-server: Please extend your path to use code-server:
PATH="$ARCHIVE_INSTALL_PREFIX/bin:\$PATH" PATH="$STANDALONE_INSTALL_PREFIX/bin:\$PATH"
Then you can run: Then you can run:
code-server code-server
EOF EOF
@ -94,7 +94,7 @@ main() {
unset \ unset \
DRY_RUN \ DRY_RUN \
METHOD \ METHOD \
ARCHIVE_INSTALL_PREFIX \ STANDALONE_INSTALL_PREFIX \
VERSION \ VERSION \
OPTIONAL OPTIONAL
@ -111,11 +111,11 @@ main() {
METHOD="$(parse_arg "$@")" METHOD="$(parse_arg "$@")"
;; ;;
--prefix) --prefix)
ARCHIVE_INSTALL_PREFIX="$(parse_arg "$@")" STANDALONE_INSTALL_PREFIX="$(parse_arg "$@")"
shift shift
;; ;;
--prefix=*) --prefix=*)
ARCHIVE_INSTALL_PREFIX="$(parse_arg "$@")" STANDALONE_INSTALL_PREFIX="$(parse_arg "$@")"
;; ;;
--version) --version)
VERSION="$(parse_arg "$@")" VERSION="$(parse_arg "$@")"
@ -140,12 +140,12 @@ main() {
VERSION="${VERSION-$(echo_latest_version)}" VERSION="${VERSION-$(echo_latest_version)}"
METHOD="${METHOD-detect}" METHOD="${METHOD-detect}"
if [ "$METHOD" != detect ] && [ "$METHOD" != archive ]; then if [ "$METHOD" != detect ] && [ "$METHOD" != standalone ]; then
echoerr "Unknown install method \"$METHOD\"" echoerr "Unknown install method \"$METHOD\""
echoerr "Run with --help to see usage." echoerr "Run with --help to see usage."
exit 1 exit 1
fi fi
ARCHIVE_INSTALL_PREFIX="${ARCHIVE_INSTALL_PREFIX-$HOME/.local}" STANDALONE_INSTALL_PREFIX="${STANDALONE_INSTALL_PREFIX-$HOME/.local}"
OS="$(os)" OS="$(os)"
if [ ! "$OS" ]; then if [ ! "$OS" ]; then
@ -157,9 +157,9 @@ main() {
ARCH="$(arch)" ARCH="$(arch)"
if [ ! "$ARCH" ]; then if [ ! "$ARCH" ]; then
if [ "$METHOD" = archive ]; then if [ "$METHOD" = standalone ]; then
echoerr "No binary releases available for the architecture $(uname -m)." echoerr "No releases available for the architecture $(uname -m)."
echoerr 'Please rerun without the "--method archive" flag to install from npm.' echoerr 'Please rerun without the "--method standalone" flag to install from npm.'
exit 1 exit 1
fi fi
echo "No precompiled releases for $(uname -m)." echo "No precompiled releases for $(uname -m)."
@ -170,8 +170,8 @@ main() {
CACHE_DIR="$(echo_cache_dir)" CACHE_DIR="$(echo_cache_dir)"
mkdir -p "$CACHE_DIR" mkdir -p "$CACHE_DIR"
if [ "$METHOD" = archive ]; then if [ "$METHOD" = standalone ]; then
install_archive install_standalone
return return
fi fi
@ -190,7 +190,7 @@ main() {
;; ;;
*) *)
echo "Unsupported package manager." echo "Unsupported package manager."
install_archive install_standalone
;; ;;
esac esac
} }
@ -256,7 +256,7 @@ install_macos() {
echo "Homebrew not installed." echo "Homebrew not installed."
install_archive install_standalone
} }
install_deb() { install_deb() {
@ -300,31 +300,31 @@ install_aur() {
echo_systemd_postinstall echo_systemd_postinstall
} }
install_archive() { install_standalone() {
echo "Installing binary release archive v$VERSION" echo "Installing standalone release archive v$VERSION"
echo echo
fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$OS-$ARCH.tar.gz" \ fetch "https://github.com/cdr/code-server/releases/download/v$VERSION/code-server-$VERSION-$OS-$ARCH.tar.gz" \
"$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz" "$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz"
sh_c="sh_c" sh_c="sh_c"
if [ ! -w "$ARCHIVE_INSTALL_PREFIX" ]; then if [ ! -w "$STANDALONE_INSTALL_PREFIX" ]; then
sh_c="sudo_sh_c" sh_c="sudo_sh_c"
fi fi
if [ -e "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION" ]; then if [ -e "$STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION" ]; then
echo echo
echo "code-server-$VERSION is already installed at $ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION" echo "code-server-$VERSION is already installed at $STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION"
echo "Remove it to reinstall." echo "Remove it to reinstall."
exit 0 exit 0
fi fi
"$sh_c" mkdir -p "$ARCHIVE_INSTALL_PREFIX/lib" "$ARCHIVE_INSTALL_PREFIX/bin" "$sh_c" mkdir -p "$STANDALONE_INSTALL_PREFIX/lib" "$STANDALONE_INSTALL_PREFIX/bin"
"$sh_c" tar -C "$ARCHIVE_INSTALL_PREFIX/lib" -xzf "$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz" "$sh_c" tar -C "$STANDALONE_INSTALL_PREFIX/lib" -xzf "$CACHE_DIR/code-server-$VERSION-$OS-$ARCH.tar.gz"
"$sh_c" mv -f "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION-$OS-$ARCH" "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION" "$sh_c" mv -f "$STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION-$OS-$ARCH" "$STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION"
"$sh_c" ln -fs "$ARCHIVE_INSTALL_PREFIX/lib/code-server-$VERSION/bin/code-server" "$ARCHIVE_INSTALL_PREFIX/bin/code-server" "$sh_c" ln -fs "$STANDALONE_INSTALL_PREFIX/lib/code-server-$VERSION/bin/code-server" "$STANDALONE_INSTALL_PREFIX/bin/code-server"
echo_archive_postinstall echo_standalone_postinstall
} }
install_npm() { install_npm() {

View File

@ -16,10 +16,10 @@
"build": "./ci/build/build-code-server.sh", "build": "./ci/build/build-code-server.sh",
"build:vscode": "./ci/build/build-vscode.sh", "build:vscode": "./ci/build/build-vscode.sh",
"release": "./ci/build/build-release.sh", "release": "./ci/build/build-release.sh",
"release:binary": "./ci/build/build-binary-release.sh", "release:standalone": "./ci/build/build-standalone-release.sh",
"release:github-draft": "./ci/build/release-github-draft.sh", "release:github-draft": "./ci/build/release-github-draft.sh",
"release:github-assets": "./ci/build/release-github-assets.sh", "release:github-assets": "./ci/build/release-github-assets.sh",
"test:binary-release": "./ci/build/test-binary-release.sh", "test:standalone-release": "./ci/build/test-standalone-release.sh",
"package": "./ci/build/build-packages.sh", "package": "./ci/build/build-packages.sh",
"_____": "", "_____": "",
"fmt": "./ci/dev/fmt.sh", "fmt": "./ci/dev/fmt.sh",