diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4a10a92e..f20b60f3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -81,6 +81,7 @@ jobs: - run: ./ci/steps/release-static.sh env: # Otherwise we get rate limited when fetching the ripgrep binary. + # For whatever reason only MacOS needs it. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload release artifacts uses: actions/upload-artifact@v2 diff --git a/ci/README.md b/ci/README.md index add6b081..ce54ac34 100644 --- a/ci/README.md +++ b/ci/README.md @@ -10,13 +10,15 @@ Any file and directory added into this tree should be documented here. 1. Update the version of code-server in `package.json` and push a commit 1. CI will run and generate the `npm-package` and `release-packages` artifacts on the GH actions workflow -1. Create a new draft release and attach all the files in `release-packages` -1. Run some basic sanity tests on one of the released packages +1. Create a new draft release and attach all files in `release-packages` + 1. Run some basic sanity tests on one of the released packages +1. Summarize the major changes in the release notes and link to the relevant issues. + 1. Make sure to mention the VS Code version in the release notes 1. Publish the release -1. CI will automatically grab the artifacts and then - 1. Publish the NPM package. - 1. Publish the AMD64 docker image. - 1. Publish the ARM64 docker image. + 1. CI will automatically grab the artifacts and then + 1. Publish the NPM package + 1. Publish the AMD64 docker image + 1. Publish the ARM64 docker image ## dev @@ -63,9 +65,9 @@ You can disable minification by setting `MINIFY=`. - Useful to do a clean build. - [./build/code-server.sh](./build/code-server.sh) - Copied into static releases to run code-server with the bundled node binary. -- [./build/test-release.sh](./build/test-static-release.sh) +- [./build/test-static-release.sh](./build/test-static-release.sh) (`yarn test:static-release`) - Ensures code-server in the `./release-static` directory runs -- [./build/build-packages.sh](./build/build-static-pkgs.sh) (`yarn package`) +- [./build/build-packages.sh](./build/build-packages.sh) (`yarn package`) - Packages `./release-static` into an archive in `./release-packages` - If on linux, [nfpm](https://github.com/goreleaser/nfpm) is used to generate .deb and .rpm - [./build/nfpm.yaml](./build/nfpm.yaml) @@ -77,6 +79,12 @@ You can disable minification by setting `MINIFY=`. This directory contains the release docker container. +- [./release-container/build.sh](./release-container/build.sh) + - Builds the release container + - Assumes debian releases are ready in `./release-packages` +- [./release-container/push.sh](./release-container/push.sh) + - Pushes the built release container to docker hub and updates the latest tag + ## container This directory contains the container for CI. @@ -84,7 +92,7 @@ This directory contains the container for CI. ## steps This directory contains a few scripts used in CI. -Just helps avoid clobbering .travis.yml. +Just helps avoid clobbering the CI configuration. - [./steps/test.sh](./steps/test.sh) - Runs `yarn ci` after ensuring VS Code is patched @@ -98,5 +106,6 @@ Just helps avoid clobbering .travis.yml. - [./steps/publish-npm.sh](./steps/publish-npm.sh) - Grabs the `npm-package` release artifact for the current commit and publishes it on NPM - [./steps/publish-docker.sh](./steps/publish-docker.sh) - - Grabs the `release-packages` release artifact for the current commit and builds a docker - image with it and publishes that onto docker hub + - Grabs the `release-packages` release artifact for the current commit and + builds a docker image with it and publishes that onto docker hub with the + correct tag and updates latest diff --git a/ci/release-container/build.sh b/ci/release-container/build.sh new file mode 100755 index 00000000..27941a9b --- /dev/null +++ b/ci/release-container/build.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail + +main() { + cd "$(dirname "$0")/../.." + source ./ci/lib.sh + VERSION="$(pkg_json_version)" + + imageTag="codercom/code-server:$VERSION" + + docker build -t "$imageTag" -f ./ci/release-container/Dockerfile . +} + +main "$@" diff --git a/ci/release-container/push.sh b/ci/release-container/push.sh index 635f11b2..0e44a4e4 100755 --- a/ci/release-container/push.sh +++ b/ci/release-container/push.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash - set -euo pipefail main() { @@ -8,14 +7,10 @@ main() { VERSION="$(pkg_json_version)" imageTag="codercom/code-server:$VERSION" - if [[ $(arch) == "arm64" ]]; then - imageTag+="-arm64" - fi - docker build \ - -t "$imageTag" \ - -f ./ci/release-container/Dockerfile . docker push "$imageTag" + docker tag "$imageTag" codercom/code-server:latest + docker push codercom/code-server:latest } main "$@" diff --git a/ci/steps/publish-docker.sh b/ci/steps/publish-docker.sh index d5e0835d..48bf8c1a 100755 --- a/ci/steps/publish-docker.sh +++ b/ci/steps/publish-docker.sh @@ -10,6 +10,7 @@ main() { fi download_artifact release-packages ./release-packages + ./ci/release-container/build.sh ./ci/release-container/push.sh } diff --git a/ci/steps/release-static.sh b/ci/steps/release-static.sh index 6d565421..63c1b778 100755 --- a/ci/steps/release-static.sh +++ b/ci/steps/release-static.sh @@ -5,7 +5,7 @@ main() { cd "$(dirname "$0")/../.." yarn release:static - ./ci/build/test-static-release.sh + yarn test:static-release yarn package } diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index 824eaad2..37be0f7d 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -41,5 +41,7 @@ yarn vscode yarn build yarn build:vscode yarn release -node ./release # Run the built JavaScript with Node. +cd release +yarn --production +node . # Run the built JavaScript with Node. ``` diff --git a/package.json b/package.json index 05287881..c8b2bab9 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "build:vscode": "./ci/build/build-vscode.sh", "release": "./ci/build/build-release.sh", "release:static": "./ci/build/build-static-release.sh", + "test:static-release": "./ci/build/test-static-release.sh", "package": "./ci/build/build-packages.sh", "_____": "", "fmt": "./ci/dev/fmt.sh",