2020-04-30 19:52:54 +08:00
# ci
This directory contains scripts used for code-server's continuous integration infrastructure.
2020-05-18 04:53:08 +08:00
Some of these scripts contain more detailed documentation and options
in header comments.
2020-04-30 19:52:54 +08:00
2020-05-18 04:53:08 +08:00
Any file or directory in this subdirectory should be documented here.
- [./ci/lib.sh ](./lib.sh )
- Contains code duplicated across these scripts.
2020-04-30 19:52:54 +08:00
2020-05-08 13:42:46 +08:00
## Publishing a release
2020-05-12 05:08:22 +08:00
Make sure you have `$GITHUB_TOKEN` set and [hub ](https://github.com/github/hub ) installed.
2020-05-20 16:50:16 +08:00
1. Update the version of code-server and make a PR.
1. Update in `package.json`
2021-02-04 00:32:35 +08:00
2. Update in [./docs/install.md ](../docs/install.md )
2020-11-16 23:50:05 +08:00
3. Update in [./ci/helm-chart/README.md ](../ci/helm-chart/README.md )
2020-11-20 06:28:22 +08:00
- Remember to update the chart version as well on top of appVersion in `Chart.yaml` .
2020-12-18 17:01:25 +08:00
- Run `rg -g '!yarn.lock' -g '!*.svg' '3\.7\.5'` to ensure all values have been
changed. Replace the numbers as needed.
2021-01-26 01:34:51 +08:00
4. Update the code coverage badge (see [here ](#updating-code-coverage-in-readme ) for instructions)
2020-05-18 04:53:08 +08:00
2. GitHub actions will generate the `npm-package` , `release-packages` and `release-images` artifacts.
2020-09-03 14:16:57 +08:00
1. You do not have to wait for these.
2020-05-14 15:17:17 +08:00
3. Run `yarn release:github-draft` to create a GitHub draft release from the template with
2020-05-12 05:08:22 +08:00
the updated version.
1. Summarize the major changes in the release notes and link to the relevant issues.
2020-05-18 04:53:08 +08:00
4. Wait for the artifacts in step 2 to build.
2020-09-03 14:16:57 +08:00
5. Run `yarn release:github-assets` to download the `release-packages` artifact.
- It will upload them to the draft release.
2020-05-18 04:53:08 +08:00
6. Run some basic sanity tests on one of the released packages.
2020-09-03 14:16:57 +08:00
- Especially make sure the terminal works fine.
2020-06-05 04:31:01 +08:00
7. 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.
2020-05-19 09:30:24 +08:00
8. Publish the release and merge the PR.
2020-05-18 04:53:08 +08:00
1. CI will automatically grab the artifacts and then:
1. Publish the NPM package from `npm-package` .
2. Publish the Docker Hub image from `release-images` .
2020-05-20 13:16:41 +08:00
9. Update the AUR package.
- Instructions on updating the AUR package are at [cdr/code-server-aur ](https://github.com/cdr/code-server-aur ).
10. Wait for the npm package to be published.
11. Update the homebrew package.
- Send a pull request to [homebrew-core ](https://github.com/Homebrew/homebrew-core ) with the URL in the [formula ](https://github.com/Homebrew/homebrew-core/blob/master/Formula/code-server.rb ) updated.
2020-05-08 13:42:46 +08:00
2021-01-26 01:34:51 +08:00
## Updating Code Coverage in README
Currently, we run a command to manually generate the code coverage shield. Follow these steps:
1. Run `yarn badges`
2. Go into the README and change the color from `red` to `green` in this line:
```
![Lines ](https://img.shields.io/badge/Coverage-46.71%25-red.svg )
```
NOTE: we have to manually change the color because the default is red if coverage is less than 80. See code [here ](https://github.com/olavoparno/istanbul-badges-readme/blob/develop/src/editor.ts#L24-L33 ).
2020-04-30 19:52:54 +08:00
## dev
This directory contains scripts used for the development of code-server.
2020-06-04 00:09:01 +08:00
- [./ci/dev/image ](./dev/image )
2021-02-04 00:32:35 +08:00
- See [./docs/CONTRIBUTING.md ](../docs/CONTRIBUTING.md ) for docs on the development container.
2020-05-18 04:53:08 +08:00
- [./ci/dev/fmt.sh ](./dev/fmt.sh ) (`yarn fmt`)
- Runs formatters.
- [./ci/dev/lint.sh ](./dev/lint.sh ) (`yarn lint`)
- Runs linters.
- [./ci/dev/test.sh ](./dev/test.sh ) (`yarn test`)
- Runs tests.
- [./ci/dev/ci.sh ](./dev/ci.sh ) (`yarn ci`)
- Runs `yarn fmt` , `yarn lint` and `yarn test` .
- [./ci/dev/watch.ts ](./dev/watch.ts ) (`yarn watch`)
- Starts a process to build and launch code-server and restart on any code changes.
2021-02-04 00:32:35 +08:00
- Example usage in [./docs/CONTRIBUTING.md ](../docs/CONTRIBUTING.md ).
2020-12-01 08:11:26 +08:00
- [./ci/dev/gen_icons.sh ](./ci/dev/gen_icons.sh ) (`yarn icons`)
- Generates the various icons from a single `.svg` favicon in
`src/browser/media/favicon.svg` .
- Requires [imagemagick ](https://imagemagick.org/index.php )
2020-04-30 19:52:54 +08:00
## build
2020-05-12 05:08:22 +08:00
This directory contains the scripts used to build and release code-server.
2020-05-08 12:34:20 +08:00
You can disable minification by setting `MINIFY=` .
2020-04-30 19:52:54 +08:00
2020-05-18 04:53:08 +08:00
- [./ci/build/build-code-server.sh ](./build/build-code-server.sh ) (`yarn build`)
- Builds code-server into `./out` and bundles the frontend into `./dist` .
- [./ci/build/build-vscode.sh ](./build/build-vscode.sh ) (`yarn build:vscode`)
- Builds vscode into `./lib/vscode/out-vscode` .
- [./ci/build/build-release.sh ](./build/build-release.sh ) (`yarn release`)
2020-05-08 11:48:49 +08:00
- Bundles the output of the above two scripts into a single node module at `./release` .
2020-05-28 04:39:17 +08:00
- [./ci/build/build-standalone-release.sh ](./build/build-standalone-release.sh ) (`yarn release:standalone`)
2020-05-18 04:53:08 +08:00
- Requires a node module already built into `./release` with the above script.
2020-05-28 04:39:17 +08:00
- Will build a standalone release with node and node_modules bundled into `./release-standalone` .
2020-05-18 04:53:08 +08:00
- [./ci/build/clean.sh ](./build/clean.sh ) (`yarn clean`)
- Removes all build artifacts.
- Useful to do a clean build.
- [./ci/build/code-server.sh ](./build/code-server.sh )
2020-05-28 04:39:17 +08:00
- Copied into standalone releases to run code-server with the bundled node binary.
- [./ci/build/test-standalone-release.sh ](./build/test-standalone-release.sh ) (`yarn test:standalone-release`)
- Ensures code-server in the `./release-standalone` directory works by installing an extension.
2020-05-18 04:53:08 +08:00
- [./ci/build/build-packages.sh ](./build/build-packages.sh ) (`yarn package`)
2020-05-28 04:39:17 +08:00
- Packages `./release-standalone` into a `.tar.gz` archive in `./release-packages` .
2020-05-18 04:53:08 +08:00
- If on linux, [nfpm ](https://github.com/goreleaser/nfpm ) is used to generate `.deb` and `.rpm` .
- [./ci/build/nfpm.yaml ](./build/nfpm.yaml )
- Used to configure [nfpm ](https://github.com/goreleaser/nfpm ) to generate `.deb` and `.rpm` .
- [./ci/build/code-server-nfpm.sh ](./build/code-server-nfpm.sh )
2020-05-28 06:04:36 +08:00
- Entrypoint script for code-server for `.deb` and `.rpm` .
2020-05-18 04:53:08 +08:00
- [./ci/build/code-server.service ](./build/code-server.service )
- systemd user service packaged into the `.deb` and `.rpm` .
- [./ci/build/release-github-draft.sh ](./build/release-github-draft.sh ) (`yarn release:github-draft`)
- Uses [hub ](https://github.com/github/hub ) to create a draft release with a template description.
- [./ci/build/release-github-assets.sh ](./build/release-github-assets.sh ) (`yarn release:github-assets`)
- Downloads the release-package artifacts for the current commit from CI.
2020-05-12 05:08:22 +08:00
- Uses [hub ](https://github.com/github/hub ) to upload the artifacts to the release
2020-05-18 04:53:08 +08:00
specified in `package.json` .
- [./ci/build/npm-postinstall.sh ](./build/npm-postinstall.sh )
- Post install script for the npm package.
- Bundled by`yarn release`.
2020-04-30 19:52:54 +08:00
2020-06-04 00:07:42 +08:00
## release-image
2020-04-30 19:52:54 +08:00
2020-06-04 00:07:42 +08:00
This directory contains the release docker container image.
2020-04-30 19:52:54 +08:00
2020-06-04 00:07:42 +08:00
- [./release-image/build.sh ](./release-image/build.sh )
2020-05-18 04:53:08 +08:00
- Builds the release container with the tag `codercom/code-server-$ARCH:$VERSION` .
- Assumes debian releases are ready in `./release-packages` .
2020-05-09 04:31:42 +08:00
2020-06-04 00:07:42 +08:00
## images
2020-04-30 19:52:54 +08:00
2020-06-04 00:07:42 +08:00
This directory contains the images for CI.
2020-04-30 19:52:54 +08:00
## steps
2020-05-18 04:53:08 +08:00
This directory contains the scripts used in CI.
Helps avoid clobbering the CI configuration.
2020-04-30 19:52:54 +08:00
2020-05-13 07:33:34 +08:00
- [./steps/fmt.sh ](./steps/fmt.sh )
2020-05-18 04:53:08 +08:00
- Runs `yarn fmt` after ensuring VS Code is patched.
2020-05-13 07:33:34 +08:00
- [./steps/lint.sh ](./steps/lint.sh )
2020-05-18 04:53:08 +08:00
- Runs `yarn lint` after ensuring VS Code is patched.
2020-04-30 19:52:54 +08:00
- [./steps/test.sh ](./steps/test.sh )
2020-05-18 04:53:08 +08:00
- Runs `yarn test` after ensuring VS Code is patched.
2020-05-08 08:44:32 +08:00
- [./steps/release.sh ](./steps/release.sh )
2020-05-18 04:53:08 +08:00
- Runs the release process.
- Generates the npm package at `./release` .
2020-05-28 04:39:17 +08:00
- [./steps/release-packages.sh ](./steps/release-packages.sh )
- Takes the output of the previous script and generates a standalone release and
release packages into `./release-packages` .
2020-05-08 15:08:30 +08:00
- [./steps/publish-npm.sh ](./steps/publish-npm.sh )
2020-05-18 04:53:08 +08:00
- Grabs the `npm-package` release artifact for the current commit and publishes it on npm.
2020-05-16 22:55:46 +08:00
- [./steps/build-docker-image.sh ](./steps/build-docker-image.sh )
2020-05-18 04:53:08 +08:00
- Builds the docker image and then saves it into `./release-images/code-server-$ARCH-$VERSION.tar` .
2020-05-16 22:55:46 +08:00
- [./steps/push-docker-manifest.sh ](./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 to `codercom/code-server:$VERSION` and
2020-05-18 04:53:08 +08:00
`codercom/code-server:latest` .