0d207f4f9a
Closes #1634
7.3 KiB
7.3 KiB
ci
This directory contains scripts used for code-server's continuous integration infrastructure.
Some of these scripts contain more detailed documentation and options in header comments.
Any file or directory in this subdirectory should be documented here.
- ./ci/lib.sh
- Contains code duplicated across these scripts.
Publishing a release
Make sure you have $GITHUB_TOKEN
set and hub installed.
- Update the version of code-server in
package.json
and README.md/guide.md install examples and make a PR. - GitHub actions will generate the
npm-package
,release-packages
andrelease-images
artifacts. - Run
yarn release:github-draft
to create a GitHub draft release from the template with the updated version.- Summarize the major changes in the release notes and link to the relevant issues.
- Wait for the artifacts in step 2 to build.
- Run
yarn release:github-assets
to download therelease-packages
artifact and then upload them to the draft release. - Run some basic sanity tests on one of the released packages.
- Make sure the github release tag is the commit with the artifacts.
- Publish the release and merge the PR.
- CI will automatically grab the artifacts and then:
- Publish the NPM package from
npm-package
. - Publish the Docker Hub image from
release-images
.
- Publish the NPM package from
- CI will automatically grab the artifacts and then:
- Update the AUR package.
- Instructions on updating the AUR package are at cdr/code-server-aur.
- Wait for the npm package to be published.
- Update the homebrew package.
- Send a pull request to homebrew-core with the URL in the formula updated.
dev
This directory contains scripts used for the development of code-server.
- ./ci/dev/container
- See ./doc/CONTRIBUTING.md for docs on the development container.
- ./ci/dev/fmt.sh (
yarn fmt
)- Runs formatters.
- ./ci/dev/lint.sh (
yarn lint
)- Runs linters.
- ./ci/dev/test.sh (
yarn test
)- Runs tests.
- ./ci/dev/ci.sh (
yarn ci
)- Runs
yarn fmt
,yarn lint
andyarn test
.
- Runs
- ./ci/dev/vscode.sh (
yarn vscode
)- Ensures ./lib/vscode is cloned, patched and dependencies are installed.
- ./ci/dev/patch-vscode.sh (
yarn vscode:patch
)- Applies ./ci/dev/vscode.patch to ./lib/vscode.
- ./ci/dev/diff-vscode.sh (
yarn vscode:diff
)- Diffs ./lib/vscode into ./ci/dev/vscode.patch.
- ./ci/dev/vscode.patch
- Our patch of VS Code, see ./doc/CONTRIBUTING.md.
- Generate it with
yarn vscode:diff
and apply withyarn vscode:patch
.
- ./ci/dev/watch.ts (
yarn watch
)- Starts a process to build and launch code-server and restart on any code changes.
- Example usage in ./doc/CONTRIBUTING.md.
build
This directory contains the scripts used to build and release code-server.
You can disable minification by setting MINIFY=
.
- ./ci/build/build-code-server.sh (
yarn build
)- Builds code-server into
./out
and bundles the frontend into./dist
.
- Builds code-server into
- ./ci/build/build-vscode.sh (
yarn build:vscode
)- Builds vscode into
./lib/vscode/out-vscode
.
- Builds vscode into
- ./ci/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
- ./ci/build/build-static-release.sh (
yarn release:static
)- Requires a node module already built into
./release
with the above script. - Will build a static release with node and node_modules bundled into
./release-static
.
- Requires a node module already built into
- ./ci/build/clean.sh (
yarn clean
)- Removes all build artifacts.
- Will also
git reset --hard lib/vscode
. - Useful to do a clean build.
- ./ci/build/code-server.sh
- Copied into static releases to run code-server with the bundled node binary.
- ./ci/build/test-static-release.sh (
yarn test:static-release
)- Ensures code-server in the
./release-static
directory works by installing an extension.
- Ensures code-server in the
- ./ci/build/build-packages.sh (
yarn package
)- Packages
./release-static
into a.tar.gz
archive in./release-packages
. - If on linux, nfpm is used to generate
.deb
and.rpm
.
- Packages
- ./ci/build/nfpm.yaml
- Used to configure nfpm to generate
.deb
and.rpm
.
- Used to configure nfpm to generate
- ./ci/build/code-server-nfpm.sh
- Entrypoint script for code-server for
.deb
and .rpm`.
- Entrypoint script for code-server for
- ./ci/build/code-server.service
- systemd user service packaged into the
.deb
and.rpm
.
- systemd user service packaged into the
- ./ci/build/release-github-draft.sh (
yarn release:github-draft
)- Uses hub to create a draft release with a template description.
- ./ci/build/release-github-assets.sh (
yarn release:github-assets
)- Downloads the release-package artifacts for the current commit from CI.
- Uses hub to upload the artifacts to the release
specified in
package.json
.
- ./ci/build/npm-postinstall.sh
- Post install script for the npm package.
- Bundled by
yarn release
.
release-container
This directory contains the release docker container.
- ./release-container/build.sh
- Builds the release container with the tag
codercom/code-server-$ARCH:$VERSION
. - Assumes debian releases are ready in
./release-packages
.
- Builds the release container with the tag
container
This directory contains the container for CI.
steps
This directory contains the scripts used in CI. Helps avoid clobbering the CI configuration.
- ./steps/fmt.sh
- Runs
yarn fmt
after ensuring VS Code is patched.
- Runs
- ./steps/lint.sh
- Runs
yarn lint
after ensuring VS Code is patched.
- Runs
- ./steps/test.sh
- Runs
yarn test
after ensuring VS Code is patched.
- Runs
- ./steps/release.sh
- Runs the release process.
- Generates the npm package at
./release
.
- ./steps/release-static.sh
- Takes the output of the previous script and generates a static release and
release packages into
release-packages
.
- Takes the output of the previous script and generates a static release and
release packages into
- ./steps/publish-npm.sh
- Grabs the
npm-package
release artifact for the current commit and publishes it on npm.
- Grabs the
- ./steps/build-docker-image.sh
- Builds the docker image and then saves it into
./release-images/code-server-$ARCH-$VERSION.tar
.
- Builds the docker image and then saves it into
- ./steps/push-docker-manifest.sh
- Loads all images in
./release-images
and then builds and pushes a multi architecture docker manifest for the amd64 and arm64 images tocodercom/code-server:$VERSION
andcodercom/code-server:latest
.
- Loads all images in