Fixes for CI from @code-asher's review

This commit is contained in:
Anmol Sethi 2020-05-08 16:31:42 -04:00
parent 231e31656a
commit 7c7f62d3f3
No known key found for this signature in database
GPG Key ID: 8CEF1878FF10ADEB
8 changed files with 43 additions and 20 deletions

View File

@ -81,6 +81,7 @@ jobs:
- run: ./ci/steps/release-static.sh - run: ./ci/steps/release-static.sh
env: env:
# Otherwise we get rate limited when fetching the ripgrep binary. # Otherwise we get rate limited when fetching the ripgrep binary.
# For whatever reason only MacOS needs it.
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload release artifacts - name: Upload release artifacts
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2

View File

@ -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. 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. 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. 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. 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. Publish the release
1. CI will automatically grab the artifacts and then 1. CI will automatically grab the artifacts and then
1. Publish the NPM package. 1. Publish the NPM package
1. Publish the AMD64 docker image. 1. Publish the AMD64 docker image
1. Publish the ARM64 docker image. 1. Publish the ARM64 docker image
## dev ## dev
@ -63,9 +65,9 @@ You can disable minification by setting `MINIFY=`.
- Useful to do a clean build. - Useful to do a clean build.
- [./build/code-server.sh](./build/code-server.sh) - [./build/code-server.sh](./build/code-server.sh)
- Copied into static releases to run code-server with the bundled node binary. - 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 - 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` - 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 - If on linux, [nfpm](https://github.com/goreleaser/nfpm) is used to generate .deb and .rpm
- [./build/nfpm.yaml](./build/nfpm.yaml) - [./build/nfpm.yaml](./build/nfpm.yaml)
@ -77,6 +79,12 @@ You can disable minification by setting `MINIFY=`.
This directory contains the release docker container. 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 ## container
This directory contains the container for CI. This directory contains the container for CI.
@ -84,7 +92,7 @@ This directory contains the container for CI.
## steps ## steps
This directory contains a few scripts used in CI. 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) - [./steps/test.sh](./steps/test.sh)
- Runs `yarn ci` after ensuring VS Code is patched - 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) - [./steps/publish-npm.sh](./steps/publish-npm.sh)
- Grabs the `npm-package` release artifact for the current commit and publishes it on NPM - Grabs the `npm-package` release artifact for the current commit and publishes it on NPM
- [./steps/publish-docker.sh](./steps/publish-docker.sh) - [./steps/publish-docker.sh](./steps/publish-docker.sh)
- Grabs the `release-packages` release artifact for the current commit and builds a docker - Grabs the `release-packages` release artifact for the current commit and
image with it and publishes that onto docker hub builds a docker image with it and publishes that onto docker hub with the
correct tag and updates latest

14
ci/release-container/build.sh Executable file
View File

@ -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 "$@"

View File

@ -1,5 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
main() { main() {
@ -8,14 +7,10 @@ main() {
VERSION="$(pkg_json_version)" VERSION="$(pkg_json_version)"
imageTag="codercom/code-server:$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 push "$imageTag"
docker tag "$imageTag" codercom/code-server:latest
docker push codercom/code-server:latest
} }
main "$@" main "$@"

View File

@ -10,6 +10,7 @@ main() {
fi fi
download_artifact release-packages ./release-packages download_artifact release-packages ./release-packages
./ci/release-container/build.sh
./ci/release-container/push.sh ./ci/release-container/push.sh
} }

View File

@ -5,7 +5,7 @@ main() {
cd "$(dirname "$0")/../.." cd "$(dirname "$0")/../.."
yarn release:static yarn release:static
./ci/build/test-static-release.sh yarn test:static-release
yarn package yarn package
} }

View File

@ -41,5 +41,7 @@ yarn vscode
yarn build yarn build
yarn build:vscode yarn build:vscode
yarn release yarn release
node ./release # Run the built JavaScript with Node. cd release
yarn --production
node . # Run the built JavaScript with Node.
``` ```

View File

@ -17,6 +17,7 @@
"build:vscode": "./ci/build/build-vscode.sh", "build:vscode": "./ci/build/build-vscode.sh",
"release": "./ci/build/build-release.sh", "release": "./ci/build/build-release.sh",
"release:static": "./ci/build/build-static-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", "package": "./ci/build/build-packages.sh",
"_____": "", "_____": "",
"fmt": "./ci/dev/fmt.sh", "fmt": "./ci/dev/fmt.sh",