diff --git a/.github/workflows/insider-windows.yml b/.github/workflows/insider-windows.yml index 16de47208fe..72fd4c2a2eb 100644 --- a/.github/workflows/insider-windows.yml +++ b/.github/workflows/insider-windows.yml @@ -135,7 +135,7 @@ jobs: if: env.SHOULD_BUILD == 'yes' - name: Upload vscode artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: vscode path: ./vscode.tar.gz @@ -204,7 +204,7 @@ jobs: if: env.SHOULD_BUILD == 'yes' - name: Download vscode artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: vscode if: env.SHOULD_BUILD == 'yes' diff --git a/.github/workflows/stable-windows.yml b/.github/workflows/stable-windows.yml index f8d09e925e8..0ca7ff6a844 100644 --- a/.github/workflows/stable-windows.yml +++ b/.github/workflows/stable-windows.yml @@ -31,19 +31,138 @@ env: VSCODE_QUALITY: stable jobs: + 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: + - uses: actions/checkout@v4 + with: + ref: ${{ env.GITHUB_BRANCH }} + + - name: Switch to relevant branch + env: + PULL_REQUEST_ID: ${{ github.event.inputs.checkout_pr }} + run: ./get_pr.sh + + - name: Clone VSCode repo + run: ./get_repo.sh + + - name: Check PR or cron + env: + 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@v4 + 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 - defaults: - run: - shell: bash - env: - VSCODE_ARCH: ${{ matrix.vscode_arch }} 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 }} @@ -52,46 +171,49 @@ jobs: - 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' - - - name: Clone VSCode repo - run: ./get_repo.sh - - - name: Check PR or cron - env: - GENERATE_ASSETS: ${{ github.event.inputs.generate_assets }} - run: ./check_cron_or_pr.sh + if: env.SHOULD_BUILD == 'yes' - name: Check existing VSCodium tags/releases env: DISABLE_MSI: ${{ vars.DISABLE_STABLE_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@v4 + 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 @@ -140,7 +262,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.STRONGER_GITHUB_TOKEN }} GITHUB_USERNAME: ${{ github.repository_owner }} run: ./update_version.sh - if: env.SHOULD_DEPLOY == 'yes' + if: env.SHOULD_BUILD == 'yes' && env.SHOULD_DEPLOY == 'yes' - name: Upload assets uses: actions/upload-artifact@v4