diff --git a/.github/workflows/insider-linux.yml b/.github/workflows/insider-linux.yml index 18b9cee..8229111 100644 --- a/.github/workflows/insider-linux.yml +++ b/.github/workflows/insider-linux.yml @@ -101,7 +101,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v4 with: - node-version: '20.17' + node-version: '20.18' if: env.SHOULD_BUILD == 'yes' - name: Install Yarn @@ -191,6 +191,7 @@ jobs: env: PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }} run: ./get_pr.sh + if: env.SHOULD_BUILD == 'yes' - name: Install GH run: ./install_gh.sh @@ -308,7 +309,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v4 with: - node-version: '20.17' + node-version: '20.18' if: env.DISABLED != 'yes' - name: Setup Python 3 diff --git a/.github/workflows/insider-windows.yml b/.github/workflows/insider-windows.yml index f32b842..16de472 100644 --- a/.github/workflows/insider-windows.yml +++ b/.github/workflows/insider-windows.yml @@ -32,21 +32,13 @@ env: VSCODE_QUALITY: insider jobs: - build: - runs-on: windows-2019 - defaults: - run: - shell: bash - env: - VSCODE_ARCH: ${{ matrix.vscode_arch }} - strategy: - fail-fast: false - matrix: - vscode_arch: - - x64 - - arm64 + check: + runs-on: ubuntu-latest outputs: + MS_COMMIT: ${{ env.MS_COMMIT }} + MS_TAG: ${{ env.MS_TAG }} RELEASE_VERSION: ${{ env.RELEASE_VERSION }} + SHOULD_BUILD: ${{ env.SHOULD_BUILD }} SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }} steps: @@ -59,19 +51,6 @@ jobs: PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }} run: ./get_pr.sh - - name: Setup Node.js environment - uses: actions/setup-node@v4 - with: - node-version: '20.18' - - - name: Install Yarn - run: npm install -g yarn - - - name: Setup Python 3 - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - name: Clone VSCode repo run: ./get_repo.sh @@ -80,19 +59,162 @@ jobs: GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }} run: ./check_cron_or_pr.sh + - name: Check existing VSCodium tags/releases + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CHECK_ALL: 'yes' + run: ./check_tags.sh + + compile: + needs: + - check + runs-on: ubuntu-20.04 + env: + MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} + MS_TAG: ${{ needs.check.outputs.MS_TAG }} + RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} + SHOULD_BUILD: ${{ (needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true') && 'yes' || 'no' }} + VSCODE_ARCH: 'x64' + outputs: + BUILD_SOURCEVERSION: ${{ env.BUILD_SOURCEVERSION }} + + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ env.GITHUB_BRANCH }} + if: env.SHOULD_BUILD == 'yes' + + - name: Switch to relevant branch + env: + PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }} + run: ./get_pr.sh + + - name: Setup GCC + uses: egor-tensin/setup-gcc@v1 + with: + version: 10 + platform: x64 + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: '20.18' + if: env.SHOULD_BUILD == 'yes' + + - name: Install Yarn + run: npm install -g yarn + if: env.SHOULD_BUILD == 'yes' + + - name: Setup Python 3 + uses: actions/setup-python@v5 + with: + python-version: '3.11' + if: env.SHOULD_BUILD == 'yes' + + - name: Install libkrb5-dev + run: sudo apt-get update -y && sudo apt-get install -y libkrb5-dev + if: env.SHOULD_BUILD == 'yes' + + - name: Clone VSCode repo + run: ./get_repo.sh + if: env.SHOULD_BUILD == 'yes' + + - name: Build + env: + SHOULD_BUILD_REH: 'no' + SHOULD_BUILD_REH_WEB: 'no' + run: ./build.sh + if: env.SHOULD_BUILD == 'yes' + + - name: Compress vscode artifact + run: | + find vscode -type f -not -path "*/node_modules/*" -not -path "vscode/.build/node/*" -not -path "vscode/.git/*" > vscode.txt + echo "vscode/.build/extensions/node_modules" >> vscode.txt + echo "vscode/.git" >> vscode.txt + tar -czf vscode.tar.gz -T vscode.txt + if: env.SHOULD_BUILD == 'yes' + + - name: Upload vscode artifact + uses: actions/upload-artifact@v3 + with: + name: vscode + path: ./vscode.tar.gz + retention-days: ${{ needs.check.outputs.SHOULD_DEPLOY == 'yes' && 30 || 1 }} + if: env.SHOULD_BUILD == 'yes' + + build: + needs: + - check + - compile + runs-on: windows-2019 + strategy: + fail-fast: false + matrix: + vscode_arch: + - x64 + - arm64 + defaults: + run: + shell: bash + env: + BUILD_SOURCEVERSION: ${{ needs.compile.outputs.BUILD_SOURCEVERSION }} + MS_COMMIT: ${{ needs.check.outputs.MS_COMMIT }} + MS_TAG: ${{ needs.check.outputs.MS_TAG }} + RELEASE_VERSION: ${{ needs.check.outputs.RELEASE_VERSION }} + SHOULD_BUILD: ${{ (needs.check.outputs.SHOULD_BUILD == 'yes' || github.event.inputs.generate_assets == 'true') && 'yes' || 'no' }} + SHOULD_DEPLOY: ${{ needs.check.outputs.SHOULD_DEPLOY }} + VSCODE_ARCH: ${{ matrix.vscode_arch }} + outputs: + RELEASE_VERSION: ${{ env.RELEASE_VERSION }} + SHOULD_DEPLOY: ${{ env.SHOULD_DEPLOY }} + + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ env.GITHUB_BRANCH }} + if: env.SHOULD_BUILD == 'yes' + + - name: Switch to relevant branch + env: + PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }} + run: ./get_pr.sh + if: env.SHOULD_BUILD == 'yes' + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: '20.18' + if: env.SHOULD_BUILD == 'yes' + + - name: Install Yarn + run: npm install -g yarn + if: env.SHOULD_BUILD == 'yes' + + - name: Setup Python 3 + uses: actions/setup-python@v5 + with: + python-version: '3.11' + if: env.SHOULD_BUILD == 'yes' + - name: Check existing VSCodium tags/releases env: DISABLE_MSI: ${{ vars.DISABLE_INSIDER_MSI }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: ./check_tags.sh - if: env.SHOULD_DEPLOY == 'yes' || github.event.inputs.generate_assets == 'true' + if: env.SHOULD_BUILD == 'yes' + + - name: Download vscode artifact + uses: actions/download-artifact@v3 + with: + name: vscode + if: env.SHOULD_BUILD == 'yes' - name: Build env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} npm_config_arch: ${{ matrix.vscode_arch }} npm_config_target_arch: ${{ matrix.vscode_arch }} - run: ./build.sh + run: ./package_windows.sh if: env.SHOULD_BUILD == 'yes' - name: Prepare assets diff --git a/.github/workflows/stable-linux.yml b/.github/workflows/stable-linux.yml index 4ea18d8..65d6fe7 100644 --- a/.github/workflows/stable-linux.yml +++ b/.github/workflows/stable-linux.yml @@ -100,7 +100,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v4 with: - node-version: '20.17' + node-version: '20.18' if: env.SHOULD_BUILD == 'yes' - name: Install Yarn @@ -307,7 +307,7 @@ jobs: - name: Setup Node.js environment uses: actions/setup-node@v4 with: - node-version: '20.17' + node-version: '20.18' if: env.DISABLED != 'yes' - name: Setup Python 3 diff --git a/build.sh b/build.sh index 919a6a5..07d7752 100755 --- a/build.sh +++ b/build.sh @@ -29,13 +29,16 @@ if [[ "${SHOULD_BUILD}" == "yes" ]]; then VSCODE_PLATFORM="darwin" elif [[ "${OS_NAME}" == "windows" ]]; then - . ../build/windows/rtf/make.sh + # in CI, packaging will be done by a different job + if [[ "${CI_BUILD}" == "no" ]]; then + . ../build/windows/rtf/make.sh - yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci" + yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci" - if [[ "${VSCODE_ARCH}" != "ia32" && "${VSCODE_ARCH}" != "x64" ]]; then - SHOULD_BUILD_REH="no" - SHOULD_BUILD_REH_WEB="no" + if [[ "${VSCODE_ARCH}" != "x64" ]]; then + SHOULD_BUILD_REH="no" + SHOULD_BUILD_REH_WEB="no" + fi fi VSCODE_PLATFORM="win32" diff --git a/package_windows.sh b/package_windows.sh new file mode 100755 index 0000000..0a322b6 --- /dev/null +++ b/package_windows.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# shellcheck disable=SC1091 + +set -ex + +if [[ "${CI_BUILD}" == "no" ]]; then + exit 1 +fi + +tar -xzf ./vscode.tar.gz + +cd vscode || { echo "'vscode' dir not found"; exit 1; } + +for i in {1..5}; do # try 5 times + npm ci && break + if [[ $i -eq 3 ]]; then + echo "Npm install failed too many times" >&2 + exit 1 + fi + echo "Npm install failed $i, trying again..." +done + +node build/azure-pipelines/distro/mixin-npm + +. ../build/windows/rtf/make.sh + +yarn gulp "vscode-win32-${VSCODE_ARCH}-min-ci" + +cd ..