mirror of
https://github.com/coder/code-server.git
synced 2024-11-22 19:23:16 +03:00
.. | ||
build | ||
dev | ||
images | ||
release-image | ||
steps | ||
lib.sh | ||
README.md |
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 and make a PR.
- Update in
package.json
- Update in ./doc/install.md
- Update in
- GitHub actions will generate the
npm-package
,release-packages
andrelease-images
artifacts.- You do not have to wait for these.
- 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.- It will upload them to the draft release.
- Run some basic sanity tests on one of the released packages.
- Especially make sure the terminal works fine.
- Make sure the github release tag is the commit with the artifacts. This is a bug in
hub
where uploading assets in step 5 will break the tag. - 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/image
- 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-standalone-release.sh (
yarn release:standalone
)- Requires a node module already built into
./release
with the above script. - Will build a standalone release with node and node_modules bundled into
./release-standalone
.
- 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 standalone releases to run code-server with the bundled node binary.
- ./ci/build/test-standalone-release.sh (
yarn test:standalone-release
)- Ensures code-server in the
./release-standalone
directory works by installing an extension.
- Ensures code-server in the
- ./ci/build/build-packages.sh (
yarn package
)- Packages
./release-standalone
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-image
This directory contains the release docker container image.
- ./release-image/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
images
This directory contains the images 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-packages.sh
- Takes the output of the previous script and generates a standalone release and
release packages into
./release-packages
.
- Takes the output of the previous script and generates a standalone 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