Fix artifact upload paths to be relative to repo root #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Fast OSS Build | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - copilot/add-github-actions-workflow | |
| permissions: {} | |
| env: | |
| VSCODE_QUALITY: 'oss' | |
| jobs: | |
| linux: | |
| name: Linux x64 | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| env: | |
| VSCODE_ARCH: x64 | |
| steps: | |
| - name: Checkout microsoft/vscode | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| - name: Prepare node_modules cache key | |
| run: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.ts linux x64 $(node -p process.arch) > .build/packagelockhash | |
| - name: Restore node_modules cache | |
| id: cache-node-modules | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: .build/node_modules_cache | |
| key: "node_modules-linux-${{ hashFiles('.build/packagelockhash') }}" | |
| - name: Extract node_modules cache | |
| if: steps.cache-node-modules.outputs.cache-hit == 'true' | |
| run: tar -xzf .build/node_modules_cache/cache.tgz | |
| - 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 libnotify-bin libkrb5-dev | |
| - name: Install dependencies | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| run: | | |
| set -e | |
| for i in {1..5}; do # try 5 times | |
| npm ci && break | |
| if [ $i -eq 5 ]; then | |
| echo "Npm install failed too many times" >&2 | |
| exit 1 | |
| fi | |
| echo "Npm install failed $i, trying again..." | |
| done | |
| env: | |
| ELECTRON_SKIP_BINARY_DOWNLOAD: 1 | |
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create node_modules archive | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| run: | | |
| set -e | |
| node build/azure-pipelines/common/listNodeModules.ts .build/node_modules_list.txt | |
| mkdir -p .build/node_modules_cache | |
| tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt | |
| - name: Prepare built-in extensions cache key | |
| run: | | |
| set -e | |
| mkdir -p .build | |
| node build/azure-pipelines/common/computeBuiltInDepsCacheKey.ts > .build/builtindepshash | |
| - name: Restore built-in extensions cache | |
| id: cache-builtin-extensions | |
| uses: actions/cache/restore@v5 | |
| with: | |
| enableCrossOsArchive: true | |
| path: .build/builtInExtensions | |
| key: "builtin-extensions-${{ hashFiles('.build/builtindepshash') }}" | |
| - name: Download built-in extensions | |
| if: steps.cache-builtin-extensions.outputs.cache-hit != 'true' | |
| run: node build/lib/builtInExtensions.ts | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Transpile client & extensions | |
| run: npm run gulp transpile-client transpile-extensions | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build package | |
| run: npm run gulp vscode-transpile-linux-$VSCODE_ARCH | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create archive | |
| run: | | |
| set -e | |
| mkdir -p .build/linux/archive | |
| tar -czf .build/linux/archive/VSCode-linux-$VSCODE_ARCH.tar.gz -C .. VSCode-linux-$VSCODE_ARCH | |
| - name: Upload archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vscode-linux-${{ env.VSCODE_ARCH }} | |
| path: .build/linux/archive/VSCode-linux-${{ env.VSCODE_ARCH }}.tar.gz | |
| retention-days: 7 | |
| darwin: | |
| name: macOS arm64 | |
| runs-on: macos-latest | |
| timeout-minutes: 60 | |
| env: | |
| VSCODE_ARCH: arm64 | |
| steps: | |
| - name: Checkout microsoft/vscode | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| - name: Prepare node_modules cache key | |
| run: mkdir -p .build && node build/azure-pipelines/common/computeNodeModulesCacheKey.ts darwin arm64 $(node -p process.arch) > .build/packagelockhash | |
| - name: Restore node_modules cache | |
| id: cache-node-modules | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: .build/node_modules_cache | |
| key: "node_modules-darwin-${{ hashFiles('.build/packagelockhash') }}" | |
| - name: Extract node_modules cache | |
| if: steps.cache-node-modules.outputs.cache-hit == 'true' | |
| run: tar -xzf .build/node_modules_cache/cache.tgz | |
| - name: Install dependencies | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| run: | | |
| set -e | |
| for i in {1..5}; do # try 5 times | |
| npm ci && break | |
| if [ $i -eq 5 ]; then | |
| echo "Npm install failed too many times" >&2 | |
| exit 1 | |
| fi | |
| echo "Npm install failed $i, trying again..." | |
| done | |
| env: | |
| ELECTRON_SKIP_BINARY_DOWNLOAD: 1 | |
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create node_modules archive | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| run: | | |
| set -e | |
| node build/azure-pipelines/common/listNodeModules.ts .build/node_modules_list.txt | |
| mkdir -p .build/node_modules_cache | |
| tar -czf .build/node_modules_cache/cache.tgz --files-from .build/node_modules_list.txt | |
| - name: Prepare built-in extensions cache key | |
| run: | | |
| set -e | |
| mkdir -p .build | |
| node build/azure-pipelines/common/computeBuiltInDepsCacheKey.ts > .build/builtindepshash | |
| - name: Restore built-in extensions cache | |
| id: cache-builtin-extensions | |
| uses: actions/cache/restore@v5 | |
| with: | |
| enableCrossOsArchive: true | |
| path: .build/builtInExtensions | |
| key: "builtin-extensions-${{ hashFiles('.build/builtindepshash') }}" | |
| - name: Download built-in extensions | |
| if: steps.cache-builtin-extensions.outputs.cache-hit != 'true' | |
| run: node build/lib/builtInExtensions.ts | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Transpile client & extensions | |
| run: npm run gulp transpile-client transpile-extensions | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build package | |
| run: npm run gulp vscode-transpile-darwin-$VSCODE_ARCH | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create archive | |
| run: | | |
| set -e | |
| mkdir -p .build/darwin/archive | |
| tar -czf .build/darwin/archive/VSCode-darwin-$VSCODE_ARCH.tar.gz -C .. VSCode-darwin-$VSCODE_ARCH | |
| - name: Upload archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vscode-darwin-${{ env.VSCODE_ARCH }} | |
| path: .build/darwin/archive/VSCode-darwin-${{ env.VSCODE_ARCH }}.tar.gz | |
| retention-days: 7 | |
| windows: | |
| name: Windows x64 | |
| runs-on: windows-latest | |
| timeout-minutes: 60 | |
| env: | |
| VSCODE_ARCH: x64 | |
| steps: | |
| - name: Checkout microsoft/vscode | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: .nvmrc | |
| - name: Prepare node_modules cache key | |
| shell: pwsh | |
| run: | | |
| mkdir .build -ea 0 | |
| node build/azure-pipelines/common/computeNodeModulesCacheKey.ts win32 x64 $(node -p process.arch) > .build/packagelockhash | |
| - name: Restore node_modules cache | |
| id: cache-node-modules | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: .build/node_modules_cache | |
| key: "node_modules-windows-${{ hashFiles('.build/packagelockhash') }}" | |
| - name: Extract node_modules cache | |
| if: steps.cache-node-modules.outputs.cache-hit == 'true' | |
| shell: pwsh | |
| run: 7z.exe x .build/node_modules_cache/cache.7z -aoa | |
| - name: Install dependencies | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| shell: pwsh | |
| run: | | |
| . build/azure-pipelines/win32/exec.ps1 | |
| $ErrorActionPreference = "Stop" | |
| for ($i = 1; $i -le 5; $i++) { | |
| try { | |
| exec { npm ci } | |
| break | |
| } | |
| catch { | |
| if ($i -eq 5) { | |
| Write-Error "npm ci failed after 5 attempts" | |
| throw | |
| } | |
| Write-Host "npm ci failed attempt $i, retrying..." | |
| Start-Sleep -Seconds 2 | |
| } | |
| } | |
| env: | |
| npm_config_arch: x64 | |
| npm_config_foreground_scripts: "true" | |
| VSCODE_ARCH: x64 | |
| ELECTRON_SKIP_BINARY_DOWNLOAD: 1 | |
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create node_modules archive | |
| if: steps.cache-node-modules.outputs.cache-hit != 'true' | |
| shell: pwsh | |
| run: | | |
| node build/azure-pipelines/common/listNodeModules.ts .build/node_modules_list.txt | |
| mkdir -Force .build/node_modules_cache | |
| 7z.exe a .build/node_modules_cache/cache.7z -tzip `@.build/node_modules_list.txt -aoa | |
| - name: Prepare built-in extensions cache key | |
| shell: pwsh | |
| run: | | |
| mkdir .build -ea 0 | |
| node build/azure-pipelines/common/computeBuiltInDepsCacheKey.ts > .build/builtindepshash | |
| - name: Restore built-in extensions cache | |
| id: cache-builtin-extensions | |
| uses: actions/cache/restore@v5 | |
| with: | |
| enableCrossOsArchive: true | |
| path: .build/builtInExtensions | |
| key: "builtin-extensions-${{ hashFiles('.build/builtindepshash') }}" | |
| - name: Download built-in extensions | |
| if: steps.cache-builtin-extensions.outputs.cache-hit != 'true' | |
| shell: pwsh | |
| run: node build/lib/builtInExtensions.ts | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Transpile client & extensions | |
| shell: pwsh | |
| run: npm run gulp transpile-client transpile-extensions | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build package | |
| shell: pwsh | |
| run: npm run gulp vscode-transpile-win32-$env:VSCODE_ARCH | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Create archive | |
| shell: pwsh | |
| run: | | |
| New-Item -ItemType Directory -Force -Path .build/win32-$env:VSCODE_ARCH/archive | |
| $archivePath = ".build/win32-$env:VSCODE_ARCH/archive/VSCode-win32-$env:VSCODE_ARCH.zip" | |
| 7z.exe a -tzip $archivePath ../VSCode-win32-$env:VSCODE_ARCH/* "-xr!CodeSignSummary*.md" | |
| - name: Upload archive | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vscode-win32-${{ env.VSCODE_ARCH }} | |
| path: .build/win32-${{ env.VSCODE_ARCH }}/archive/VSCode-win32-${{ env.VSCODE_ARCH }}.zip | |
| retention-days: 7 |