Include version when building

This commit is contained in:
Asher 2019-07-10 18:10:39 -05:00
parent 09e3cfd881
commit 2fdf09e6e7
No known key found for this signature in database
GPG key ID: D63C1EF81242354A
5 changed files with 43 additions and 31 deletions

View file

@ -56,8 +56,11 @@ How to [secure your setup](/doc/security/ssl.md).
directory which will cause issues because then `yarn watch` will try to directory which will cause issues because then `yarn watch` will try to
compile the build directory as well. compile the build directory as well.
- For now `@coder/nbin` is a global dependency. - For now `@coder/nbin` is a global dependency.
- Run `yarn build ${vscodeVersion} ${target} ${arch}`in this directory (for example: - Run `yarn build ${codeServerVersion} ${vscodeVersion} ${target} ${arch}` in
`yarn build 1.35.0 linux x64`). this directory (for example: `yarn build development 1.35.0 linux x64`).
- You can run the built code with `node path/to/build/out/vs/server/main.js` or run
`yarn binary` with the same arguments in the previous step to package the
code into a single binary.
## Development ## Development

View file

@ -1,41 +1,51 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -euo pipefail
# Build using a Docker container using the specified image and version. # Build using a Docker container.
function docker-build() { function docker-build() {
local image="${1}" ; shift
local version="${1}" ; shift
local vscodeVersion="${1}" ; shift
local target="${1}" ; shift
local arch="${1}" ; shift
local containerId local containerId
containerId=$(docker create --network=host --rm -it -v "$(pwd)"/.cache:/src/.cache "${image}") containerId=$(docker create --network=host --rm -it -v "$(pwd)"/.cache:/src/.cache "${image}")
docker start "${containerId}" docker start "${containerId}"
docker exec "${containerId}" mkdir -p /src docker exec "${containerId}" mkdir -p /src
function docker-exec() { function docker-exec() {
docker exec "${containerId}" bash -c "$@" local command="${1}" ; shift
local args="'${codeServerVersion}' '${vscodeVersion}' '${target}' '${arch}'"
docker exec "${containerId}" \
bash -c "cd /src && CI=true yarn ${command} ${args}"
} }
docker cp ./. "${containerId}":/src docker cp ./. "${containerId}":/src
docker-exec "cd /src && CI=true yarn build \"${vscodeVersion}\" \"${target}\" \"${arch}\"" docker-exec build
docker-exec "cd /src && CI=true yarn binary \"${vscodeVersion}\" \"${target}\" \"${arch}\"" docker-exec binary
docker-exec "cd /src && CI=true yarn package \"${vscodeVersion}\" \"${target}\" \"${arch}\" \"${version}\"" docker-exec package
docker cp "${containerId}":/src/release/. ./release/ docker cp "${containerId}":/src/release/. ./release/
docker stop "${containerId}" docker stop "${containerId}"
} }
# Build locally.
function local-build() {
function local-exec() {
local command="${1}" ; shift
CI=true yarn "${command}" \
"${codeServerVersion}" "${vscodeVersion}" "${target}" "${arch}"
}
local-exec build
local-exec binary
local-exec package
}
# Build code-server in the CI. # Build code-server in the CI.
function main() { function main() {
local version="${VERSION:-}" local codeServerVersion="${VERSION:-}"
local vscodeVersion="${VSCODE_VERSION:-}" local vscodeVersion="${VSCODE_VERSION:-}"
local ostype="${OSTYPE:-}" local ostype="${OSTYPE:-}"
local target="${TARGET:-}" local target="${TARGET:-}"
local arch=x64 local arch=x64
if [[ -z "${version}" ]] ; then if [[ -z "${codeServerVersion}" ]] ; then
>&2 echo "Must set VERSION environment variable"; exit 1 >&2 echo "Must set VERSION environment variable"; exit 1
fi fi
@ -45,9 +55,7 @@ function main() {
if [[ "${ostype}" == "darwin"* ]]; then if [[ "${ostype}" == "darwin"* ]]; then
target=darwin target=darwin
CI=true yarn build "${vscodeVersion}" "${target}" "${arch}" local-build
CI=true yarn binary "${vscodeVersion}" "${target}" "${arch}"
CI=true yarn package "${vscodeVersion}" "${target}" "${arch}" "${version}"
else else
local image local image
if [[ "${target}" == alpine ]]; then if [[ "${target}" == alpine ]]; then
@ -57,7 +65,7 @@ function main() {
image=codercom/nbin-centos image=codercom/nbin-centos
target=linux target=linux
fi fi
docker-build "${image}" "${version}" "${vscodeVersion}" "${target}" "${arch}" docker-build
fi fi
} }

View file

@ -3,6 +3,7 @@ const fs = require("fs");
const a = process.argv[2]; const a = process.argv[2];
const b = process.argv[3]; const b = process.argv[3];
const out = process.argv[4]; const out = process.argv[4];
const json = JSON.parse(process.argv[5] || "{}");
const aJson = JSON.parse(fs.readFileSync(a)); const aJson = JSON.parse(fs.readFileSync(a));
const bJson = JSON.parse(fs.readFileSync(b)); const bJson = JSON.parse(fs.readFileSync(b));
@ -15,4 +16,5 @@ delete aJson.optionalDependencies;
fs.writeFileSync(out, JSON.stringify({ fs.writeFileSync(out, JSON.stringify({
...aJson, ...aJson,
...bJson, ...bJson,
...json,
}, null, 2)); }, null, 2));

View file

@ -4,6 +4,6 @@ if (!global.NBIN_LOADED) {
nbin.shimNativeFs("{{ROOT_PATH}}"); nbin.shimNativeFs("{{ROOT_PATH}}");
global.NBIN_LOADED = true; global.NBIN_LOADED = true;
} catch (error) { } catch (error) {
console.log("Not in the binary"); // Not in the binary.
} }
} }

View file

@ -72,8 +72,10 @@ function build-code-server() {
rm -rf "${codeServerBuildPath}" rm -rf "${codeServerBuildPath}"
mkdir -p "${codeServerBuildPath}" mkdir -p "${codeServerBuildPath}"
local json="{\"codeServerVersion\": \"${codeServerVersion}\"}"
cp -r "${vscodeBuildPath}/resources/app/extensions" "${codeServerBuildPath}" cp -r "${vscodeBuildPath}/resources/app/extensions" "${codeServerBuildPath}"
node "${rootPath}/scripts/merge.js" "${vscodeBuildPath}/resources/app/package.json" "${rootPath}/scripts/package.json" "${codeServerBuildPath}/package.json" node "${rootPath}/scripts/merge.js" "${vscodeBuildPath}/resources/app/package.json" "${rootPath}/scripts/package.json" "${codeServerBuildPath}/package.json" "${json}"
node "${rootPath}/scripts/merge.js" "${vscodeBuildPath}/resources/app/product.json" "${rootPath}/scripts/product.json" "${codeServerBuildPath}/product.json" node "${rootPath}/scripts/merge.js" "${vscodeBuildPath}/resources/app/product.json" "${rootPath}/scripts/product.json" "${codeServerBuildPath}/product.json"
cp -r "${vscodeSourcePath}/out" "${codeServerBuildPath}" cp -r "${vscodeSourcePath}/out" "${codeServerBuildPath}"
rm -rf "${codeServerBuildPath}/out/vs/server/node_modules" rm -rf "${codeServerBuildPath}/out/vs/server/node_modules"
@ -187,12 +189,7 @@ function vstar-task() {
} }
function package-task() { function package-task() {
local version="${1}" ; shift local archivePath="${releasePath}/${binaryName}"
log " version: ${version}"
local archiveName="code-server${version}-vsc${vscodeVersion}-${target}-${arch}"
local archivePath="${releasePath}/${archiveName}"
rm -rf "${archivePath}" rm -rf "${archivePath}"
mkdir -p "${archivePath}" mkdir -p "${archivePath}"
@ -203,10 +200,10 @@ function package-task() {
cd "${releasePath}" cd "${releasePath}"
if [[ "${target}" == "linux" ]] ; then if [[ "${target}" == "linux" ]] ; then
tar -czf "${archiveName}.tar.gz" "${archiveName}" tar -czf "${binaryName}.tar.gz" "${binaryName}"
log "Archive: ${archivePath}.tar.gz" log "Archive: ${archivePath}.tar.gz"
else else
zip -r "${archiveName}.zip" "${archiveName}" zip -r "${binaryName}.zip" "${binaryName}"
log "Archive: ${archivePath}.zip" log "Archive: ${archivePath}.zip"
fi fi
} }
@ -226,6 +223,7 @@ function binary-task() {
function main() { function main() {
local task="${1}" ; shift local task="${1}" ; shift
local codeServerVersion="${1}" ; shift
local vscodeVersion="${1}" ; shift local vscodeVersion="${1}" ; shift
local target="${1}" ; shift local target="${1}" ; shift
local arch="${1}" ; shift local arch="${1}" ; shift
@ -262,13 +260,14 @@ function main() {
local vscodeSourcePath="${buildPath}/${vscodeSourceName}" local vscodeSourcePath="${buildPath}/${vscodeSourceName}"
local vscodeBuildPath="${buildPath}/${vscodeBuildName}" local vscodeBuildPath="${buildPath}/${vscodeBuildName}"
local codeServerBuildName="code-server-${vscodeVersion}-${target}-${arch}-built" local codeServerBuildName="code-server${codeServerVersion}-vsc${vscodeVersion}-${target}-${arch}-built"
local codeServerBuildPath="${buildPath}/${codeServerBuildName}" local codeServerBuildPath="${buildPath}/${codeServerBuildName}"
local binaryName="code-server-${vscodeVersion}-${target}-${arch}" local binaryName="code-server${codeServerVersion}-vsc${vscodeVersion}-${target}-${arch}"
log "Running ${task} task" log "Running ${task} task"
log " rootPath: ${rootPath}" log " rootPath: ${rootPath}"
log " outPath: ${outPath}" log " outPath: ${outPath}"
log " codeServerVersion: ${codeServerVersion}"
log " vscodeVersion: ${vscodeVersion}" log " vscodeVersion: ${vscodeVersion}"
log " target: ${target}" log " target: ${target}"
log " arch: ${arch}" log " arch: ${arch}"