commit
4590c3a3db
@ -1,3 +1,3 @@
|
|||||||
**
|
**
|
||||||
!release-github
|
!release-packages
|
||||||
!ci
|
!ci
|
||||||
|
89
.github/workflows/ci.yaml
vendored
Normal file
89
.github/workflows/ci.yaml
vendored
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
name: ci
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Run ./ci/steps/test.sh
|
||||||
|
uses: ./ci/container
|
||||||
|
with:
|
||||||
|
args: ./ci/steps/test.sh
|
||||||
|
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Run ./ci/steps/release.sh
|
||||||
|
uses: ./ci/container
|
||||||
|
with:
|
||||||
|
args: ./ci/steps/release.sh
|
||||||
|
- name: Upload npm package artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: npm-package
|
||||||
|
path: ./release
|
||||||
|
|
||||||
|
linux-amd64:
|
||||||
|
needs: release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Download npm package
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: npm-package
|
||||||
|
path: ./release
|
||||||
|
- name: Run ./ci/steps/release-static.sh
|
||||||
|
uses: ./ci/container
|
||||||
|
with:
|
||||||
|
args: ./ci/steps/release-static.sh
|
||||||
|
- name: Upload release artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: release-packages
|
||||||
|
path: ./release-packages
|
||||||
|
|
||||||
|
linux-arm64:
|
||||||
|
needs: release
|
||||||
|
runs-on: ubuntu-arm64-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Download npm package
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: npm-package
|
||||||
|
path: ./release
|
||||||
|
- name: Run ./ci/steps/release-static.sh
|
||||||
|
uses: ./ci/container
|
||||||
|
with:
|
||||||
|
args: ./ci/steps/release-static.sh
|
||||||
|
- name: Upload release artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: release-packages
|
||||||
|
path: ./release-packages
|
||||||
|
|
||||||
|
macos-amd64:
|
||||||
|
needs: release
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Download npm package
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: npm-package
|
||||||
|
path: ./release
|
||||||
|
- run: brew unlink node@12
|
||||||
|
- run: brew install node
|
||||||
|
- run: ./ci/steps/release-static.sh
|
||||||
|
env:
|
||||||
|
# Otherwise we get rate limited when fetching the ripgrep binary.
|
||||||
|
GITHUB_TOKEN: ${{ secrets.github_token }}
|
||||||
|
- name: Upload release artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: release-packages
|
||||||
|
path: ./release-packages
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,6 +4,6 @@ dist*
|
|||||||
out*
|
out*
|
||||||
release/
|
release/
|
||||||
release-static/
|
release-static/
|
||||||
release-github/
|
release-packages/
|
||||||
release-gcp/
|
release-gcp/
|
||||||
node_modules
|
node_modules
|
||||||
|
80
.travis.yml
80
.travis.yml
@ -1,80 +0,0 @@
|
|||||||
language: node_js
|
|
||||||
node_js: node
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
- name: Test
|
|
||||||
if: tag IS blank
|
|
||||||
script: ./ci/container/exec.sh ./ci/steps/test.sh
|
|
||||||
deploy: null
|
|
||||||
install: null
|
|
||||||
- name: Linux Release
|
|
||||||
if: tag IS present
|
|
||||||
script: ./ci/steps/linux-release.sh
|
|
||||||
install: null
|
|
||||||
# Unfortunately ARM on travis is very unreliable.
|
|
||||||
# We see random build failures, logging output being truncated, build being killed
|
|
||||||
# due to no output even though we use travis_wait etc.
|
|
||||||
# So we've disabled it for now.
|
|
||||||
# - name: Linux Release
|
|
||||||
# if: tag IS present
|
|
||||||
# arch: arm64
|
|
||||||
# script: |
|
|
||||||
# sudo apt-get update && sudo apt-get install -y jq || exit 1
|
|
||||||
# travis_wait 60 ./ci/steps/linux-release.sh
|
|
||||||
# install: null
|
|
||||||
- name: MacOS Release
|
|
||||||
if: tag IS present
|
|
||||||
os: osx
|
|
||||||
# node 13/14 crashes in the build process for some reason.
|
|
||||||
node_js: 12
|
|
||||||
script: |
|
|
||||||
HOMEBREW_NO_INSTALL_CLEANUP=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install jq || exit 1
|
|
||||||
travis_wait 60 ./ci/steps/static-release.sh || exit 1
|
|
||||||
install: null
|
|
||||||
|
|
||||||
before_deploy:
|
|
||||||
- echo "$JSON_KEY" | base64 --decode > ./ci/key.json
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
- provider: releases
|
|
||||||
edge: true
|
|
||||||
draft: true
|
|
||||||
overwrite: true
|
|
||||||
tag_name: $TRAVIS_TAG
|
|
||||||
target_commitish: $TRAVIS_COMMIT
|
|
||||||
name: $TRAVIS_TAG
|
|
||||||
file:
|
|
||||||
- release-github/*.tar.gz
|
|
||||||
- release-github/*.zip
|
|
||||||
- release-github/*.deb
|
|
||||||
- release-github/*.rpm
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
- provider: gcs
|
|
||||||
edge: true
|
|
||||||
bucket: "codesrv-ci.cdr.sh"
|
|
||||||
upload_dir: "releases"
|
|
||||||
key_file: ./ci/key.json
|
|
||||||
local_dir: ./release-gcp
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
# TODO: The gcs provider fails to install on arm64.
|
|
||||||
condition: $TRAVIS_CPU_ARCH == amd64
|
|
||||||
- provider: script
|
|
||||||
edge: true
|
|
||||||
# We do not use the travis npm deploy integration as it does not allow us to
|
|
||||||
# deploy a subpath and and v2 which should, just errors out that the src does not exist
|
|
||||||
script: ./ci/steps/publish-npm.sh
|
|
||||||
on:
|
|
||||||
tags: true
|
|
||||||
condition: $TRAVIS_CPU_ARCH == amd64 && $TRAVIS_OS_NAME == linux
|
|
||||||
|
|
||||||
cache:
|
|
||||||
timeout: 600
|
|
||||||
yarn: true
|
|
||||||
directories:
|
|
||||||
- .cache
|
|
||||||
- out
|
|
||||||
- dist
|
|
||||||
- lib/vscode/.build/extensions
|
|
45
ci/README.md
45
ci/README.md
@ -6,6 +6,20 @@ Many of these scripts contain more detailed documentation and options in comment
|
|||||||
|
|
||||||
Any file and directory added into this tree should be documented here.
|
Any file and directory added into this tree should be documented here.
|
||||||
|
|
||||||
|
## Publishing a release
|
||||||
|
|
||||||
|
1. Change the version of code-server in `package.json` and push this commit.
|
||||||
|
1. CI will run and generate an NPM package and release packages that you can download
|
||||||
|
as artifacts on Github Actions.
|
||||||
|
1. Create a new draft release with the built release packages.
|
||||||
|
1. Run some basic sanity tests on one of the released packages.
|
||||||
|
1. Publish.
|
||||||
|
1. Download the built npm package and publish it.
|
||||||
|
1. Place the debian releases into `./release-packages` and then push the docker
|
||||||
|
image with `./ci/release-container/push.sh`.
|
||||||
|
1. This will need to be ran on an ARM64 instance as well.
|
||||||
|
1. At some point we need to automate this.
|
||||||
|
|
||||||
## dev
|
## dev
|
||||||
|
|
||||||
This directory contains scripts used for the development of code-server.
|
This directory contains scripts used for the development of code-server.
|
||||||
@ -32,27 +46,30 @@ This directory contains scripts used for the development of code-server.
|
|||||||
## build
|
## build
|
||||||
|
|
||||||
This directory contains the scripts used to build code-server.
|
This directory contains the scripts used to build code-server.
|
||||||
|
You can disable minification by setting `MINIFY=`.
|
||||||
|
|
||||||
|
- [./lib.sh](./lib.sh)
|
||||||
|
- Contains code duplicated across these scripts.
|
||||||
- [./build/build-code-server.sh](./build/build-code-server.sh) (`yarn build`)
|
- [./build/build-code-server.sh](./build/build-code-server.sh) (`yarn build`)
|
||||||
- Builds code-server into ./out and bundles the frontend into ./dist.
|
- Builds code-server into ./out and bundles the frontend into ./dist.
|
||||||
- [./build/build-vscode.sh](./build/build-vscode.sh) (`yarn build:vscode`)
|
- [./build/build-vscode.sh](./build/build-vscode.sh) (`yarn build:vscode`)
|
||||||
- Builds vscode into ./lib/vscode/out-vscode.
|
- Builds vscode into ./lib/vscode/out-vscode.
|
||||||
- [./build/build-release.sh](./build/build-release.sh) (`yarn release`)
|
- [./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`.
|
||||||
- Will build a static release with node/node_modules into `./release-static`
|
- [./build/build-static-release.sh](./build/build-static-release.sh) (`yarn release:static`)
|
||||||
if `STATIC=1` is set.
|
- Requires a release already built in `./release`.
|
||||||
|
- Will build a static release with node and node_modules into `./release-static`
|
||||||
- [./build/clean.sh](./build/clean.sh) (`yarn clean`)
|
- [./build/clean.sh](./build/clean.sh) (`yarn clean`)
|
||||||
- Removes all git ignored files like build artifacts.
|
- Removes all git ignored files like 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.
|
||||||
- [./build/code-server.sh](./build/code-server.sh)
|
- [./build/code-server.sh](./build/code-server.sh)
|
||||||
- Copied into static releases to run code-server with the bundled node binary.
|
- Copied into static releases to run code-server with the bundled node binary.
|
||||||
- [./build/archive-static-release.sh](./build/archive-static-release.sh)
|
|
||||||
- Archives `./release-static` into a tar/zip for CI with the proper directory name scheme
|
|
||||||
- [./build/test-release.sh](./build/test-static-release.sh)
|
- [./build/test-release.sh](./build/test-static-release.sh)
|
||||||
- Ensures code-server in the `./release-static` directory runs
|
- Ensures code-server in the `./release-static` directory runs
|
||||||
- [./build/build-static-pkgs.sh](./build/build-static-pkgs.sh) (`yarn pkg`)
|
- [./build/build-packages.sh](./build/build-static-pkgs.sh) (`yarn package`)
|
||||||
- Uses [nfpm](https://github.com/goreleaser/nfpm) to generate .deb and .rpm from a static release
|
- Packages `./release-static` into an archive in `./release-packages`
|
||||||
|
- If on linux, [nfpm](https://github.com/goreleaser/nfpm) is used to generate .deb and .rpm
|
||||||
- [./build/nfpm.yaml](./build/nfpm.yaml)
|
- [./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
|
||||||
- [./build/code-server-nfpm.sh](./build/code-server-nfpm.sh)
|
- [./build/code-server-nfpm.sh](./build/code-server-nfpm.sh)
|
||||||
@ -68,15 +85,13 @@ This directory contains the container for CI.
|
|||||||
|
|
||||||
## steps
|
## steps
|
||||||
|
|
||||||
This directory contains a few scripts used in CI. Just helps avoid clobbering .travis.yml.
|
This directory contains a few scripts used in CI.
|
||||||
|
Just helps avoid clobbering .travis.yml.
|
||||||
|
|
||||||
- [./steps/test.sh](./steps/test.sh)
|
- [./steps/test.sh](./steps/test.sh)
|
||||||
- Runs `yarn ci` after ensuring VS Code is patched
|
- Runs `yarn ci` after ensuring VS Code is patched
|
||||||
|
- [./steps/release.sh](./steps/release.sh)
|
||||||
|
- Runs the full release process
|
||||||
|
- Generates the npm package at `./release`
|
||||||
- [./steps/static-release.sh](./steps/static-release.sh)
|
- [./steps/static-release.sh](./steps/static-release.sh)
|
||||||
- Runs the full static build process for CI
|
- Takes the output of the previous script and generates a static release and packages
|
||||||
- [./steps/linux-release.sh](./steps/linux-release.sh)
|
|
||||||
- Runs the full static build process for CI
|
|
||||||
- Packages the release into a .deb and .rpm
|
|
||||||
- Builds and pushes a docker release
|
|
||||||
- [./steps/publish-npm.sh](./steps/publish-npm.sh)
|
|
||||||
- Authenticates yarn and publishes the built package from `./release`
|
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Generates static code-server releases for CI.
|
|
||||||
# This script assumes that a static release is built already.
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "${0}")/../.."
|
|
||||||
source ./ci/lib.sh
|
|
||||||
|
|
||||||
VERSION="$(pkg_json_version)"
|
|
||||||
|
|
||||||
local OS
|
|
||||||
OS="$(os)"
|
|
||||||
|
|
||||||
local ARCH
|
|
||||||
ARCH="$(arch)"
|
|
||||||
|
|
||||||
local archive_name="code-server-$VERSION-$OS-$ARCH"
|
|
||||||
mkdir -p release-github
|
|
||||||
|
|
||||||
local ext
|
|
||||||
if [[ $OS == "linux" ]]; then
|
|
||||||
ext=".tar.gz"
|
|
||||||
tar -czf "release-github/$archive_name$ext" --transform "s/^\.\/release-static/$archive_name/" ./release-static
|
|
||||||
else
|
|
||||||
mv ./release-static "./$archive_name"
|
|
||||||
ext=".zip"
|
|
||||||
zip -r "release-github/$archive_name$ext" "./$archive_name"
|
|
||||||
mv "./$archive_name" ./release-static
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "done (release-github/$archive_name)"
|
|
||||||
|
|
||||||
mkdir -p "release-gcp/$VERSION"
|
|
||||||
cp "release-github/$archive_name$ext" "./release-gcp/$VERSION/$OS-$ARCH$ext"
|
|
||||||
mkdir -p "release-gcp/latest"
|
|
||||||
cp "./release-github/$archive_name$ext" "./release-gcp/latest/$OS-$ARCH$ext"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
59
ci/build/build-packages.sh
Executable file
59
ci/build/build-packages.sh
Executable file
@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Packages code-server for the current OS and architecture into ./release-packages.
|
||||||
|
# This script assumes that a static release is built already into ./release-static.
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cd "$(dirname "${0}")/../.."
|
||||||
|
source ./ci/lib.sh
|
||||||
|
|
||||||
|
export VERSION
|
||||||
|
VERSION="$(pkg_json_version)"
|
||||||
|
|
||||||
|
local OS
|
||||||
|
OS="$(os)"
|
||||||
|
|
||||||
|
export ARCH
|
||||||
|
ARCH="$(arch)"
|
||||||
|
|
||||||
|
local archive_name="code-server-$VERSION-$OS-$ARCH"
|
||||||
|
mkdir -p release-packages
|
||||||
|
|
||||||
|
local ext
|
||||||
|
if [[ $OS == "linux" ]]; then
|
||||||
|
ext=".tar.gz"
|
||||||
|
tar -czf "release-packages/$archive_name$ext" --transform "s/^\.\/release-static/$archive_name/" ./release-static
|
||||||
|
else
|
||||||
|
mv ./release-static "./$archive_name"
|
||||||
|
ext=".zip"
|
||||||
|
zip -r "release-packages/$archive_name$ext" "./$archive_name"
|
||||||
|
mv "./$archive_name" ./release-static
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "done (release-packages/$archive_name)"
|
||||||
|
|
||||||
|
release_gcp
|
||||||
|
|
||||||
|
if [[ $OSTYPE == linux* ]]; then
|
||||||
|
release_nfpm
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
release_gcp() {
|
||||||
|
mkdir -p "release-gcp/$VERSION"
|
||||||
|
cp "release-packages/$archive_name$ext" "./release-gcp/$VERSION/$OS-$ARCH$ext"
|
||||||
|
mkdir -p "release-gcp/latest"
|
||||||
|
cp "./release-packages/$archive_name$ext" "./release-gcp/latest/$OS-$ARCH$ext"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generates deb and rpm packages.
|
||||||
|
release_nfpm() {
|
||||||
|
local nfpm_config
|
||||||
|
nfpm_config=$(envsubst < ./ci/build/nfpm.yaml)
|
||||||
|
|
||||||
|
nfpm pkg -f <(echo "$nfpm_config") --target release-packages/code-server-"$VERSION-$ARCH.deb"
|
||||||
|
nfpm pkg -f <(echo "$nfpm_config") --target release-packages/code-server-"$VERSION-$ARCH.rpm"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
@ -1,28 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# This script requires code-server and vscode to be built with
|
# This script requires vscode to be built with matching MINIFY.
|
||||||
# matching MINIFY.
|
|
||||||
|
|
||||||
# RELEASE_PATH is the destination directory for the release from the root.
|
# MINIFY controls whether minified vscode is bundled.
|
||||||
# Defaults to release
|
|
||||||
RELEASE_PATH="${RELEASE_PATH-release}"
|
|
||||||
|
|
||||||
# STATIC controls whether node and node_modules are packaged into the release.
|
|
||||||
# Disabled by default.
|
|
||||||
STATIC="${STATIC-}"
|
|
||||||
|
|
||||||
# MINIFY controls whether minified vscode is bundled and whether
|
|
||||||
# any included node_modules are pruned for production.
|
|
||||||
MINIFY="${MINIFY-true}"
|
MINIFY="${MINIFY-true}"
|
||||||
|
|
||||||
VSCODE_SRC_PATH="lib/vscode"
|
|
||||||
|
|
||||||
VSCODE_OUT_PATH="$RELEASE_PATH/lib/vscode"
|
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
cd "$(dirname "${0}")/../.."
|
cd "$(dirname "${0}")/../.."
|
||||||
source ./ci/lib.sh
|
source ./ci/build/lib.sh
|
||||||
|
|
||||||
|
VSCODE_SRC_PATH="lib/vscode"
|
||||||
|
VSCODE_OUT_PATH="$RELEASE_PATH/lib/vscode"
|
||||||
|
|
||||||
mkdir -p "$RELEASE_PATH"
|
mkdir -p "$RELEASE_PATH"
|
||||||
|
|
||||||
@ -32,20 +21,6 @@ main() {
|
|||||||
rsync README.md "$RELEASE_PATH"
|
rsync README.md "$RELEASE_PATH"
|
||||||
rsync LICENSE.txt "$RELEASE_PATH"
|
rsync LICENSE.txt "$RELEASE_PATH"
|
||||||
rsync ./lib/vscode/ThirdPartyNotices.txt "$RELEASE_PATH"
|
rsync ./lib/vscode/ThirdPartyNotices.txt "$RELEASE_PATH"
|
||||||
|
|
||||||
if [[ $STATIC ]]; then
|
|
||||||
rsync "$RELEASE_PATH/" "$RELEASE_PATH-static"
|
|
||||||
RELEASE_PATH+=-static
|
|
||||||
VSCODE_OUT_PATH="$RELEASE_PATH/lib/vscode"
|
|
||||||
|
|
||||||
bundle_node
|
|
||||||
else
|
|
||||||
rm -Rf "$VSCODE_OUT_PATH/extensions/node_modules"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
rsync() {
|
|
||||||
command rsync -a --del "$@"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bundle_code_server() {
|
bundle_code_server() {
|
||||||
@ -76,6 +51,7 @@ bundle_vscode() {
|
|||||||
mkdir -p "$VSCODE_OUT_PATH"
|
mkdir -p "$VSCODE_OUT_PATH"
|
||||||
rsync "$VSCODE_SRC_PATH/out-vscode${MINIFY+-min}/" "$VSCODE_OUT_PATH/out"
|
rsync "$VSCODE_SRC_PATH/out-vscode${MINIFY+-min}/" "$VSCODE_OUT_PATH/out"
|
||||||
rsync "$VSCODE_SRC_PATH/.build/extensions/" "$VSCODE_OUT_PATH/extensions"
|
rsync "$VSCODE_SRC_PATH/.build/extensions/" "$VSCODE_OUT_PATH/extensions"
|
||||||
|
rm -Rf "$VSCODE_OUT_PATH/extensions/node_modules"
|
||||||
rsync "$VSCODE_SRC_PATH/extensions/package.json" "$VSCODE_OUT_PATH/extensions"
|
rsync "$VSCODE_SRC_PATH/extensions/package.json" "$VSCODE_OUT_PATH/extensions"
|
||||||
rsync "$VSCODE_SRC_PATH/extensions/yarn.lock" "$VSCODE_OUT_PATH/extensions"
|
rsync "$VSCODE_SRC_PATH/extensions/yarn.lock" "$VSCODE_OUT_PATH/extensions"
|
||||||
rsync "$VSCODE_SRC_PATH/extensions/postinstall.js" "$VSCODE_OUT_PATH/extensions"
|
rsync "$VSCODE_SRC_PATH/extensions/postinstall.js" "$VSCODE_OUT_PATH/extensions"
|
||||||
@ -103,25 +79,4 @@ EOF
|
|||||||
jq 'del(.scripts)' < "$VSCODE_SRC_PATH/package.json" > "$VSCODE_OUT_PATH/package.json"
|
jq 'del(.scripts)' < "$VSCODE_SRC_PATH/package.json" > "$VSCODE_OUT_PATH/package.json"
|
||||||
}
|
}
|
||||||
|
|
||||||
bundle_node() {
|
|
||||||
# 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
|
|
||||||
# will print the path to node.
|
|
||||||
local node_path
|
|
||||||
node_path="$(yarn -s node <<< 'console.info(process.execPath)')"
|
|
||||||
|
|
||||||
mkdir -p "$RELEASE_PATH/bin"
|
|
||||||
rsync ./ci/build/code-server.sh "$RELEASE_PATH/bin/code-server"
|
|
||||||
rsync "$node_path" "$RELEASE_PATH/lib/node"
|
|
||||||
|
|
||||||
rsync node_modules "$RELEASE_PATH"
|
|
||||||
rsync "$VSCODE_SRC_PATH/node_modules" "$VSCODE_OUT_PATH"
|
|
||||||
|
|
||||||
if [[ $MINIFY ]]; then
|
|
||||||
pushd "$RELEASE_PATH"
|
|
||||||
yarn --production
|
|
||||||
popd
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Generates deb and rpm packages for CI.
|
|
||||||
# Assumes a static release has already been built.
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "${0}")/../.."
|
|
||||||
source ./ci/lib.sh
|
|
||||||
|
|
||||||
VERSION="$(pkg_json_version)"
|
|
||||||
export VERSION
|
|
||||||
|
|
||||||
ARCH="$(arch)"
|
|
||||||
export ARCH
|
|
||||||
|
|
||||||
local nfpm_config
|
|
||||||
nfpm_config=$(envsubst < ./ci/build/nfpm.yaml)
|
|
||||||
|
|
||||||
nfpm pkg -f <(echo "$nfpm_config") --target release-github/code-server-"$VERSION-$ARCH.deb"
|
|
||||||
nfpm pkg -f <(echo "$nfpm_config") --target release-github/code-server-"$VERSION-$ARCH.rpm"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
25
ci/build/build-static-release.sh
Executable file
25
ci/build/build-static-release.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cd "$(dirname "${0}")/../.."
|
||||||
|
source ./ci/build/lib.sh
|
||||||
|
|
||||||
|
rsync "$RELEASE_PATH/" "$RELEASE_PATH-static"
|
||||||
|
RELEASE_PATH+=-static
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# will print the path to node.
|
||||||
|
local node_path
|
||||||
|
node_path="$(yarn -s node <<< 'console.info(process.execPath)')"
|
||||||
|
|
||||||
|
mkdir -p "$RELEASE_PATH/bin"
|
||||||
|
rsync ./ci/build/code-server.sh "$RELEASE_PATH/bin/code-server"
|
||||||
|
rsync "$node_path" "$RELEASE_PATH/lib/node"
|
||||||
|
|
||||||
|
cd "$RELEASE_PATH"
|
||||||
|
yarn --production
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
10
ci/build/lib.sh
Executable file
10
ci/build/lib.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source ./ci/lib.sh
|
||||||
|
|
||||||
|
# RELEASE_PATH is the destination directory for the release from the root.
|
||||||
|
# Defaults to release
|
||||||
|
RELEASE_PATH="${RELEASE_PATH-release}"
|
||||||
|
|
||||||
|
rsync() {
|
||||||
|
command rsync -a --del "$@"
|
||||||
|
}
|
@ -7,14 +7,21 @@ set -euo pipefail
|
|||||||
main() {
|
main() {
|
||||||
cd "$(dirname "${0}")/../.."
|
cd "$(dirname "${0}")/../.."
|
||||||
|
|
||||||
local output
|
local EXTENSIONS_DIR
|
||||||
output=$(./release-static/bin/code-server --list-extensions 2>&1)
|
EXTENSIONS_DIR="$(mktemp -d)"
|
||||||
if echo "$output" | grep 'was compiled against a different Node.js version'; then
|
|
||||||
echo "$output"
|
echo "Testing static release"
|
||||||
|
|
||||||
|
./release-static/bin/code-server --extensions-dir "$EXTENSIONS_DIR" --install-extension ms-python.python
|
||||||
|
local installed_extensions
|
||||||
|
installed_extensions="$(./release-static/bin/code-server --extensions-dir "$EXTENSIONS_DIR" --list-extensions 2>&1)"
|
||||||
|
if [[ $installed_extensions != "ms-python.python" ]]; then
|
||||||
|
echo "Unexpected output from listing extensions:"
|
||||||
|
echo "$installed_extensions"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Build ran successfully"
|
echo "Static release works correctly"
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
@ -1,30 +1,41 @@
|
|||||||
FROM centos:7
|
FROM debian
|
||||||
|
|
||||||
RUN yum update -y && yum install -y \
|
RUN apt-get update
|
||||||
devtoolset-6 \
|
|
||||||
gcc-c++ \
|
|
||||||
xz \
|
|
||||||
ccache \
|
|
||||||
git \
|
|
||||||
wget \
|
|
||||||
openssl \
|
|
||||||
libxkbfile-devel \
|
|
||||||
libsecret-devel \
|
|
||||||
libx11-devel \
|
|
||||||
gettext
|
|
||||||
|
|
||||||
RUN yum install -y epel-release && \
|
# Needed for debian repositories added below.
|
||||||
yum install -y ShellCheck jq golang
|
RUN apt-get install -y curl gnupg
|
||||||
|
|
||||||
|
# Installs node.
|
||||||
|
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - && \
|
||||||
|
apt-get install -y nodejs
|
||||||
|
|
||||||
|
# Installs yarn.
|
||||||
|
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
||||||
|
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
||||||
|
apt-get update && apt-get install -y yarn
|
||||||
|
|
||||||
|
# Installs VS Code build deps.
|
||||||
|
RUN apt-get install -y build-essential \
|
||||||
|
libsecret-1-dev \
|
||||||
|
libx11-dev \
|
||||||
|
libxkbfile-dev
|
||||||
|
|
||||||
|
# Installs envsubst.
|
||||||
|
RUN apt-get install -y gettext-base
|
||||||
|
|
||||||
|
# Misc build dependencies.
|
||||||
|
RUN apt-get install -y jq git rsync
|
||||||
|
|
||||||
|
# Installs shellcheck.
|
||||||
|
RUN curl -L https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.$(uname -m).tar.xz | \
|
||||||
|
tar -xJ && \
|
||||||
|
mv shellcheck*/shellcheck /usr/local/bin && \
|
||||||
|
rm -R shellcheck*
|
||||||
|
|
||||||
|
# Install Go dependencies
|
||||||
|
RUN ARCH="$(dpkg --print-architecture)" && \
|
||||||
|
curl "https://dl.google.com/go/go1.14.2.linux-$ARCH.tar.gz" | tar -C /usr/local -xz
|
||||||
|
ENV PATH=/usr/local/go/bin:/root/go/bin:$PATH
|
||||||
|
ENV GO111MODULE=on
|
||||||
|
RUN go get mvdan.cc/sh/v3/cmd/shfmt
|
||||||
RUN go get github.com/goreleaser/nfpm/cmd/nfpm
|
RUN go get github.com/goreleaser/nfpm/cmd/nfpm
|
||||||
ENV PATH=$PATH:/root/go/bin
|
|
||||||
|
|
||||||
RUN mkdir /usr/share/node && cd /usr/share/node \
|
|
||||||
&& curl "https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-$(uname -m | sed 's/86_//; s/aarch/arm/').tar.xz" | tar xJ --strip-components=1 --
|
|
||||||
ENV PATH "$PATH:/usr/share/node/bin"
|
|
||||||
RUN npm install -g yarn@1.22.4
|
|
||||||
|
|
||||||
RUN curl -L "https://github.com/mvdan/sh/releases/download/v3.0.1/shfmt_v3.0.1_linux_$(uname -m | sed 's/x86_/amd/; s/aarch64/arm/')" > /usr/local/bin/shfmt \
|
|
||||||
&& chmod +x /usr/local/bin/shfmt
|
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash", "-c"]
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "$0")/../.."
|
|
||||||
|
|
||||||
docker build ci/container
|
|
||||||
imageTag="$(docker build -q ci/container)"
|
|
||||||
docker run \
|
|
||||||
--rm \
|
|
||||||
-e CI \
|
|
||||||
-e GITHUB_TOKEN \
|
|
||||||
-e TRAVIS_TAG \
|
|
||||||
-e NPM_TOKEN \
|
|
||||||
-v "$(yarn cache dir):/usr/local/share/.cache/yarn/v6" \
|
|
||||||
$(if [[ -f ~/.npmrc ]]; then echo -v "$HOME/.npmrc:/root/.npmrc"; fi) \
|
|
||||||
-v "$PWD:/repo" \
|
|
||||||
-w /repo \
|
|
||||||
$(if [[ -t 0 ]]; then echo -it; fi) \
|
|
||||||
"$imageTag" \
|
|
||||||
"$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
@ -48,6 +48,22 @@ index 7a2320d828..5768890636 100644
|
|||||||
+// yarnInstall('test/smoke'); // node modules required for smoketest
|
+// yarnInstall('test/smoke'); // node modules required for smoketest
|
||||||
+// yarnInstall('test/integration/browser'); // node modules required for integration
|
+// yarnInstall('test/integration/browser'); // node modules required for integration
|
||||||
yarnInstallBuildDependencies(); // node modules for watching, specific to host node version, not electron
|
yarnInstallBuildDependencies(); // node modules for watching, specific to host node version, not electron
|
||||||
|
diff --git a/build/npm/preinstall.js b/build/npm/preinstall.js
|
||||||
|
index cb88d37ade..6b3253af0a 100644
|
||||||
|
--- a/build/npm/preinstall.js
|
||||||
|
+++ b/build/npm/preinstall.js
|
||||||
|
@@ -8,8 +8,9 @@ let err = false;
|
||||||
|
const majorNodeVersion = parseInt(/^(\d+)\./.exec(process.versions.node)[1]);
|
||||||
|
|
||||||
|
if (majorNodeVersion < 10 || majorNodeVersion >= 13) {
|
||||||
|
- console.error('\033[1;31m*** Please use node >=10 and <=12.\033[0;0m');
|
||||||
|
- err = true;
|
||||||
|
+ // We are ok building above Node 12.
|
||||||
|
+ // console.error('\033[1;31m*** Please use node >=10 and <=12.\033[0;0m');
|
||||||
|
+ // err = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const cp = require('child_process');
|
||||||
diff --git a/coder.js b/coder.js
|
diff --git a/coder.js b/coder.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..0170b47241
|
index 0000000000..0170b47241
|
||||||
|
@ -27,17 +27,14 @@ ENV SHELL=/bin/bash
|
|||||||
RUN adduser --gecos '' --disabled-password coder && \
|
RUN adduser --gecos '' --disabled-password coder && \
|
||||||
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
|
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-c"]
|
RUN ARCH="$(dpkg --print-architecture)" && \
|
||||||
|
curl -L "https://github.com/boxboat/fixuid/releases/download/v0.4.1/fixuid-0.4.1-linux-$ARCH.tar.gz" | tar -C /usr/local/bin -xzf - && \
|
||||||
COPY ci/lib.sh /tmp/lib.sh
|
|
||||||
RUN source /tmp/lib.sh && rm /tmp/lib.sh && \
|
|
||||||
curl -L "https://github.com/boxboat/fixuid/releases/download/v0.4.1/fixuid-0.4.1-linux-$(arch).tar.gz" | tar -C /usr/local/bin -xzf - && \
|
|
||||||
chown root:root /usr/local/bin/fixuid && \
|
chown root:root /usr/local/bin/fixuid && \
|
||||||
chmod 4755 /usr/local/bin/fixuid && \
|
chmod 4755 /usr/local/bin/fixuid && \
|
||||||
mkdir -p /etc/fixuid && \
|
mkdir -p /etc/fixuid && \
|
||||||
printf "user: coder\ngroup: coder\n" > /etc/fixuid/config.yml
|
printf "user: coder\ngroup: coder\n" > /etc/fixuid/config.yml
|
||||||
|
|
||||||
COPY release-github/code-server*.deb /tmp/
|
COPY release-packages/code-server*.deb /tmp/
|
||||||
RUN dpkg -i /tmp/code-server*.deb && rm /tmp/code-server*.deb
|
RUN dpkg -i /tmp/code-server*.deb && rm /tmp/code-server*.deb
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "$0")/../.."
|
|
||||||
source ./ci/lib.sh
|
|
||||||
|
|
||||||
./ci/container/exec.sh ./ci/steps/static-release.sh
|
|
||||||
./ci/container/exec.sh yarn pkg
|
|
||||||
./ci/release-container/push.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
@ -1,11 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
main() {
|
|
||||||
cd "$(dirname "$0")/../.."
|
|
||||||
|
|
||||||
echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
|
||||||
./ci/container/exec.sh yarn publish --non-interactive release
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
12
ci/steps/release-static.sh
Executable file
12
ci/steps/release-static.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cd "$(dirname "$0")/../.."
|
||||||
|
|
||||||
|
yarn release:static
|
||||||
|
./ci/build/test-static-release.sh
|
||||||
|
yarn package
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
@ -8,9 +8,7 @@ main() {
|
|||||||
yarn vscode
|
yarn vscode
|
||||||
yarn build
|
yarn build
|
||||||
yarn build:vscode
|
yarn build:vscode
|
||||||
STATIC=1 yarn release
|
yarn release
|
||||||
./ci/build/test-static-release.sh
|
|
||||||
./ci/build/archive-static-release.sh
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
@ -16,7 +16,8 @@
|
|||||||
"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",
|
||||||
"pkg": "./ci/build/build-static-pkgs.sh",
|
"release:static": "./ci/build/build-static-release.sh",
|
||||||
|
"package": "./ci/build/build-packages.sh",
|
||||||
"_____": "",
|
"_____": "",
|
||||||
"fmt": "./ci/dev/fmt.sh",
|
"fmt": "./ci/dev/fmt.sh",
|
||||||
"lint": "./ci/dev/lint.sh",
|
"lint": "./ci/dev/lint.sh",
|
||||||
@ -60,7 +61,7 @@
|
|||||||
"vfile-message": "^2.0.2"
|
"vfile-message": "^2.0.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@coder/logger": "1.1.14",
|
"@coder/logger": "1.1.11",
|
||||||
"adm-zip": "^0.4.14",
|
"adm-zip": "^0.4.14",
|
||||||
"fs-extra": "^8.1.0",
|
"fs-extra": "^8.1.0",
|
||||||
"http-proxy": "^1.18.0",
|
"http-proxy": "^1.18.0",
|
||||||
|
@ -792,10 +792,10 @@
|
|||||||
lodash "^4.17.13"
|
lodash "^4.17.13"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@coder/logger@1.1.14":
|
"@coder/logger@1.1.11":
|
||||||
version "1.1.14"
|
version "1.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/@coder/logger/-/logger-1.1.14.tgz#0242da33e0245834361dd078e31280fc1c976b7e"
|
resolved "https://registry.yarnpkg.com/@coder/logger/-/logger-1.1.11.tgz#e6f36dba9436ae61e66e3f66787d75c768617605"
|
||||||
integrity sha512-NuTvsOH3dqrXn/8Pbs5zy7l0gLqOSC/TPRl3nexdP/897lgG/vtHNQHrUwTBTzTzihH1ON4lklDxJjY0hD4UPg==
|
integrity sha512-EEh1dqSU0AaqjjjMsVqumgZGbrZimKFKIb4t5E6o3FLfVUxJCReSME78Yj2N1xWUVAHMnqafDCxLostpuIotzw==
|
||||||
|
|
||||||
"@iarna/toml@^2.2.0":
|
"@iarna/toml@^2.2.0":
|
||||||
version "2.2.5"
|
version "2.2.5"
|
||||||
|
Reference in New Issue
Block a user