Skip to content

Pre-release dev_test_part34 #291

Pre-release dev_test_part34

Pre-release dev_test_part34 #291

Workflow file for this run

# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: CodeOSS CI
on:
push:
branches:
- dev/*
tags:
- v*.*.*
pull_request:
branches:
- $default-branch
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NODE_VERSION: 16
PYTHON_VERSION: "3.x"
RUST_VERSION: 1.65.0
CARGO_TERM_COLOR: always
CODE_ICO_URL: https://github.com/LcJuves/vscode/raw/94cba4eb314f52fd18b47b72459954fda65302d0/resources/win32/code.ico
VSCODE_STEP_ON_IT: false
CACHE_VERSION: 1691258443
PUBLISH_NAME: dev_test_part34
PUBLISH_TAG_NAME: dev_test_part34
PRE_RELEASE: true
defaults:
run:
shell: bash
jobs:
generate-product-configurations:
name: Generate product configurations
runs-on: windows-2019
outputs:
application-name: ${{ steps.write-job-variables.outputs.application-name }}
tunnel-application-name: ${{ steps.write-job-variables.outputs.tunnel-application-name }}
name-short: ${{ steps.write-job-variables.outputs.name-short }}
vscode-quality: ${{ steps.write-job-variables.outputs.vscode-quality }}
version: ${{ steps.write-job-variables.outputs.version }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Compute product configurations cache key
id: compute-product-configurations-cache-key
run: |
GITHUB_API_URL=https://api.github.com/repos/microsoft/vscode/releases
curl -H "Accept: application/vnd.github.v3+json" -s $GITHUB_API_URL >releases.json
# shellcheck disable=SC2034
REMOTE_VERSION=$(node -p "require('./releases.json')[0]['tag_name']")
VERSION=$(node -p "require('./package.json')['version']")
echo "VERSION=$VERSION" >>"$GITHUB_ENV"
UNIVERSAL_ZIP_VERSION=$VERSION
[ "$GITHUB_REF_NAME" == "dev/real-time-synchronization" ] && UNIVERSAL_ZIP_VERSION=$REMOTE_VERSION
VS_ZIP_URL="https://update.code.visualstudio.com/${UNIVERSAL_ZIP_VERSION}/darwin-universal/stable"
CURL_DO_URL=$(curl -is "$VS_ZIP_URL" | grep Location | awk -F ": " '{print $2}' | tr -d "\r|\n")
echo "CURL_DO_URL=$CURL_DO_URL" >>"$GITHUB_ENV"
echo "key=$(echo "$CURL_DO_URL#$CACHE_VERSION" | sha512sum | awk '{print $1}')" >>"$GITHUB_OUTPUT"
- name: Cache product configurations
id: cache-product-configurations
uses: actions/cache@v3
with:
path: |
product.json
resources/win32/VisualElementsManifest.xml
resources/server/manifest.json
resources/linux/AppImage.yml
key: "${{ runner.os }}${{ steps.compute-product-configurations-cache-key.outputs.key }}"
- name: Do generating ...
if: ${{ steps.cache-product-configurations.outputs.cache-hit != 'true' }}
run: |
VS_ZIP_NAME="VSCode-darwin-universal.zip"
curl -L -s -o $VS_ZIP_NAME "$CURL_DO_URL"
VS_PRODUCT_JSON_PATH="Visual Studio Code.app/Contents/Resources/app/product.json"
unzip $VS_ZIP_NAME "$VS_PRODUCT_JSON_PATH"
cp "$VS_PRODUCT_JSON_PATH" vs-product.json
node .github/generateProductConfigurations.js
- name: Publish product configurations
uses: actions/upload-artifact@v3
with:
name: Product configurations
path: |
product.json
resources/win32/VisualElementsManifest.xml
resources/server/manifest.json
resources/linux/AppImage.yml
- name: Write job variables
id: write-job-variables
run: |
echo "application-name=$(node -p "require('./product.json')['applicationName']")" >>"$GITHUB_OUTPUT"
echo "tunnel-application-name=$(node -p "require('./product.json')['tunnelApplicationName']")" >>"$GITHUB_OUTPUT"
echo "name-short=$(node -p "require('./product.json')['nameShort']")" >>"$GITHUB_OUTPUT"
echo "vscode-quality=$(node -p "require('./product.json')['quality']||'oss'")" >>"$GITHUB_OUTPUT"
echo "version=$VERSION" >>"$GITHUB_OUTPUT"
compile:
name: Compile
runs-on: ubuntu-20.04
needs: generate-product-configurations
env:
VSCODE_ARCH: x64
VSCODE_QUALITY: ${{ needs.generate-product-configurations.outputs.vscode-quality }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Download product configurations
uses: actions/download-artifact@v3
with:
name: Product configurations
- name: Compute node modules cache key
id: compute-node-modules-cache-key
run: echo "key=$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js compile)" >>"$GITHUB_OUTPUT"
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: ".build/node_modules_cache"
key: "${{ runner.os }}GenericNodeModules${{ steps.compute-node-modules-cache-key.outputs.key }}${{ env.CACHE_VERSION }}"
- name: Extract node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit == 'true' }}
run: tar -xJf .build/node_modules_cache/cache.tar.xz
- name: Install build tools
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
sudo apt update -y
sudo apt install -y build-essential pkg-config libx11-dev libx11-xcb-dev libxkbfile-dev libsecret-1-dev libnotify-bin libkrb5-dev
- name: Install dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
for i in {1..5}; do # try 5 times
yarn --frozen-lockfile --check-files && break
if [ "$i" -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
- name: Create node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
mkdir -p .build/node_modules_cache
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
tar -cJf .build/node_modules_cache/cache.tar.xz -T .build/node_modules_list.txt
- name: Install built-in extensions
uses: ./.github/workflows/install-builtin-extensions
with:
cache-version: ${{ env.CACHE_VERSION }}
- name: Compile & Hygiene
timeout-minutes: 90
run: |
yarn npm-run-all -lp \
core-ci-pr extensions-ci-pr hygiene eslint \
valid-layers-check vscode-dts-compile-check tsec-compile-check
- name: Compile test suites
if: ${{ env.VSCODE_STEP_ON_IT == 'false' }}
run: |
yarn --cwd test/smoke compile
yarn --cwd test/integration/browser compile
- name: Compute openssl prebuilt cache key
id: compute-openssl-prebuilt-cache-key
run: echo "key=$(echo "OPENSSL_PREBUILT#$CACHE_VERSION" | sha512sum | awk '{print $1}')" >>"$GITHUB_OUTPUT"
- name: Cache openssl prebuilt
id: cache-openssl-prebuilt
uses: actions/cache@v3
with:
path: openssl
key: "${{ runner.os }}${{ steps.compute-openssl-prebuilt-cache-key.outputs.key }}"
- name: Download & Extract openssl prebuilt
if: ${{ steps.cache-openssl-prebuilt.outputs.cache-hit != 'true' }}
run: |
OPENSSL_PREBUILT_VERSION=0.0.5
npm pack @vscode/openssl-prebuilt@$OPENSSL_PREBUILT_VERSION
mkdir openssl
tar -xvzf vscode-openssl-prebuilt-$OPENSSL_PREBUILT_VERSION.tgz --strip-components=2 -C openssl package/out/
- name: Compress compilation artifact
run: |
tar -cvJ --ignore-failed-read \
--exclude='.build/node_modules_cache' \
--exclude='.build/node_modules_list.txt' \
--exclude='.build/distro' \
-f compilation.tar.xz \
.build out-* test/integration/browser/out test/smoke/out test/automation/out openssl
- name: Publish compilation artifact
uses: actions/upload-artifact@v3
with:
name: Compilation
path: compilation.tar.xz
build-for-linux:
name: Build for Linux
runs-on: ubuntu-20.04
container:
image: vscodehub.azurecr.io/vscode-linux-build-agent:${{ matrix.image-tag }}
options: --user 0:0 --cap-add SYS_ADMIN
needs: [generate-product-configurations, compile]
strategy:
matrix:
include:
- arch: x64
image-tag: bionic-x64
rust-host-triple: x86_64-unknown-linux-gnu
- arch: arm64
image-tag: stretch-arm64
rust-host-triple: aarch64-unknown-linux-gnu
- arch: armhf
image-tag: stretch-armhf
rust-host-triple: armv7-unknown-linux-gnueabihf
env:
VSCODE_ARCH: ${{ matrix.arch }}
APPLICATION_NAME: ${{ needs.generate-product-configurations.outputs.application-name }}
CLI_APP_NAME: ${{ needs.generate-product-configurations.outputs.tunnel-application-name }}
NAME_SHORT: ${{ needs.generate-product-configurations.outputs.name-short }}
VSCODE_QUALITY: ${{ needs.generate-product-configurations.outputs.vscode-quality }}
VERSION: ${{ needs.generate-product-configurations.outputs.version }}
RUST_HOST_TRIPLE: ${{ matrix.rust-host-triple }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- uses: ATiltedTree/setup-rust@v1.0.5
with:
rust-version: ${{ env.RUST_VERSION }}
targets: ${{ matrix.rust-host-triple }}
- name: Download product configurations
uses: actions/download-artifact@v3
with:
name: Product configurations
- name: Initialize job variables
run: |
NPM_ARCH=$VSCODE_ARCH
[ "${NPM_ARCH}" == "armhf" ] && NPM_ARCH=armv7l
echo "NPM_ARCH=$NPM_ARCH" >>"$GITHUB_ENV"
[ "$VSCODE_ARCH" == "x64" ] && echo "DISPLAY=:10" >>"$GITHUB_ENV"
- name: Setup system services
if: ${{ env.VSCODE_ARCH == 'x64' }}
run: |
# Start X server
/etc/init.d/xvfb start
# Start dbus session
DBUS_LAUNCH_RESULT=$(sudo dbus-daemon --config-file=/usr/share/dbus-1/system.conf --print-address)
echo "DBUS_SESSION_BUS_ADDRESS=$DBUS_LAUNCH_RESULT" >>"$GITHUB_ENV"
- name: Download compilation output
uses: actions/download-artifact@v3
with:
name: Compilation
- name: Extract compilation output
run: tar -xJf compilation.tar.xz
- name: Compute node modules cache key
id: compute-node-modules-cache-key
run: echo "key=$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js linux $VSCODE_ARCH)" >>"$GITHUB_OUTPUT"
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: ".build/node_modules_cache"
key: "${{ runner.os }}NodeModules${{ steps.compute-node-modules-cache-key.outputs.key }}${{ env.CACHE_VERSION }}"
- name: Extract node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit == 'true' }}
run: tar -xJf .build/node_modules_cache/cache.tar.xz
- name: Install build dependencies
run: |
node build/npm/setupBuildYarnrc
for i in {1..3}; do
yarn --cwd build --frozen-lockfile --check-files && break
if [ "$i" -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
- name: Install dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
if [ "$NPM_ARCH" = "armv7l" ]; then
# There is no target_arch="armv7l" supported by node_gyp,
# arm versions for compilation are decided based on the CC
# macros.
# Mapping value is based on
# https://github.com/nodejs/node/blob/0903515e126c2697042d6546c6aa4b72e1a4b33e/configure.py#L49-L50
npm_config_arch="arm"
else
npm_config_arch=$NPM_ARCH
fi
export npm_config_arch
if [ -z "$CC" ] || [ -z "$CXX" ]; then
# Download clang based on chromium revision used by vscode
curl -s https://raw.githubusercontent.com/chromium/chromium/98.0.4758.109/tools/clang/scripts/update.py |
python - --output-dir="$PWD"/.build/CR_Clang --host-os=linux
# Download libcxx headers and objects from upstream electron releases
DEBUG=libcxx-fetcher \
VSCODE_LIBCXX_OBJECTS_DIR=$PWD/.build/libcxx-objects \
VSCODE_LIBCXX_HEADERS_DIR=$PWD/.build/libcxx_headers \
VSCODE_LIBCXXABI_HEADERS_DIR=$PWD/.build/libcxxabi_headers \
VSCODE_ARCH="$NPM_ARCH" \
node build/linux/libcxx-fetcher.js
# Set compiler toolchain
# Flags for the client build are based on
# https://source.chromium.org/chromium/chromium/src/+/refs/tags/98.0.4758.109:build/config/arm.gni
# https://source.chromium.org/chromium/chromium/src/+/refs/tags/98.0.4758.109:build/config/compiler/BUILD.gn
# https://source.chromium.org/chromium/chromium/src/+/refs/tags/98.0.4758.109:build/config/c++/BUILD.gn
export CC="$PWD"/.build/CR_Clang/bin/clang
export CXX="$PWD"/.build/CR_Clang/bin/clang++
export CXXFLAGS="-nostdinc++ -D__NO_INLINE__ -isystem$PWD/.build/libcxx_headers -isystem$PWD/.build/libcxx_headers/include -isystem$PWD/.build/libcxxabi_headers/include -fPIC -flto=thin -fsplit-lto-unit"
export LDFLAGS="-stdlib=libc++ -fuse-ld=lld -flto=thin -L$PWD/.build/libcxx-objects -lc++abi -Wl,--lto-O0"
# shellcheck disable=SC2155
export VSCODE_REMOTE_CC="$(which gcc)"
# shellcheck disable=SC2155
export VSCODE_REMOTE_CXX="$(which g++)"
fi
for i in {1..3}; do
yarn --frozen-lockfile --check-files && break
if [ "$i" -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
- name: Create node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
mkdir -p .build/node_modules_cache
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
tar -cJf .build/node_modules_cache/cache.tar.xz --files-from .build/node_modules_list.txt
- name: Install built-in extensions
uses: ./.github/workflows/install-builtin-extensions
with:
cache-version: ${{ env.CACHE_VERSION }}
- name: Build client artifacts
run: |
BUILD_VERSION="$(date +%s)"
echo "::group::Build binary package"
yarn gulp vscode-linux-${VSCODE_ARCH}-min-ci
BUILD=$NAME_SHORT-linux-${VSCODE_ARCH}
(cd .. && cp -r VSCode-linux-${VSCODE_ARCH} $BUILD)
[ -z "${VSCODE_QUALITY}" ] &&
XZ_TARBALL_NAME="${APPLICATION_NAME}-${VSCODE_ARCH}-$BUILD_VERSION.tar.xz" ||
XZ_TARBALL_NAME="${APPLICATION_NAME}-${VSCODE_QUALITY}-${VSCODE_ARCH}-$BUILD_VERSION.tar.xz"
(cd .. && tar -cJf "$XZ_TARBALL_NAME" $BUILD)
mv ../"$XZ_TARBALL_NAME" .
echo "XZ_TARBALL_NAME=$XZ_TARBALL_NAME" >>"$GITHUB_ENV"
[ -z "${VSCODE_QUALITY}" ] &&
GZ_TARBALL_NAME="${APPLICATION_NAME}-${VSCODE_ARCH}-$BUILD_VERSION.tar.gz" ||
GZ_TARBALL_NAME="${APPLICATION_NAME}-${VSCODE_QUALITY}-${VSCODE_ARCH}-$BUILD_VERSION.tar.gz"
(cd .. && tar -zcf "$GZ_TARBALL_NAME" $BUILD)
mv ../"$GZ_TARBALL_NAME" .
echo "GZ_TARBALL_NAME=$GZ_TARBALL_NAME" >>"$GITHUB_ENV"
echo "::endgroup::"
echo "::group::Build rpm package"
yarn gulp vscode-linux-${VSCODE_ARCH}-build-rpm
case $VSCODE_ARCH in
x64) RPM_ARCH="x86_64" ;;
armhf) RPM_ARCH="armv7hl" ;;
arm64) RPM_ARCH="aarch64" ;;
*) RPM_ARCH="$VSCODE_ARCH" ;;
esac
RPM_OUT_DIR=.build/linux/rpm/$RPM_ARCH
RPM_FILENAME="$(cd $RPM_OUT_DIR && (ls ./*.rpm) | awk -F "./" 'NR==1{print $2}')"
mv "$RPM_OUT_DIR/$RPM_FILENAME" .
echo "RPM_FILENAME=$RPM_FILENAME" >>"$GITHUB_ENV"
echo "::endgroup::"
echo "::group::Build deb package"
yarn gulp vscode-linux-${VSCODE_ARCH}-build-deb
case $VSCODE_ARCH in
x64) DEB_ARCH="amd64" ;;
*) DEB_ARCH="$VSCODE_ARCH" ;;
esac
DEB_OUT_DIR=.build/linux/deb/$DEB_ARCH/deb
DEB_FILENAME="$(cd $DEB_OUT_DIR && (ls ./*.deb) | awk -F "./" 'NR==1{print $2}')"
mv "$DEB_OUT_DIR/$DEB_FILENAME" .
echo "DEB_FILENAME=$DEB_FILENAME" >>"$GITHUB_ENV"
echo "::endgroup::"
if [ "$VSCODE_ARCH" == "x64" ]; then
echo "::group::Build AppImage package"
npm install -g @liangchengj/nfserv && (nfserv >nfserv.log 2>&1 &) && (sleep 6 && cat nfserv.log)
DOWNLOAD_URL="http://127.0.0.1:9934/$DEB_FILENAME"
echo "DOWNLOAD_URL >>> $DOWNLOAD_URL" && export DOWNLOAD_URL
GITHUB_API_URL=https://api.github.com/repos/AppImage/pkg2appimage/releases
curl -H "Accept: application/vnd.github.v3+json" -s $GITHUB_API_URL >releases.json
BROWSER_DOWNLOAD_URL=$(node -p "require('./releases.json')[0]['assets'][0]['browser_download_url']")
curl -L -O -s "$BROWSER_DOWNLOAD_URL" && chmod u+x "$PWD/${BROWSER_DOWNLOAD_URL##*/}"
"$PWD/${BROWSER_DOWNLOAD_URL##*/}" "$APPIMAGE_YML_PATH"
APPIMAGE_FILENAME=$NAME_SHORT-linux-${VSCODE_ARCH}-$VERSION.AppImage
mv out/*.AppImage "$APPIMAGE_FILENAME"
echo "APPIMAGE_FILENAME=$APPIMAGE_FILENAME" >>"$GITHUB_ENV"
echo "::endgroup::"
fi
echo "::group::Build snap package"
set -x
yarn gulp vscode-linux-$VSCODE_ARCH-prepare-snap
SNAP_FILENAME="$APPLICATION_NAME-$VSCODE_QUALITY-$VSCODE_ARCH-$BUILD_VERSION.snap"
echo "SNAP_FILENAME=$SNAP_FILENAME" >>"$GITHUB_ENV"
DOCKER_IMAGE_NAME="docker.io/snapcore/snapcraft:stable"
SNAP_BUILD_SH_NAME="snap-build-$BUILD_VERSION.sh"
cat <<'EOF' >"$PWD/$SNAP_BUILD_SH_NAME"
cd /workspace || exit
# Make sure we get latest packages
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y curl apt-transport-https ca-certificates
# Get snapcraft version
snapcraft --version
SNAP_ROOT="$PWD/.build/linux/snap/${VSCODE_ARCH}"
SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME"
case $VSCODE_ARCH in
x64) SNAP_ARCH="amd64" ;;
*) SNAP_ARCH="$VSCODE_ARCH" ;;
esac
(cd "$SNAP_ROOT/$APPLICATION_NAME-$VSCODE_ARCH" &&
sudo --preserve-env snapcraft prime --target-arch "$SNAP_ARCH" &&
snap pack prime --compression=lzo --filename="$SNAP_PATH")
mv "$SNAP_PATH" .
EOF
exec docker run -v "$PWD:/workspace" \
-e APPLICATION_NAME=$APPLICATION_NAME \
-e VSCODE_ARCH=$VSCODE_ARCH \
-e SNAP_FILENAME=$SNAP_FILENAME \
--entrypoint=bash $DOCKER_IMAGE_NAME -ex "/workspace/$SNAP_BUILD_SH_NAME"
echo "::endgroup::"
- name: Build server artifacts
run: |
yarn gulp vscode-reh-linux-${VSCODE_ARCH}-min-ci
SERVER_BUILD_NAME="$APPLICATION_NAME-server-linux-${VSCODE_ARCH}"
SERVER_TARBALL_FILENAME="$SERVER_BUILD_NAME.tar.gz"
(cd .. && cp -r vscode-reh-linux-${VSCODE_ARCH} $SERVER_BUILD_NAME)
(cd .. && tar -zcf $SERVER_TARBALL_FILENAME $SERVER_BUILD_NAME)
mv ../$SERVER_TARBALL_FILENAME .
echo "SERVER_TARBALL_FILENAME=$SERVER_TARBALL_FILENAME" >>"$GITHUB_ENV"
yarn gulp vscode-reh-web-linux-${VSCODE_ARCH}-min-ci
SERVER_WEB_BUILD_NAME="$APPLICATION_NAME-server-linux-${VSCODE_ARCH}-web"
SERVER_WEB_TARBALL_FILENAME="$SERVER_WEB_BUILD_NAME.tar.gz"
(cd .. && cp -r vscode-reh-web-linux-${VSCODE_ARCH} $SERVER_WEB_BUILD_NAME)
(cd .. && tar -zcf $SERVER_WEB_TARBALL_FILENAME $SERVER_WEB_BUILD_NAME)
mv ../$SERVER_WEB_TARBALL_FILENAME .
echo "SERVER_WEB_TARBALL_FILENAME=$SERVER_WEB_TARBALL_FILENAME" >>"$GITHUB_ENV"
- name: Generate SHA512 checksum files
run: |
gensha512() { (sha512sum "$1" | awk '{print $1}' >"$1".sha512); }
[ -f "$XZ_TARBALL_NAME" ] && gensha512 "$XZ_TARBALL_NAME"
[ -f "$GZ_TARBALL_NAME" ] && gensha512 "$GZ_TARBALL_NAME"
[ -f "$SERVER_TARBALL_FILENAME" ] && gensha512 "$SERVER_TARBALL_FILENAME"
[ -f "$SERVER_WEB_TARBALL_FILENAME" ] && gensha512 "$SERVER_WEB_TARBALL_FILENAME"
[ -f "$RPM_FILENAME" ] && gensha512 "$RPM_FILENAME"
[ -f "$DEB_FILENAME" ] && gensha512 "$DEB_FILENAME"
[ -f "$SNAP_FILENAME" ] && gensha512 "$SNAP_FILENAME"
[ -f "$APPIMAGE_FILENAME" ] && gensha512 "$APPIMAGE_FILENAME"
- name: Switch to tag name
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "PUBLISH_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PUBLISH_TAG_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PRE_RELEASE=false" >>"$GITHUB_ENV"
- name: Publish artifacts
uses: softprops/action-gh-release@v1
with:
name: ${{ env.PUBLISH_NAME }}
tag_name: ${{ env.PUBLISH_TAG_NAME }}
prerelease: ${{ env.PRE_RELEASE }}
files: |
${{ env.XZ_TARBALL_NAME }}
${{ env.XZ_TARBALL_NAME }}.sha512
${{ env.GZ_TARBALL_NAME }}
${{ env.GZ_TARBALL_NAME }}.sha512
${{ env.RPM_FILENAME }}
${{ env.RPM_FILENAME }}.sha512
${{ env.DEB_FILENAME }}
${{ env.DEB_FILENAME }}.sha512
${{ env.SNAP_FILENAME }}
${{ env.SNAP_FILENAME }}.sha512
${{ env.APPIMAGE_FILENAME }}
${{ env.APPIMAGE_FILENAME }}.sha512
${{ env.SERVER_TARBALL_FILENAME }}
${{ env.SERVER_TARBALL_FILENAME }}.sha512
${{ env.SERVER_WEB_TARBALL_FILENAME }}
${{ env.SERVER_WEB_TARBALL_FILENAME }}.sha512
build-for-macos:
name: Build for macOS
runs-on: macos-11
needs: [generate-product-configurations, compile]
strategy:
matrix:
include:
- arch: x64
rust-host-triple-arch: x86_64
- arch: arm64
rust-host-triple-arch: aarch64
env:
VSCODE_ARCH: ${{ matrix.arch }}
APPLICATION_NAME: ${{ needs.generate-product-configurations.outputs.application-name }}
CLI_APP_NAME: ${{ needs.generate-product-configurations.outputs.tunnel-application-name }}
NAME_SHORT: ${{ needs.generate-product-configurations.outputs.name-short }}
RUST_HOST_TRIPLE: ${{ matrix.rust-host-triple-arch }}-apple-darwin
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- uses: ATiltedTree/setup-rust@v1.0.5
with:
rust-version: ${{ env.RUST_VERSION }}
targets: ${{ env.RUST_HOST_TRIPLE }}
- name: Download product configurations
uses: actions/download-artifact@v3
with:
name: Product configurations
- name: Download compilation output
uses: actions/download-artifact@v3
with:
name: Compilation
- name: Extract compilation output
run: tar -xJf compilation.tar.xz
- name: Compute node modules cache key
id: compute-node-modules-cache-key
run: echo "key=$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js darwin $VSCODE_ARCH)" >>"$GITHUB_OUTPUT"
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: ".build/node_modules_cache"
key: "${{ runner.os }}NodeModules${{ steps.compute-node-modules-cache-key.outputs.key }}${{ env.CACHE_VERSION }}"
- name: Extract node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit == 'true' }}
run: tar -xJf .build/node_modules_cache/cache.tar.xz
- name: Install dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
npm install -g node-gyp@latest
npm_config_arch=$VSCODE_ARCH
export npm_config_arch
npm_config_node_gyp=$(which node-gyp)
export npm_config_node_gyp
for i in {1..5}; do # try 5 times
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
- name: Create node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
mkdir -p .build/node_modules_cache
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
tar -cJf .build/node_modules_cache/cache.tar.xz --files-from .build/node_modules_list.txt
- name: Install built-in extensions
uses: ./.github/workflows/install-builtin-extensions
with:
cache-version: ${{ env.CACHE_VERSION }}
- name: Build client artifacts
run: |
yarn gulp vscode-darwin-${VSCODE_ARCH}-min-ci
BUILD=$NAME_SHORT-darwin-${VSCODE_ARCH}
(cd .. && cp -r VSCode-darwin-${VSCODE_ARCH} $BUILD)
export OPENSSL_LIB_DIR="$PWD/openssl/${VSCODE_ARCH}-osx/lib"
export OPENSSL_INCLUDE_DIR="$PWD/openssl/${VSCODE_ARCH}-osx/include"
(cd cli && cargo build --release --target "$RUST_HOST_TRIPLE" --bin=code)
APP_NAME="$(cd ../$BUILD && ls . | head -n 1)"
mv cli/target/"$RUST_HOST_TRIPLE"/release/code ../$BUILD/"$APP_NAME"/Contents/Resources/app/bin/"$CLI_APP_NAME"
XZ_TARBALL_NAME=$BUILD.tar.xz
(cd ../$BUILD && tar -cJf ../$XZ_TARBALL_NAME ./*.app)
mv ../$XZ_TARBALL_NAME .
echo "XZ_TARBALL_NAME=$XZ_TARBALL_NAME" >>"$GITHUB_ENV"
ZIP_NAME=$BUILD.zip
(cd ../$BUILD && zip -Xry -q ../$ZIP_NAME ./*.app)
mv ../$ZIP_NAME .
echo "ZIP_NAME=$ZIP_NAME" >>"$GITHUB_ENV"
- name: Build server artifacts
run: |
yarn gulp vscode-reh-darwin-$VSCODE_ARCH-min-ci
SERVER_BUILD_NAME="$APPLICATION_NAME-server-darwin-$VSCODE_ARCH"
SERVER_ZIP_NAME="$SERVER_BUILD_NAME.zip"
(cd .. && cp -r vscode-reh-darwin-$VSCODE_ARCH $SERVER_BUILD_NAME)
(cd .. && zip -Xry -q $SERVER_ZIP_NAME $SERVER_BUILD_NAME)
mv ../$SERVER_ZIP_NAME .
echo "SERVER_ZIP_NAME=$SERVER_ZIP_NAME" >>"$GITHUB_ENV"
yarn gulp vscode-reh-web-darwin-$VSCODE_ARCH-min-ci
SERVER_WEB_BUILD_NAME="$APPLICATION_NAME-server-darwin-$VSCODE_ARCH-web"
SERVER_WEB_ZIP_NAME="$SERVER_WEB_BUILD_NAME.zip"
(cd .. && cp -r vscode-reh-web-darwin-$VSCODE_ARCH $SERVER_WEB_BUILD_NAME)
(cd .. && zip -Xry -q $SERVER_WEB_ZIP_NAME $SERVER_WEB_BUILD_NAME)
mv ../$SERVER_WEB_ZIP_NAME .
echo "SERVER_WEB_ZIP_NAME=$SERVER_WEB_ZIP_NAME" >>"$GITHUB_ENV"
- name: Generate SHA512 checksum files
run: |
gensha512() { (shasum -a 512 "$1" | awk '{print $1}' >"$1".sha512); }
[ -f "$XZ_TARBALL_NAME" ] && gensha512 "$XZ_TARBALL_NAME"
[ -f "$ZIP_NAME" ] && gensha512 "$ZIP_NAME"
[ -f "$SERVER_ZIP_NAME" ] && gensha512 "$SERVER_ZIP_NAME"
[ -f "$SERVER_WEB_ZIP_NAME" ] && gensha512 "$SERVER_WEB_ZIP_NAME"
- name: Switch to tag name
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "PUBLISH_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PUBLISH_TAG_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PRE_RELEASE=false" >>"$GITHUB_ENV"
- name: Publish artifacts
uses: softprops/action-gh-release@v1
with:
name: ${{ env.PUBLISH_NAME }}
tag_name: ${{ env.PUBLISH_TAG_NAME }}
prerelease: ${{ env.PRE_RELEASE }}
files: |
${{ env.XZ_TARBALL_NAME }}
${{ env.XZ_TARBALL_NAME }}.sha512
${{ env.ZIP_NAME }}
${{ env.ZIP_NAME }}.sha512
${{ env.SERVER_ZIP_NAME }}
${{ env.SERVER_ZIP_NAME }}.sha512
${{ env.SERVER_WEB_ZIP_NAME }}
${{ env.SERVER_WEB_ZIP_NAME }}.sha512
build-universal-application:
name: Build universal application
runs-on: macos-11
needs: [generate-product-configurations, build-for-macos]
env:
VSCODE_ARCH: universal
NAME_SHORT: ${{ needs.generate-product-configurations.outputs.name-short }}
GITHUB_REPOSITORY: ${{ github.repository }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Download product configurations
uses: actions/download-artifact@v3
with:
name: Product configurations
- name: Compute node modules cache key
id: compute-node-modules-cache-key
run: echo "key=$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js darwin x64)" >>"$GITHUB_OUTPUT"
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: ".build/node_modules_cache"
key: "${{ runner.os }}NodeModules${{ steps.compute-node-modules-cache-key.outputs.key }}${{ env.CACHE_VERSION }}"
- name: Extract node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit == 'true' }}
run: tar -xJf .build/node_modules_cache/cache.tar.xz
- name: Create Universal App
run: |
AGENT_BUILDDIRECTORY="$(cd .. && pwd)"
DOWNLOAD_URL_PREFIX="https://github.com/$GITHUB_REPOSITORY/releases/download/$PUBLISH_TAG_NAME"
curl -L -O -s "$DOWNLOAD_URL_PREFIX/$NAME_SHORT-darwin-arm64.tar.xz"
curl -L -O -s "$DOWNLOAD_URL_PREFIX/$NAME_SHORT-darwin-x64.tar.xz"
tar -xJf "$NAME_SHORT-darwin-arm64.tar.xz"
mkdir ../VSCode-darwin-arm64 && mv ./*.app ../VSCode-darwin-arm64/
tar -xJf "$NAME_SHORT-darwin-x64.tar.xz"
mkdir ../VSCode-darwin-x64 && mv ./*.app ../VSCode-darwin-x64/
DEBUG=* node build/darwin/create-universal-app.js "$AGENT_BUILDDIRECTORY"
BUILD=$NAME_SHORT-darwin-${VSCODE_ARCH}
(cd .. && cp -r VSCode-darwin-${VSCODE_ARCH} $BUILD)
XZ_TARBALL_NAME=$BUILD.tar.xz
(cd ../$BUILD && tar -cJf ../$XZ_TARBALL_NAME ./*.app)
mv ../$XZ_TARBALL_NAME .
echo "XZ_TARBALL_NAME=$XZ_TARBALL_NAME" >>"$GITHUB_ENV"
ZIP_NAME=$BUILD.zip
(cd ../$BUILD && zip -r -X -y -q ../$ZIP_NAME ./*.app)
mv ../$ZIP_NAME .
echo "ZIP_NAME=$ZIP_NAME" >>"$GITHUB_ENV"
- name: Generate SHA512 checksum files
run: |
gensha512() { (shasum -a 512 "$1" | awk '{print $1}' >"$1".sha512); }
[ -f "$XZ_TARBALL_NAME" ] && gensha512 "$XZ_TARBALL_NAME"
[ -f "$ZIP_NAME" ] && gensha512 "$ZIP_NAME"
- name: Switch to tag name
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "PUBLISH_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PUBLISH_TAG_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PRE_RELEASE=false" >>"$GITHUB_ENV"
- name: Publish artifacts
uses: softprops/action-gh-release@v1
with:
name: ${{ env.PUBLISH_NAME }}
tag_name: ${{ env.PUBLISH_TAG_NAME }}
prerelease: ${{ env.PRE_RELEASE }}
files: |
${{ env.XZ_TARBALL_NAME }}
${{ env.XZ_TARBALL_NAME }}.sha512
${{ env.ZIP_NAME }}
${{ env.ZIP_NAME }}.sha512
build-for-windows:
name: Build for Windows
runs-on: windows-2019
needs: [generate-product-configurations, compile]
strategy:
matrix:
include:
- arch: x64
rust-host-triple-arch: x86_64
- arch: arm64
rust-host-triple-arch: aarch64
- arch: ia32
rust-host-triple-arch: i686
env:
VSCODE_ARCH: ${{ matrix.arch }}
APPLICATION_NAME: ${{ needs.generate-product-configurations.outputs.application-name }}
CLI_APP_NAME: ${{ needs.generate-product-configurations.outputs.tunnel-application-name }}
NAME_SHORT: ${{ needs.generate-product-configurations.outputs.name-short }}
VERSION: ${{ needs.generate-product-configurations.outputs.version }}
RUST_HOST_TRIPLE: ${{ matrix.rust-host-triple-arch }}-pc-windows-msvc
RUSTFLAGS: "-C target-feature=+crt-static"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- uses: ATiltedTree/setup-rust@v1.0.5
with:
rust-version: ${{ env.RUST_VERSION }}
targets: ${{ env.RUST_HOST_TRIPLE }}
- name: Download product configurations
uses: actions/download-artifact@v3
with:
name: Product configurations
- name: Download compilation output
uses: actions/download-artifact@v3
with:
name: Compilation
- name: Extract compilation output
run: tar -xJf compilation.tar.xz
- name: Compute node modules cache key
id: compute-node-modules-cache-key
run: echo "key=$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js win32 $VSCODE_ARCH)" >>"$GITHUB_OUTPUT"
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: ".build/node_modules_cache"
key: "${{ runner.os }}NodeModules${{ steps.compute-node-modules-cache-key.outputs.key }}${{ env.CACHE_VERSION }}"
- name: Extract node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit == 'true' }}
run: tar -xJf .build/node_modules_cache/cache.tar.xz
- name: Install dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
npm_config_arch=${VSCODE_ARCH}
export npm_config_arch
CHILD_CONCURRENCY="1"
export CHILD_CONCURRENCY
for i in {1..3}; do
yarn --frozen-lockfile --check-files && break
if [ "$i" -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
- name: Create node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
mkdir -p .build/node_modules_cache
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
tar -cJf .build/node_modules_cache/cache.tar.xz --files-from .build/node_modules_list.txt
- name: Install built-in extensions
uses: ./.github/workflows/install-builtin-extensions
with:
cache-version: ${{ env.CACHE_VERSION }}
- name: Build client artifacts
run: |
echo "::group::Build binary package"
yarn gulp vscode-win32-${VSCODE_ARCH}-min-ci
OPENSSL_PREBUILT_ARCH=$([ "$VSCODE_ARCH" == "ia32" ] && echo "x86" || echo "$VSCODE_ARCH")
export OPENSSL_LIB_DIR="$PWD/openssl/${OPENSSL_PREBUILT_ARCH}-windows-static-md/lib"
export OPENSSL_INCLUDE_DIR="$PWD/openssl/${OPENSSL_PREBUILT_ARCH}-windows-static-md/include"
(cd cli && cargo build --release --target "$RUST_HOST_TRIPLE" --bin=code)
DEFAULT_BUILD=VSCode-win32-${VSCODE_ARCH}
mv cli/target/"$RUST_HOST_TRIPLE"/release/code.exe ../$DEFAULT_BUILD/bin/"$CLI_APP_NAME.exe"
BUILD=$NAME_SHORT-win32-${VSCODE_ARCH}
(cd .. && cp -r $DEFAULT_BUILD $BUILD)
XZ_TARBALL_NAME=$BUILD-$VERSION.tar.xz
(cd .. && tar -cJf $XZ_TARBALL_NAME $BUILD)
mv ../$XZ_TARBALL_NAME .
echo "XZ_TARBALL_NAME=$XZ_TARBALL_NAME" >>"$GITHUB_ENV"
ZIP_NAME=$BUILD-$VERSION.zip
(cd .. && 7z a -tzip $ZIP_NAME -x!CodeSignSummary*.md $BUILD -r)
mv ../$ZIP_NAME .
echo "ZIP_NAME=$ZIP_NAME" >>"$GITHUB_ENV"
echo "::endgroup::"
yarn gulp vscode-win32-${VSCODE_ARCH}-inno-updater
curl -L -s -o resources/win32/code.ico $CODE_ICO_URL
echo "::group::Build system setup installer"
yarn gulp vscode-win32-${VSCODE_ARCH}-system-setup
SYSTEM_SETUP_NAME=${NAME_SHORT}Setup-${VSCODE_ARCH}-$VERSION.exe
mv .build/win32-${VSCODE_ARCH}/system-setup/VSCodeSetup.exe $SYSTEM_SETUP_NAME
echo "SYSTEM_SETUP_NAME=$SYSTEM_SETUP_NAME" >>"$GITHUB_ENV"
echo "::endgroup::"
echo "::group::Build user setup installer"
yarn gulp vscode-win32-${VSCODE_ARCH}-user-setup
USER_SETUP_NAME=${NAME_SHORT}UserSetup-${VSCODE_ARCH}-$VERSION.exe
mv .build/win32-${VSCODE_ARCH}/user-setup/VSCodeSetup.exe $USER_SETUP_NAME
echo "USER_SETUP_NAME=$USER_SETUP_NAME" >>"$GITHUB_ENV"
echo "::endgroup::"
- name: Build server artifacts
if: ${{ env.VSCODE_ARCH != 'arm64' }}
run: |
yarn gulp vscode-reh-win32-${VSCODE_ARCH}-min-ci
SERVER_BUILD_NAME="$APPLICATION_NAME-server-win32-${VSCODE_ARCH}"
SERVER_ZIP_NAME="$SERVER_BUILD_NAME.zip"
(cd .. && cp -r vscode-reh-win32-${VSCODE_ARCH} $SERVER_BUILD_NAME)
(cd .. && 7z a -tzip $SERVER_ZIP_NAME $SERVER_BUILD_NAME -r)
mv ../$SERVER_ZIP_NAME .
echo "SERVER_ZIP_NAME=$SERVER_ZIP_NAME" >>"$GITHUB_ENV"
yarn gulp vscode-reh-web-win32-${VSCODE_ARCH}-min-ci
SERVER_WEB_BUILD_NAME="$APPLICATION_NAME-server-win32-${VSCODE_ARCH}-web"
SERVER_WEB_ZIP_NAME="$SERVER_WEB_BUILD_NAME.zip"
(cd .. && cp -r vscode-reh-web-win32-${VSCODE_ARCH} $SERVER_WEB_BUILD_NAME)
(cd .. && 7z a -tzip $SERVER_WEB_ZIP_NAME $SERVER_WEB_BUILD_NAME -r)
mv ../$SERVER_WEB_ZIP_NAME .
echo "SERVER_WEB_ZIP_NAME=$SERVER_WEB_ZIP_NAME" >>"$GITHUB_ENV"
- name: Generate SHA512 checksum files
run: |
gensha512() { (sha512sum "$1" | awk '{print $1}' >"$1".sha512); }
[ -f "$XZ_TARBALL_NAME" ] && gensha512 "$XZ_TARBALL_NAME"
[ -f "$ZIP_NAME" ] && gensha512 "$ZIP_NAME"
[ -f "$SYSTEM_SETUP_NAME" ] && gensha512 "$SYSTEM_SETUP_NAME"
[ -f "$USER_SETUP_NAME" ] && gensha512 "$USER_SETUP_NAME"
[ -f "$SERVER_ZIP_NAME" ] && gensha512 "$SERVER_ZIP_NAME"
[ -f "$SERVER_WEB_ZIP_NAME" ] && gensha512 "$SERVER_WEB_ZIP_NAME"
- name: Switch to tag name
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "PUBLISH_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PUBLISH_TAG_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PRE_RELEASE=false" >>"$GITHUB_ENV"
- name: Publish artifacts
uses: softprops/action-gh-release@v1
with:
name: ${{ env.PUBLISH_NAME }}
tag_name: ${{ env.PUBLISH_TAG_NAME }}
prerelease: ${{ env.PRE_RELEASE }}
files: |
${{ env.XZ_TARBALL_NAME }}
${{ env.XZ_TARBALL_NAME }}.sha512
${{ env.ZIP_NAME }}
${{ env.ZIP_NAME }}.sha512
${{ env.SYSTEM_SETUP_NAME }}
${{ env.SYSTEM_SETUP_NAME }}.sha512
${{ env.USER_SETUP_NAME }}
${{ env.USER_SETUP_NAME }}.sha512
${{ env.SERVER_ZIP_NAME }}
${{ env.SERVER_ZIP_NAME }}.sha512
${{ env.SERVER_WEB_ZIP_NAME }}
${{ env.SERVER_WEB_ZIP_NAME }}.sha512
build-for-web:
name: Build for Web
runs-on: ubuntu-20.04
needs: [generate-product-configurations, compile]
env:
VSCODE_ARCH: x64
APPLICATION_NAME: ${{ needs.generate-product-configurations.outputs.application-name }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: Download product configurations
uses: actions/download-artifact@v3
with:
name: Product configurations
- name: Download compilation output
uses: actions/download-artifact@v3
with:
name: Compilation
- name: Extract compilation output
run: tar -xJf compilation.tar.xz
- name: Compute node modules cache key
id: compute-node-modules-cache-key
run: echo "key=$(node build/azure-pipelines/common/computeNodeModulesCacheKey.js web)" >>"$GITHUB_OUTPUT"
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v3
with:
path: ".build/node_modules_cache"
key: "WebNodeModules${{ steps.compute-node-modules-cache-key.outputs.key }}${{ env.CACHE_VERSION }}"
- name: Install build dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
sudo apt-get update -y
sudo apt-get install -y libkrb5-dev
- name: Install dependencies
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
for i in {1..5}; do # try 5 times
yarn --frozen-lockfile --check-files && break
if [ $i -eq 3 ]; then
echo "Yarn failed too many times" >&2
exit 1
fi
echo "Yarn failed $i, trying again..."
done
env:
ELECTRON_SKIP_BINARY_DOWNLOAD: 1
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
- name: Create node modules archive
if: ${{ steps.cache-node-modules.outputs.cache-hit != 'true' }}
run: |
mkdir -p .build/node_modules_cache
node build/azure-pipelines/common/listNodeModules.js .build/node_modules_list.txt
tar -cJf .build/node_modules_cache/cache.tar.xz --files-from .build/node_modules_list.txt
- name: Build artifact
run: |
yarn gulp vscode-web-min-ci
WEB_BUILD_NAME="$APPLICATION_NAME-web"
WEB_TARBALL_FILENAME="$APPLICATION_NAME-web.tar.gz"
(cd .. && cp -r vscode-web $WEB_BUILD_NAME)
(cd .. && tar --owner=0 --group=0 -czf $WEB_TARBALL_FILENAME $WEB_BUILD_NAME)
mv ../$WEB_TARBALL_FILENAME .
echo "WEB_TARBALL_FILENAME=$WEB_TARBALL_FILENAME" >>"$GITHUB_ENV"
- name: Generate SHA512 checksum file
run: |
gensha512() { (sha512sum "$1" | awk '{print $1}' >"$1".sha512); }
[ -f "$WEB_TARBALL_FILENAME" ] && gensha512 "$WEB_TARBALL_FILENAME"
- name: Switch to tag name
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "PUBLISH_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PUBLISH_TAG_NAME=${{ github.ref }}" >>"$GITHUB_ENV"
echo "PRE_RELEASE=false" >>"$GITHUB_ENV"
- name: Publish artifacts
uses: softprops/action-gh-release@v1
with:
name: ${{ env.PUBLISH_NAME }}
tag_name: ${{ env.PUBLISH_TAG_NAME }}
prerelease: ${{ env.PRE_RELEASE }}
files: |
${{ env.WEB_TARBALL_FILENAME }}
${{ env.WEB_TARBALL_FILENAME }}.sha512