This directory contains scripts used for code-server's continuous integration infrastructure.
Many of these scripts contain more detailed documentation and options in comments at the top.
Any file and directory added into this tree should be documented here.
- Update the version of code-server in
package.jsonand push a commit - CI will run and generate the
npm-packageandrelease-packagesartifacts on the GH actions workflow - Create a new draft release and attach all files in
release-packages- Run some basic sanity tests on one of the released packages
- Summarize the major changes in the release notes and link to the relevant issues.
- Make sure to mention the VS Code version in the release notes
- Publish the release
- CI will automatically grab the artifacts and then
- Publish the NPM package
- Publish the AMD64 docker image
- Publish the ARM64 docker image
- CI will automatically grab the artifacts and then
This directory contains scripts used for the development of code-server.
- ./dev/container
- See CONTRIBUTING.md for docs on the development container
- ./dev/ci.sh (
yarn ci)- Runs formatters, linters and tests
- ./dev/fmt.sh (
yarn fmt)- Runs formatters
- ./dev/lint.sh (
yarn lint)- Runs linters
- ./dev/test.sh (
yarn test)- Runs tests
- ./dev/vscode.sh (
yarn vscode)- Ensures
lib/vscodeis cloned, patched and dependencies are installed
- Ensures
- ./dev/vscode.patch
- Our patch of VS Code to enable remote browser access
- Generate it with
yarn vscode:diffand apply withyarn vscode:patch
- ./dev/watch.ts (
yarn watch)- Starts a process to build and launch code-server and restart on any code changes
- Example usage in CONTRIBUTING.md
This directory contains the scripts used to build code-server.
You can disable minification by setting MINIFY=.
- ./lib.sh
- Contains code duplicated across these scripts.
- ./build/build-code-server.sh (
yarn build)- Builds code-server into ./out and bundles the frontend into ./dist.
- ./build/build-vscode.sh (
yarn build:vscode)- Builds vscode into ./lib/vscode/out-vscode.
- ./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
- ./build/build-static-release.sh (
yarn release:static)- Requires a release already built in
./release. - Will build a static release with node and node_modules into
./release-static
- Requires a release already built in
- ./build/clean.sh (
yarn clean)- Removes all git ignored files like build artifacts.
- Will also
git reset --hard lib/vscode - Useful to do a clean build.
- ./build/code-server.sh
- Copied into static releases to run code-server with the bundled node binary.
- ./build/test-static-release.sh (
yarn test:static-release)- Ensures code-server in the
./release-staticdirectory runs
- Ensures code-server in the
- ./build/build-packages.sh (
yarn package)- Packages
./release-staticinto an archive in./release-packages - If on linux, nfpm is used to generate .deb and .rpm
- Packages
- ./build/nfpm.yaml
- Used to configure nfpm to generate .deb and .rpm
- ./build/code-server-nfpm.sh
- Entrypoint script for code-server for .deb and .rpm
This directory contains the release docker container.
- ./release-container/build.sh
- Builds the release container
- Assumes debian releases are ready in
./release-packages
- ./release-container/push.sh
- Pushes the built release container to docker hub and updates the latest tag
This directory contains the container for CI.
This directory contains a few scripts used in CI. Just helps avoid clobbering the CI configuration.
- ./steps/test.sh
- Runs
yarn ciafter ensuring VS Code is patched
- Runs
- ./steps/release.sh
- Runs the full release process
- Generates the npm package at
./release
- ./steps/static-release.sh
- Takes the output of the previous script and generates a static release and packages
- ./steps/lib.sh
- Contains helpers to download artifacts from github actions workflow runs
- ./steps/publish-npm.sh
- Grabs the
npm-packagerelease artifact for the current commit and publishes it on NPM
- Grabs the
- ./steps/publish-docker.sh
- Grabs the
release-packagesrelease artifact for the current commit and builds a docker image with it and publishes that onto docker hub with the correct tag and updates latest
- Grabs the