Fix cross-compiled Linux releases #276
Workflow file for this run
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: Draft release | ||
|
Check failure on line 1 in .github/workflows/release.yaml
|
||
| on: | ||
| workflow_dispatch: | ||
| inputs: | ||
| version: | ||
| type: string | ||
| required: true | ||
| permissions: | ||
| contents: write # For creating releases. | ||
| discussions: write # For creating a discussion. | ||
| # Cancel in-progress runs for pull requests when developers push | ||
| # additional changes | ||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||
| jobs: | ||
| package-linux: | ||
| name: ${{ format('linux-{0}', matrix.vscode_arch) }} | ||
| runs-on: ubuntu-22.04 | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - npm_arch: x64 | ||
| vscode_arch: x64 | ||
| package_arch: amd64 | ||
| - npm_arch: arm64 | ||
| package_arch: arm64 | ||
| vscode_arch: arm64 | ||
| - npm_arch: arm | ||
| package_arch: armv7l | ||
| vscode_arch: armhf | ||
| env: | ||
| ELECTRON_SKIP_BINARY_DOWNLOAD: 1 | ||
| PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | ||
| # For setting cross-compilation flags via setup-env.sh. | ||
| VSCODE_ARCH: ${{ matrix.vscode_arch }} | ||
| # Gulp target. | ||
| VSCODE_TARGET: ${{ format('linux-{0}', matrix.vscode_arch) }} | ||
| npm_config_arch: ${{ matrix.npm_arch }} | ||
| # Sets the release archive name. | ||
| ARCH: ${{ matrix.package_arch }} | ||
| # Not building from source results in an x86_64 argon2, as if | ||
| # npm_config_arch is being ignored. | ||
| npm_config_build_from_source: true | ||
| TAG: ${{ inputs.version || github.ref_name }} | ||
| steps: | ||
| - run: sudo apt update && sudo apt install -y libkrb5-dev | ||
| - uses: awalsh128/cache-apt-pkgs-action@2c09a5e66da6c8016428a2172bd76e5e4f14bb17 # latest | ||
| with: | ||
| packages: quilt | ||
| version: 1.0 | ||
| - name: Install nfpm | ||
| run: | | ||
| mkdir -p ~/.local/bin | ||
| curl -sSfL https://github.com/goreleaser/nfpm/releases/download/v2.3.1/nfpm_2.3.1_`uname -s`_`uname -m`.tar.gz | tar -C ~/.local/bin -zxv nfpm | ||
| echo "$HOME/.local/bin" >> $GITHUB_PATH | ||
| - name: Set version to tag without leading v | ||
| run: | | ||
| echo "VERSION=${TAG#v}" >> $GITHUB_ENV | ||
| - uses: actions/checkout@v6 | ||
| with: | ||
| submodules: true | ||
| - run: quilt push -a | ||
| - uses: actions/setup-node@v6 | ||
| with: | ||
| node-version-file: .node-version | ||
| cache: npm | ||
| cache-dependency-path: | | ||
| package-lock.json | ||
| test/package-lock.json | ||
| # Use remote npmrc, since the root one targets Electron, and this leads to | ||
| # errors in this environment. This target does not appear to require the | ||
| # node-gyp header patch. | ||
| - name: Use remote npmrc | ||
| - run: | | ||
| cp lib/vscode/remote/.npmrc lib/vscode | ||
| sed -i "s/fs.existsSync(localHeaderPath)/false/" lib/vscode/build/npm/preinstall.ts | ||
| - name: Install dependencies and build | ||
| run: | | ||
| cd lib/vscode/build | ||
| npm ci | ||
| cd .. | ||
| source ./build/azure-pipelines/linux/setup-env.sh | ||
| cd ../.. | ||
| npm ci | ||
| npm run build | ||
| npm run build:vscode | ||
| # Platform-agnostic NPM package. | ||
| - run: npm run release | ||
| if: ${{ matrix.vscode_target == 'linux-x64' }} | ||
| - run: tar -czf package.tar.gz release | ||
| if: ${{ matrix.vscode_target == 'linux-x64' }} | ||
| - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 | ||
| if: ${{ matrix.vscode_target == 'linux-x64' }} | ||
| with: | ||
| draft: true | ||
| discussion_category_name: "📣 Announcements" | ||
| files: package.tar.gz | ||
| # Platform-specific release. | ||
| - run: KEEP_MODULES=1 npm run release | ||
| - name: Replace node with cross-compile equivalent | ||
| run: | | ||
| node_version=$(node --version) | ||
| wget https://nodejs.org/dist/${node_version}/node-${node_version}-linux-${npm_config_arch}.tar.xz | ||
| tar -xf node-${node_version}-linux-${npm_config_arch}.tar.xz node-${node_version}-linux-${npm_config_arch}/bin/node --strip-components=2 | ||
| mv ./node ./release/lib/node | ||
| - run: npm run package | ||
| - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 | ||
| with: | ||
| draft: true | ||
| discussion_category_name: "📣 Announcements" | ||
| files: ./release-packages/* | ||
| package-macos: | ||
| name: ${{ matrix.vscode_target }} | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - os: macos-15-intel | ||
| vscode_target: darwin-x64 | ||
| - os: macos-latest | ||
| vscode_target: darwin-arm64 | ||
| env: | ||
| VSCODE_TARGET: ${{ matrix.vscode_target }} | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| TAG: ${{ inputs.version || github.ref_name }} | ||
| steps: | ||
| # The version of node-gyp we use depends on distutils but it was removed | ||
| # in Python 3.12. It seems to be fixed in the latest node-gyp so when we | ||
| # next update Node we can probably remove this. For now, install | ||
| # setuptools since it contains distutils. | ||
| - run: brew install python-setuptools quilt | ||
| - name: Install nfpm | ||
| run: | | ||
| mkdir -p ~/.local/bin | ||
| curl -sSfL https://github.com/goreleaser/nfpm/releases/download/v2.3.1/nfpm_2.3.1_`uname -s`_`uname -m`.tar.gz | tar -C ~/.local/bin -zxv nfpm | ||
| echo "$HOME/.local/bin" >> $GITHUB_PATH | ||
| - name: Set version to tag without leading v | ||
| run: | | ||
| echo "VERSION=${TAG#v}" >> $GITHUB_ENV | ||
| - uses: actions/checkout@v6 | ||
| with: | ||
| submodules: true | ||
| - run: quilt push -a | ||
| - uses: actions/setup-node@v6 | ||
| with: | ||
| node-version-file: .node-version | ||
| cache: npm | ||
| cache-dependency-path: | | ||
| package-lock.json | ||
| test/package-lock.json | ||
| - run: npm ci | ||
| - run: npm run build | ||
| - run: npm run build:vscode | ||
| - run: KEEP_MODULES=1 npm run release | ||
| - run: npm run test:native | ||
| - run: npm run package | ||
| - uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1 | ||
| with: | ||
| draft: true | ||
| discussion_category_name: "📣 Announcements" | ||
| files: ./release-packages/* | ||