Merge branch 'fix-ci' into restructure

This commit is contained in:
Anmol Sethi 2020-02-18 19:07:34 -05:00
commit 76831f11fc
No known key found for this signature in database
GPG Key ID: 8CEF1878FF10ADEB
15 changed files with 127 additions and 142 deletions

View File

@ -1,2 +1,2 @@
extends: extends:
- stylelint-config-standard - stylelint-config-recommended

View File

@ -2,36 +2,26 @@ language: minimal
jobs: jobs:
include: include:
- stage: Code
name: Format
script: ./ci/image/run.sh "yarn && yarn vscode && yarn fmt"
- name: Lint
script: ./ci/image/run.sh "yarn && yarn vscode && yarn lint"
- name: Test - name: Test
script: ./ci/image/run.sh "yarn && yarn vscode && yarn test" script: ./ci/image/run.sh "yarn && yarn vscode && ./ci/ci.sh"
deploy: null
- stage: Release - name: Linux Release
name: Linux Release if: tag IS present
script: script:
- travis_wait 60 ./ci/image/run.sh "yarn && yarn vscode && ci/release.sh" - travis_wait 60 ./ci/image/run.sh "yarn && yarn vscode && ci/release.sh"
- ./ci/release-image/push.sh - ./ci/release-image/push.sh
- name: Linux ARM64 Release - name: Linux ARM64 Release
if: tag IS present
script: script:
- travis_wait 60 ./ci/image/run.sh "yarn && yarn vscode && ci/release.sh" - travis_wait 60 ./ci/image/run.sh "yarn && yarn vscode && ci/release.sh"
- ./ci/release-image/push.sh - ./ci/release-image/push.sh
arch: arm64 arch: arm64
- name: MacOS Release - name: MacOS Release
if: tag IS present
os: osx os: osx
language: node_js language: node_js
node_js: 12 node_js: 12
script: yarn && yarn vscode && travis_wait 60 ci/release.sh script: yarn && yarn vscode && travis_wait 60 ci/release.sh
- name: Docker Release
script: ./ci/release-image/push.sh
stages:
- name: Code
- name: Release
if: env(TRAVIS_TAG) IS present
deploy: deploy:
- provider: releases - provider: releases
@ -45,7 +35,6 @@ deploy:
- release/*.zip - release/*.zip
on: on:
tags: true tags: true
condition: $TRAVIS_BUILD_STAGE_NAME == Release
cache: cache:
timeout: 600 timeout: 600

View File

@ -1,4 +1,4 @@
# code-server · [![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/cdr/code-server/blob/master/LICENSE) [!["Latest Release"](https://img.shields.io/github/release/cdr/code-server.svg)](https://github.com/cdr/code-server/releases/latest) [![Build Status](https://img.shields.io/travis/com/cdr/code-server/master)](https://github.com/cdr/code-server) # code-server
`code-server` is [VS Code](https://github.com/Microsoft/vscode) running on a `code-server` is [VS Code](https://github.com/Microsoft/vscode) running on a
remote server, accessible through the browser. remote server, accessible through the browser.
@ -16,12 +16,7 @@ docker run -it -p 127.0.0.1:8080:8080 -v "$PWD:/home/coder/project" codercom/cod
compilations, downloads, and more. Preserve battery life when you're on the go compilations, downloads, and more. Preserve battery life when you're on the go
since all intensive computation runs on your server. since all intensive computation runs on your server.
![Screenshot](/doc/assets/ide.gif) ![Example gif](/doc/assets/ide.gif)
## VS Code
- See [our VS Code readme](./src/vscode) for more information about how
code-server and VS Code work together.
## Getting Started ## Getting Started
@ -33,16 +28,11 @@ docker run -it -p 127.0.0.1:8080:8080 -v "$PWD:/home/coder/project" codercom/cod
- Secure connection over HTTPS or localhost (required for service workers and - Secure connection over HTTPS or localhost (required for service workers and
clipboard support). clipboard support).
- For Linux: GLIBC 2.17 or later and GLIBCXX 3.4.15 or later. - For Linux: GLIBC 2.17 or later and GLIBCXX 3.4.15 or later.
- Docker (for Docker versions of `code-server`).
### Run over SSH ### Run over SSH
Use [sshcode](https://github.com/codercom/sshcode) for a simple setup. Use [sshcode](https://github.com/codercom/sshcode) for a simple setup.
### Docker
See the Docker one-liner mentioned above. Dockerfile is at [/Dockerfile](/Dockerfile).
### Digital Ocean ### Digital Ocean
[![Create a Droplet](./doc/assets/droplet.svg)](https://marketplace.digitalocean.com/apps/code-server?action=deploy) [![Create a Droplet](./doc/assets/droplet.svg)](https://marketplace.digitalocean.com/apps/code-server?action=deploy)
@ -57,87 +47,11 @@ See the Docker one-liner mentioned above. Dockerfile is at [/Dockerfile](/Docker
- For self-hosting and other information see [doc/quickstart.md](doc/quickstart.md). - For self-hosting and other information see [doc/quickstart.md](doc/quickstart.md).
- For hosting on cloud platforms see [doc/deploy.md](doc/deploy.md). - For hosting on cloud platforms see [doc/deploy.md](doc/deploy.md).
### Build ## FAQ
- [VS Code prerequisites](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#prerequisites) See [./doc/FAQ.md](./doc/FAQ.md).
```shell
yarn
yarn build
node build/out/entry.js # You can run the built JavaScript with Node.
yarn binary # Or you can package it into a binary.
```
If changes are made to the patch and you've built previously you must manually
reset VS Code then run `yarn patch:apply`.
## Security
### Authentication
By default `code-server` enables password authentication using a randomly
generated password. You can set the `PASSWORD` environment variable to use your
own instead or use `--auth none` to disable password authentication.
Do not expose `code-server` to the open internet without some form of
authentication.
### Encrypting traffic with HTTPS
If you aren't doing SSL termination elsewhere you can directly give
`code-server` a certificate with `code-server --cert` followed by the path to
your certificate. Additionally, you can use certificate keys with `--cert-key`
followed by the path to your key. If you pass `--cert` without any path
`code-server` will generate a self-signed certificate.
If `code-server` has been passed a certificate it will also respond to HTTPS
requests and will redirect all HTTP requests to HTTPS. Otherwise it will respond
only to HTTP requests.
You can use [Let's Encrypt](https://letsencrypt.org/) to get an SSL certificate
for free.
Do not expose `code-server` to the open internet without SSL, whether built-in
or through a proxy.
## Future
- **Stay up to date!** Get notified about new releases of `code-server`.
![Screenshot](/doc/assets/release.gif)
- Electron and Chrome OS applications to bridge the gap between local<->remote.
## Telemetry
Use the `--disable-telemetry` flag to completely disable telemetry. We use the
data collected to improve code-server.
## Contributing
### Development
- [VS Code prerequisites](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#prerequisites)
```shell
yarn
yarn watch # Visit http://localhost:8080 once completed.
```
If you run into issues about a different version of Node being used, try running
`npm rebuild` in the VS Code directory.
If changes are made to the patch and you've built previously you must manually
reset VS Code then run `yarn patch:apply`.
## License
[MIT](LICENSE)
## Enterprise ## Enterprise
Visit [our enterprise page](https://coder.com) for more information about our Visit [our enterprise page](https://coder.com) for more information about our
enterprise offering. enterprise offerings.
## Commercialization
If you would like to commercialize code-server, please contact
contact@coder.com.

12
ci/ci.sh Executable file
View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -euo pipefail
main() {
cd "$(dirname "$0")/.."
yarn fmt
yarn lint
yarn test
}
main "$@"

View File

@ -1,4 +1,4 @@
FROM node:12 FROM node:12.14.0
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
libxkbfile-dev \ libxkbfile-dev \

10
ci/lib.sh Normal file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
set_version() {
local code_server_version=${VERSION:-${TRAVIS_TAG:-}}
if [[ -z $code_server_version ]]; then
code_server_version=$(grep version ./package.json | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[:space:]')
fi
export VERSION=$code_server_version
}

View File

@ -4,7 +4,7 @@ set -euo pipefail
main() { main() {
eslint --max-warnings=0 --fix $(git ls-files "*.ts" "*.tsx" "*.js") eslint --max-warnings=0 --fix $(git ls-files "*.ts" "*.tsx" "*.js")
stylelint --fix $(git ls-files "*.css") stylelint $(git ls-files "*.css")
tsc --noEmit tsc --noEmit
} }

View File

@ -33,4 +33,4 @@ RUN rm -rf /var/lib/apt/lists/*
EXPOSE 8080 EXPOSE 8080
USER coder USER coder
WORKDIR /home/coder WORKDIR /home/coder
ENTRYPOINT ["dumb-init", "fixuid", "-q", "code-server", "--host", "0.0.0.0"] ENTRYPOINT ["dumb-init", "fixuid", "-q", "code-server", "--host=0.0.0.0", "--auth=none"]

View File

@ -4,6 +4,8 @@ set -euo pipefail
main() { main() {
cd "$(dirname "$0")/../.." cd "$(dirname "$0")/../.."
soruce ./ci/lib.sh
set_version
if [[ ${CI:-} ]]; then if [[ ${CI:-} ]]; then
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin

View File

@ -6,12 +6,9 @@ set -euo pipefail
# This script assumes that yarn has already ran. # This script assumes that yarn has already ran.
function main() { function main() {
cd "$(dirname "${0}")/.." cd "$(dirname "${0}")/.."
source ./ci/lib.sh
local code_server_version=${VERSION:-${TRAVIS_TAG:-}} set_version
if [[ -z $code_server_version ]]; then
code_server_version=$(grep version ./package.json | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g' | tr -d '[:space:]')
fi
export VERSION=$code_server_version
# Always minify and package on CI since that's when releases are pushed. # Always minify and package on CI since that's when releases are pushed.
if [[ ${CI:-} ]]; then if [[ ${CI:-} ]]; then

33
doc/CONTRIBUTING.md Normal file
View File

@ -0,0 +1,33 @@
# Contributing
## Development Workflow
- [VS Code prerequisites](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#prerequisites)
```shell
yarn
yarn vscode
yarn watch # Visit http://localhost:8080 once completed.
```
Any changes made to the source will be live reloaded.
If you run into issues about a different version of Node being used, try running
`npm rebuild` in the VS Code directory.
If changes are made to the patch and you've built previously you must manually
reset VS Code then run `yarn vscode:patch`.
Some docs are available at [../src/node/app](../src/node/app) on how code-server
works internally.
## Build
- [VS Code prerequisites](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#prerequisites)
```shell
yarn
yarn build
node build/out/entry.js # You can run the built JavaScript with Node.
yarn binary # Or you can package it into a binary.
```

49
doc/FAQ.md Normal file
View File

@ -0,0 +1,49 @@
# FAQ
## What's the deal with extensions?
Unfortunately, the Microsoft VS Code Marketplace is
## How is this different from VS Code Online?
VS Code Online is a closed source managed service by Microsoft and only runs on Azure.
code-server is open source and can be freely ran on any machine.
## How should I expose code-server to the internet?
By far the most secure method of using code-server is via
[sshcode](https://github.com/codercom/sshcode) as it runs code-server and then forwards
its port over SSH and requires no setup on your part other than having a working SSH server.
If you cannot use sshcode, then you will need to ensure there is some sort of authorization in
front of code-server and that you are using HTTPS to secure all connections.
By default when listening externally, code-server enables password authentication using a
randomly generated password so you can use that. You can set the `PASSWORD` environment variable
to use your own instead. If you want to handle authentication yourself, use `--auth none`
to disable password authentication.
For HTTPS, you can use a self signed certificate by passing in just `--cert` or pass in an existing
certificate by providing the path to `--cert` and the path to its key with `--cert-key`.
If `code-server` has been passed a certificate it will also respond to HTTPS
requests and will redirect all HTTP requests to HTTPS. Otherwise it will respond
only to HTTP requests.
You can use [Let's Encrypt](https://letsencrypt.org/) to get an SSL certificate
for free.
## Why are there x86 releases?
32 bit releases have been
## Multi Tenancy
If you want to run multiple code-server's on shared infrastructure, we recommend using
something like kubernetes and the code-server docker image.
## How can I disable telemetry?
Use the `--disable-telemetry` flag to completely disable telemetry. We use the
data collected only to improve code-server.

View File

@ -39,7 +39,7 @@
"parcel-bundler": "^1.12.4", "parcel-bundler": "^1.12.4",
"prettier": "^1.18.2", "prettier": "^1.18.2",
"stylelint": "^13.0.0", "stylelint": "^13.0.0",
"stylelint-config-standard": "^19.0.0", "stylelint-config-recommended": "^3.0.0",
"ts-node": "^8.4.1", "ts-node": "^8.4.1",
"typescript": "3.7.2" "typescript": "3.7.2"
}, },

View File

@ -10,17 +10,8 @@ body {
background: #272727; background: #272727;
color: #f4f4f4; color: #f4f4f4;
margin: 0; margin: 0;
font-family: font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji",
-apple-system, "Segoe UI Emoji", "Segoe UI Symbol";
BlinkMacSystemFont,
"Segoe UI",
Roboto,
Helvetica,
Arial,
sans-serif,
"Apple Color Emoji",
"Segoe UI Emoji",
"Segoe UI Symbol";
overflow: hidden; overflow: hidden;
} }

View File

@ -1848,12 +1848,7 @@ chokidar@^2.1.5:
optionalDependencies: optionalDependencies:
fsevents "^1.2.7" fsevents "^1.2.7"
chownr@^1.1.1: chownr@^1.1.1, chownr@^1.1.3:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
chownr@^1.1.3:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
@ -6847,13 +6842,6 @@ stylelint-config-recommended@^3.0.0:
resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657" resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657"
integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ== integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==
stylelint-config-standard@^19.0.0:
version "19.0.0"
resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-19.0.0.tgz#66f0cf13f33b8a9e34965881493b38fc1313693a"
integrity sha512-VvcODsL1PryzpYteWZo2YaA5vU/pWfjqBpOvmeA8iB2MteZ/ZhI1O4hnrWMidsS4vmEJpKtjdhLdfGJmmZm6Cg==
dependencies:
stylelint-config-recommended "^3.0.0"
stylelint@^13.0.0: stylelint@^13.0.0:
version "13.2.0" version "13.2.0"
resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.2.0.tgz#b6f5b67b9a9a51f1fd105ab916952456d93826b4" resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.2.0.tgz#b6f5b67b9a9a51f1fd105ab916952456d93826b4"