code-server/ci/README.md

113 lines
5.3 KiB
Markdown
Raw Normal View History

# 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-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.
## 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.
- [./ci/dev/fmt.sh](./dev/fmt.sh) (`npm run fmt`)
2020-05-18 04:53:08 +08:00
- Runs formatters.
- [./ci/dev/lint.sh](./dev/lint.sh) (`npm run lint`)
2020-05-18 04:53:08 +08:00
- Runs linters.
- [./ci/dev/test-unit.sh](./dev/test-unit.sh) (`npm run test:unit`)
- Runs unit tests.
- [./ci/dev/test-e2e.sh](./dev/test-e2e.sh) (`npm run test:e2e`)
- Runs end-to-end tests.
- [./ci/dev/watch.ts](./dev/watch.ts) (`npm run watch`)
2020-05-18 04:53:08 +08:00
- 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).
- [./ci/dev/gen_icons.sh](./dev/gen_icons.sh) (`npm run icons`)
- Generates the various icons from a single `.svg` favicon in
`src/browser/media/favicon.svg`.
- Requires [imagemagick](https://imagemagick.org/index.php)
## build
2020-05-12 05:08:22 +08:00
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](./build/build-code-server.sh) (`npm run build`)
2020-05-18 04:53:08 +08:00
- Builds code-server into `./out` and bundles the frontend into `./dist`.
- [./ci/build/build-vscode.sh](./build/build-vscode.sh) (`npm run build:vscode`)
2020-05-18 04:53:08 +08:00
- Builds vscode into `./lib/vscode/out-vscode`.
- [./ci/build/build-release.sh](./build/build-release.sh) (`npm run release`)
- Bundles the output of the above two scripts into a single node module at `./release`.
- [./ci/build/clean.sh](./build/clean.sh) (`npm run clean`)
2020-05-18 04:53:08 +08:00
- 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) (`npm run test:standalone-release`)
2020-05-28 04:39:17 +08:00
- Ensures code-server in the `./release-standalone` directory works by installing an extension.
- [./ci/build/build-packages.sh](./build/build-packages.sh) (`npm run 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) (`npm run release:github-draft`)
- Uses [gh](https://github.com/cli/cli) to create a draft release with a template description.
- [./ci/build/release-github-assets.sh](./build/release-github-assets.sh) (`npm run release:github-assets`)
2020-05-18 04:53:08 +08:00
- Downloads the release-package artifacts for the current commit from CI.
- Uses [gh](https://github.com/cli/cli) 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`npm run release`.
## release-image
This directory contains the release docker container image.
- [./ci/steps/build-docker-buildx-push.sh](./steps/docker-buildx-push.sh)
- Builds the release containers with tags `codercom/code-server-$ARCH:$VERSION` for amd64 and arm64 with `docker buildx` and pushes them.
2020-05-18 04:53:08 +08:00
- Assumes debian releases are ready in `./release-packages`.
2020-05-09 04:31:42 +08:00
## images
This directory contains the images for CI.
## steps
2020-05-18 04:53:08 +08:00
This directory contains the scripts used in CI.
Helps avoid clobbering the CI configuration.
- [./steps/fmt.sh](./steps/fmt.sh)
- Runs `npm run fmt`.
- [./steps/lint.sh](./steps/lint.sh)
- Runs `npm run lint`.
- [./steps/test-unit.sh](./steps/test-unit.sh)
- Runs `npm run test:unit`.
refactor: move integration tests to Jest (#5275) * feat: add installExtension integration test This adds a new helper function called `runCodeServerCommand` along with a test for `--install-extension`. We can use this approach for writing integration tests (i.e. testing a real code-server build, CLI commands, etc). * refactor: s/ test:standalone with test:integration This replaces our integration approach to use Jest instead of a single bash script. By doing this, we will be able to easily maintain and add to our integration test suite. * refactor: filter unit tests Now that our integration tests also use Jest, we need to update our unit test script to ignore `test/integration`. * refactor: add SKIP_SUBMODULE_DEPS to postinstall * refactor: add SKIP_SUBMODULE_DEPS to postinstall * fixup!: skip submod deps * refactor: move runCodeServerCommand into sep. file When Jest runs a test, it loads all the files and imports for that test. This means you might be "requiring" code that's unrelated to your tests. This leads to unexpected errors depending on where the code runs. Moved this file to avoid GLIBC and other errors relaed to argon2 when running integration tests in CI. * fizup: formatting * fizup: increase timeout * refactor: use fixture in installExtension test Instead of relying on a network to install an extension, we use a fixture - vsix file in the repo. This is also faster. * feat: add integration test for listExtensions * chore: ignore integration fixtures * fixup: formatting * fixup: remove custom-hacks.css * fixup: formatting * Update test/integration/installExtension.test.ts Co-authored-by: Asher <ash@coder.com> * Update test/integration/listExtensions.test.ts Co-authored-by: Asher <ash@coder.com> * Update test/integration/installExtension.test.ts Co-authored-by: Asher <ash@coder.com> * Update test/integration/listExtensions.test.ts Co-authored-by: Asher <ash@coder.com> * fixup: contributing integration tests section * fixup: update ci/readme * fixup: use RELEASE_PATH in test-integration.sh * refactor: unzip vsix for listExtensions * refactor: use exec instead of spawn * Update docs/CONTRIBUTING.md Co-authored-by: Asher <ash@coder.com> * Update test/integration/listExtensions.test.ts Co-authored-by: Asher <ash@coder.com> * Update test/integration/listExtensions.test.ts Co-authored-by: Asher <ash@coder.com> * Update test/integration/listExtensions.test.ts Co-authored-by: Asher <ash@coder.com> * refactor: use different default binary path * fixup!: formatting Co-authored-by: Asher <ash@coder.com>
2022-06-25 00:33:38 +08:00
- [./steps/test-integration.sh](./steps/test-integration.sh)
- Runs `npm run test:integration`.
- [./steps/test-e2e.sh](./steps/test-e2e.sh)
- Runs `npm run test:e2e`.
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.
- [./steps/docker-buildx-push.sh](./steps/docker-buildx-push.sh)
- Builds the docker image and then pushes it.
- [./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`.