* Fix building from source on arm
Not building from source causes argon2 to pull the wrong arch, so we
have to build from source.
But building from source is causing the new Kerberos module to fail on
arm64 and keytar to fail on both.
The latter has been very difficult to debug because the GitHub image
provides a different result to containers based on Ubuntu 20.04.
Because of this, use a container instead.
Use debian:buster as the container because it is easier to set up the
architecture sources (no need to modify the sources) and because it
seems to come with glibc 2.28 rather than 2.31.
Also use the exact version of Node (18.15.0) for reproducibility.
* Set owner and group during tar to zero
Otherwise you get IDs that can cause (benign) errors while extracting,
which might be confusing. At the very least, I did not see these errors
from previous tars (although they seem to use 1001).
There is no guarantee what IDs might exist so 0 seems the most
reasonable.
The comment said the issue with argon2 was related to CentOS 7 but the
cross-compile steps never used CentOS 7 so maybe the real issue is with
the architecture.
* Avoid packaging yarn.lock
Since the shrinkwrap is what we want everything to use.
* Build with npm
It seems we stuck with yarn because npm was giving us errors but I will try
sorting it out now so we can build with npm as originally intended.
* Remove build from source
Not using CentOS 7 anymore so based on the comment we no longer need
this. Keytar seems to install fine now.
* Update missed Node version
These numbers are all over the place.
* npm_config_arch must be lowercase
* Patch out Kerberos
I am not sure exactly how it is used but I think it is not a path code-server
worries about, at least not right now. Just going to patch it out rather than
figure out how to build it on armv7l but we can revisit later.
* Update dependencies and force-update qs
This is mainly an attempt to get rid of as many resolutions as possible
since it seems they are unnecessary except for qs (according to yarn/npm
audit).
For qs use 6.9.7 since Express is using 6.9.6 and that matches the most
closely.
Also add overrides since this is npm's version of yarn's resolutions and
we need it for the shrinkwrap to generate with the right dependencies.
Decided to keep pinning @types/node as well although I am not sure it is
necessary. Express is pulling in v20 types. Since this is
development-only we only need it in resolutions.
* Run formatter
Some rules seem to have changed with the dependency updates.
* Replace deprecated bodyParser.json() usage
* Audit npm shrinkwrap as well
* Skip installing dependencies in audit
It seems the tools only require the lock files.
* Fix tests when using ipv6
* Add missing openssl dependency to flake
At least, for the standalone and for anyone running on default Node 18.
If support for 2.17 is needed then one would need to build Node 18 with 2.17 and then build code-server with that version (specifically, the native npm modules).
* Update VS Code to 1.82.2
* Add new libkrb5 dependency
* Update patches
The only changes were to context except:
- The URL callback provider uses a new _callbackRoute argument and moved
locations.
- The telemetry provider gets passed the request service as the first
argument now.
- CSP hash changed, as usual.
* Update Node to v18
* Revert back to es2020
es2022 is breaking Safari.
Looks like the images got updated to v18 so they started failing. For
npm install v16 and for Docker just run the script directly, it seems
silly to waste time installing v16 just to run a script through yarn.
This is failing CI on Dependabot PRs. Opted to just remove it since
most (all?) PRs will be from forks and this workflow will not run
anyway. If we figure out the secret situation we can add it back.
It is causing CI to fail for Dependabot (no access to the token) and it
does not work with forks and currently there is no one who pushes
straight to the repo so this will never be used.
Can always add it back if we figure out how to make the secrets work.
* feat: add i18n in login page
* fix: add word space and put the app name into the title
* fix: remove duplicate replace title
* fix: prettier format code
* fix: fix typescript check warning
* fix: add zh-cn locale file code owner
* fix: use existing flag locale to the login page
Co-authored-by: Joe Previte <jjprevite@gmail.com>
* feat(ci): add lint-actions step to build.yaml
This adds a new job to the Build CI pipeline to lint our GitHub Actions.
By doing this, we can prevent typos from slipping in.
Fixes#5776
* fix: disable shellcheck in actionlint
I don't think we want to enable this for now.
* fix: ignore set-output warnings for now
It's deprecated but there isn't a reason to move away from using it yet.
* chore: update renovate.json ignoreDeps
ansi-regex, env-paths and limiter all switch to ESM which we can't
support at the moment so ignore updates for now.
* chore: update actions/cache@v3
* chore: update minor deps
* chore: add pretteir to renovate.json
* chore: upgrade Code to 1.74.1
* chore: remove require in integration.diff
I don't know what the impact of this is but in 192c67db71
they removed the usage of `require` in `server.main.ts`.
More details in PR: https://github.com/microsoft/vscode/pull/165831
* chore: update marketplace.diff
* chore: update sha hash in webview.diff
* chore: update disable-builtin-ext-update.diff
If my logic is right, then this patch is now simplified thanks to this:
https://github.com/microsoft/vscode/blob/1.74.1/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts#L1238
* chore: refresh proxy-uri patch
* chore: refresh local-storage.diff
* chore: refresh sourcemaps.diff
* chore: refresh disable-downloads.diff
* chore: refresh display-language.diff
* chore: refresh getting-started.diff
* docs: update testing notes for cli-window-open
* docs: update telemetry testing instructions
* fix: add GITHUB_TOKEN to build code-server job
Downloading @vscode/ripgrep is failing only in CI so adding this
environment variable to see if it increases the rate limit.
Ref: https://github.com/microsoft/vscode-ripgrep#github-api-limit-note
* refactor: use own cache key build code-server job
* temp: disable vscode test
* refactor: delete wrapper test
* Revert "refactor: delete wrapper test"
This reverts commit 3999279b73.
* refactor: move vscode tests to e2e (#5911)
* wip: migrate vscode tests to e2e
* feat: add codeWorkspace to global setup
* refactor: only use dir in spawn when we should
* wip: migrate more tests
* refactor: move all vscode tests to e2e
* refactor(ci): move unit to own job
* fixup: add codecov to unit test step
* Update test/e2e/models/CodeServer.ts
* Update test/e2e/models/CodeServer.ts
* docs: add note about intercept requests
* refactor: rm unused clean() calls
* refactor: delete duplicate test
* refactor: update 'should not redirect' test
* refactor: rm unused imports
* refactor: rm unnecessary navigate call in test
* fixup: formatting
* wip: update test
* refactor: modify assertion for proxy
* fixup: use REVERSE_PROXY_BASE_PATH
* refactor: add helper fn getMaybeProxiedPathname
* fixup: formatting
* fixup: rm unused import
* chore: increase playwright timeout
* Revert "chore: increase playwright timeout"
This reverts commit a059129252.
* chore: rm timeout
* refactor: remove keytar dep in cross-compile
* refactor: try other keytar package
* refactor: remove keytar step in cross-compile
* fix: manually remove keytar
* try this first
* I think this is it
* Revert "I think this is it"
This reverts commit 5c566b0c01.
* okay this is it
* fixup
* try legacy peer
* remove keytar before standalone
* wrong path
* maybe
* revert: change *npm* back to npm*
* revert: don't uninstall keytar
* fix: use npm run standalone-release
* fixup formatting
* Revert "refactor: remove yarn.lock steps (#5850)"
This reverts commit 907747d394.
* fixup: remove the --exclude
* refactor: remove yarn.lock check
* try ddd in postinstall
* refactor: cache before release:standalone
* refactor: add os to cache key in release
* chore: formatting
* Update ci/build/npm-postinstall.sh
* fixup: formatting
* refactor: remove keytar dep in cross-compile
* refactor: try other keytar package
* refactor: remove keytar step in cross-compile
* fix: manually remove keytar
* try this first
* I think this is it
* Revert "I think this is it"
This reverts commit 5c566b0c01.
* okay this is it
* fixup
* try legacy peer
* remove keytar before standalone
* wrong path
* maybe
* revert: change *npm* back to npm*
* revert: don't uninstall keytar
* fix: use npm run standalone-release
* fixup formatting
* Revert "refactor: remove yarn.lock steps (#5850)"
This reverts commit 907747d394.
* fixup: remove the --exclude
* refactor: remove yarn.lock check
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
When I did the last release, `VERSION` wasn't defined which lead to a
blank string in the PR title and the commit message here:
https://github.com/coder/code-server-aur/pull/24
This should fix that.
* wip: changelog
* fixup
* fix: add +x to product.json in build-vscode
While testing a pre-release, there seems to be a bug with the file
permissions for `product.json`. Adding `chmod +x` to see if that fixes
it.
* chore: increase timeout
* fix: keep product.json file permissions in release
When we added the change to modify the `package.json` version using `mv`
and `jq` we didn't account for lost file permissions.
This caused a bug only happening in CI.
This should fix it by giving it 755 via `chmod`.
* trigger ci
* chore: update package.json bust cache
* fixup!: fix: keep product.json file permissions in release
* Revert "fix: add +x to product.json in build-vscode"
This reverts commit fc4d2b532f.
* chore: pin ubuntu runner in build code-server
* chore: update prettierignore
* chore: add notes to changelog
* chore: use ubuntu-22.04 for e2e
* chore: pin all jobs in build to ubuntu 20.04
* feat(wrapper): add tests for isChild
* fixup: include description ts-expect-error comment
* chore: update CHANGELOG
* chore: update Helm chart
* fixup: use our childProcess
* Update CHANGELOG.md
Co-authored-by: Asher <ash@coder.com>
Co-authored-by: Asher <ash@coder.com>
* refactor: get version dynamically
* chore: remove version
* fixup: missing quotes
* refactor: drop global VERSION
* wip: updating ersion in publish
* refactor: update publish.yaml with version changes
* refactor: release.yaml with new version changes
* refactor: update build.yaml with version changes
* chore: update maintainer
* fixup: update version in build-vscode
* fixup: fix github env version
* try macos only
* try again
* last resort
* joe again
* this oneee
* fixup: this should work
* try using inputs
* docs: update release notes
* fixup!: use env.VERSION in docker step
* fixup!: comment get and set version
* fixup!: remove compress release package comment
* fixup!: use $VERSION in npm-version
* refactor: set VERSION in build VS Code step
* refactor: use 0.0.0 in package.json version
* refactor: delete release-prep script
* Update ci/build/build-vscode.sh
* fixup!: remove extra VERSION set in aur
* fix: use * for test plugin engines
This removes the need to update this version with every version change.
* refactor: use npm-package in release assets
This adds a new job to `release.yaml` to upload the `npm-package` to the
release assets which will also allow us to download it in the
`publish.yaml` workflow.
* docs: update release instructions
* fixup!: use package.tar.gz
* fix: use * for test plugin engines
This removes the need to update this version with every version change.
* refactor: use npm-package in release assets
This adds a new job to `release.yaml` to upload the `npm-package` to the
release assets which will also allow us to download it in the
`publish.yaml` workflow.
* docs: update release instructions
* docs: add toc to CODE OF CONDUCT
* chore: add prettier ignore blocks to docs
* chore: update styles for Dockerfile
* refactor: separate prettier, doctoc
This does a couple things:
- update `.prettierignore`
- split `prettier` and `doctoc` commands. you can still run with `yarn
fmt`
- delete `fmt.sh` and add `doctoc.sh`
By doing so, we can run tasks in parallel in CI and we should also have
less false positives than before with `yarn fmt` locally.
* refactor: update prettier job, add doctoc
This modifies the prettier job to use actionsx/prettier. It also adds a
job for `doctoc`.
* chore: upgrade to prettier 2.7.1
* chore: pin doctoc to 2.0.0
* fixup!: add .pc to prettierignore
* feat: add --cache to prettier cmd
* refactor: remove stylelint
* refactor: move shellcheck to separate job
* refactor: add helm script and job
* refactor: add eslint job and yarn script
* fix(test/tsconfig): exclude test-plugin
* refactor: delete lint, add typecheck job
* refactor: remove prebuild
* wip: add notes about unit test refactor
* refactor: delete buggy socket test
This test was really added to in get cover specific lines but it's buggy
and only passes sometimes locally. I think it's okay to remove because:
- it's an implementation detail (not user facing)
- not preventing any specific regressions
* refactor: move test-plugin to integration suite
This seems more appropriate given this tests how a plugin might work
within code-server.
* wip
* wip: refactor vscode integration tests
* refactor: move unit tests to separate job
* fix: formatting
* Revert "wip: refactor vscode integration tests"
This reverts commit 13286bf4c9.
* Revert "refactor: move unit tests to separate job"
This reverts commit 6c87b540b4.
* feat: collect codecov integration tests
* fixup! feat: collect codecov integration tests
* fixup! feat: collect codecov integration tests
* fixup!: move helm step
* fixup!: update ids for caching
* trigger ci
* trigger ci
* chore: clean up names in security.yaml
* fixup!: remove .tsx
* fixup!: change to src/**"
* fixup!: move helm cmd to yaml
* fixup!: always build test plugin
* fixup!: fix plugin typings
* fixup! add back flakey test
* fixup!: only install helm deps if changes
* fixup!: revert node mod caching
* dont keep, test for asher
* fixup!: add make to centos
* refactor: add test:native
This adds a new script to run native tests (i.e. --help which should run
in ci on all platforms).
* try updating glibc
* try 2.25
* Revert "refactor: move test-plugin to integration suite"
This reverts commit bc02005dc0.
I couldn't get past some GLIBC errors in CI so moving back to unit
tests.
* Revert "try updating glibc"
This reverts commit 02ed560f22.
* fixup!
* asher: again
* try this for ts changes
* fixup
* refactor: scripts.yml -> scripts.yaml
* fixup!: move lint-sh to scripts.yaml
* fixup!: use apk for lint scripts
* fixup! fixup!: use apk for lint scripts
* fixup!: remove typecheck step
* fix: pattern for lint ts files
* test: lint should fail
* fixup! fixup!: use apk for lint scripts
* Revert "test: lint should fail"
This reverts commit 158c64db04.
* fixup!: skip cancel workflow on forks
Looks like the cancel action workflow can't run on forks due to secrets.
See https://github.com/andymckay/cancel-action/issues/4
* fixup: remove cancel-workflow
* fixup! fixup! fixup!: use apk for lint scripts
* fixup! fixup! fixup!: use apk for lint scripts
* fixup!: fix yarn key
* fixup!: add fetch-depth 0
* chore: update upstream code
* update patches for vs 1.71.0
the cli fix seems to be fixed in upstream, the telemtry patch requires (again) some fixing and adjustments.
* add safari fix.
* increase ci timeout
Co-authored-by: Joe Previte <jjprevite@gmail.com>
This adds a new job called aur which checkouts code-server-aur, updates
the files with the new version then opens a PR into the repo.
Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
* docs: update maintaining
* chore(e2e): add maxFailures to playwright
* fix(ci): skip submodule in e2e job
We don't need the submodules for the e2e job. This will speed up the
checkout step.
* feat(ci): add test-e2e-proxy job
This adds a new job to CI to run our tests behind Caddy and simulate
code-server running against a reverse-proxy.
* refactor: make e2e work with reverse proxy
This refactors the e2e test in a couple ways:
- remove setting cookie in localStorage (instead we pass --auth none)
- refactor address() method to account for reverse proxy logic
* Update test/e2e/models/CodeServer.ts
* Update test/playwright.config.ts
* Update test/utils/constants.ts
Co-authored-by: Asher <ash@coder.com>
* Update test/utils/helpers.ts
Co-authored-by: Asher <ash@coder.com>
Co-authored-by: Asher <ash@coder.com>
* Include bin scripts for all platforms
These will get symlinked as part of the postinstall. These scripts
provide everything ours does inside the integrated terminal plus more.
* Improve OS detection
Specifically for Windows although we do not yet support Windows.
Also standardize the duplicate arch functions since they had drifted
from each other bit.
* Remove duplicate asar symlink
Since standalone releases run the postinstall they will get the asar
symlink there. That means the symlink will not exist for the npm
package and we will not need to ignore it.
The symlink portion is split out so it can be re-used for other
symlinks (for example linking bin scripts).
* Add symlinks to bin scripts
* Add test for opening a file from the terminal
* Add global Playwright timeout
Otherwise it will exceed the Actions timeout and get rudely killed
without any output.
* Make sed work on macOS
* Fix Node path in bin scripts
* Disable shellcheck expansion error
* Make scripts executable
* Remove .bak files created by sed
* Include Code build script in cache hash
Otherwise if we change the script it will not rebuild Code.
* Make sure the terminal opens
The selector was timing out even though it matched more than one element
but matching on the focused one appears to work.
In addition add a loop so it can keep trying to open the terminal
if something goes wrong with the focus.
* chore(release): bump version to 4.5.1
* chore: bump helm chart
* chore: update CHANGELOG
* Revert "chore: bump helm chart"
This reverts commit 703b03b665.
* chore: bump helm chart to 3.0.0
* revert: remove bad change to manifes.json icon
* fix(ci): add package.json.version to code cachekey
Before this, creating a release sometimes prevented vscode from
rebuilding and using the cache instead. Now we use the
package.json.version in the cache key to "bust" the cache if the
package.json version is updated (aka a release).
Fixes#5316
* Update .github/workflows/ci.yaml
Co-authored-by: Asher <ash@coder.com>
* fixup: formatting
* Revert "refactor: remove version check e2e test"
This reverts commit b23c398b7d.
Co-authored-by: Asher <ash@coder.com>
* refactor: switch to codecov-uploader GitHub Action
codecov deprecated their Node wrapper for uploading coverage reports.
This removes that and uses their new uploaded along with the v2 GitHub
Action they maintain.
* fix: update broken integration test
* 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>