Rename client artifact to parsec-v3
#63
Workflow file for this run
This file contains 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: Package client | |
on: | |
pull_request: | |
paths: | |
- .github/workflows/package-client.yml | |
workflow_call: | |
inputs: | |
version: | |
description: The version to use | |
type: string | |
required: true | |
version_patch_run_id: | |
description: | | |
The run id where the version.patch artifact was uploaded. | |
If not provided, the workflow will generate the patch by itself. | |
type: string | |
required: true | |
workflow_dispatch: | |
inputs: | |
version: | |
description: The version to use (if not provided, will generate one from code space version) | |
type: string | |
required: false | |
# Set `concurrency` to prevent this workflow from being run on code that is not up-to-date on a PR (e.g. when making many push quickly on a PR). | |
# This behavior is only intended for a PR and not for merge commits on the main branch. Having the workflow run on each merge commit can be useful to spot regressions missed by previous checks. | |
# To distinguish between these cases, we use `head_ref` that is only defined on `pull-request` and fallback to `run_id` (this is a counter, so it's value is unique between workflow call). | |
concurrency: | |
group: package-client-${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
# We use the version 18.12 because the version >= 18.13 have some breaking changes on how they format the date. | |
# That would break our unit test if we don't update them. | |
node-version: 18.12.0 | |
wasm-pack-version: 0.11.0 | |
WINFSP_VERSION: 2.0.23075 | |
permissions: | |
contents: read | |
jobs: | |
version: | |
if: ${{ inputs.version_patch_run_id == '' }} | |
uses: ./.github/workflows/_parse_version.yml | |
with: | |
version: ${{ inputs.version }} | |
webapp: | |
needs: version | |
# Always run the job if `version` job is skipped otherwise only if `version` job was successful. | |
if: ${{ inputs.version_patch_run_id != '' && always() || success() }} | |
runs-on: ubuntu-22.04 | |
name: ⚡ Package web app | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin v4.1.1 | |
timeout-minutes: 5 | |
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # pin v4.0.2 | |
with: | |
node-version: ${{ env.node-version }} | |
timeout-minutes: 2 | |
- name: Download version.patch artifact | |
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # pin v4.1.4 | |
with: | |
name: version.patch | |
path: ${{ runner.temp }}/version.patch | |
run-id: ${{ inputs.version_patch_run_id || github.run_id }} | |
- name: Apply version.patch | |
run: git apply ${{ runner.temp }}/version.patch/version.patch | |
- name: Install dependencies | |
run: npm clean-install | |
working-directory: client | |
# Install syft | |
- uses: taiki-e/install-action@28b5a55da2f568d1d1e3f8d5ea6e7103685abc6a # pin v2.28.0 | |
with: | |
tool: syft@0.84.0, wasm-pack@${{ env.wasm-pack-version }} | |
- name: Build web bindings | |
run: npm run build:release | |
working-directory: bindings/web | |
- name: Build web app | |
run: npm run web:release | |
working-directory: client | |
- name: Generate SBOM | |
run: syft packages --config=.syft.yaml --output=spdx-json=Parsec-SBOM-Web.spdx.json . | |
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin v4.3.1 | |
with: | |
name: webapp | |
path: | | |
client/dist/ | |
Parsec-SBOM-Web.spdx.json | |
if-no-files-found: error | |
electron: | |
needs: version | |
# Always run the job if `version` job is skipped otherwise only if `version` job was successful. | |
if: ${{ inputs.version_patch_run_id != '' && always() || success() }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: 🐧 Linux | |
platform: linux | |
os: ubuntu-20.04 | |
paths: | | |
client/electron/dist/parsec-v3_*_*.snap | |
client/electron/dist/parsec-v3-*.AppImage | |
client/electron/dist/latest-linux.yml | |
- name: 🏁 Windows | |
platform: windows | |
os: windows-2022 | |
paths: | | |
client/electron/dist/parsec-v3 Setup *.exe | |
client/electron/dist/parsec-v3 Setup *.exe.blockmap | |
client/electron/dist/latest.yml | |
- name: 🍎 macOS | |
platform: macos | |
os: macos-12 | |
paths: | | |
client/electron/dist/parsec-v3-*.dmg | |
client/electron/dist/parsec-v3-*.dmg.blockmap | |
client/electron/dist/latest-mac.yml | |
name: "${{matrix.name }}: ⚡ Package electron" | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 60 | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin v4.1.1 | |
timeout-minutes: 5 | |
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # pin v4.0.2 | |
with: | |
node-version: ${{ env.node-version }} | |
timeout-minutes: 2 | |
- name: Download version.patch artifact | |
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # pin v4.1.4 | |
with: | |
name: version.patch | |
path: ${{ runner.temp }}/version.patch | |
run-id: ${{ inputs.version_patch_run_id || github.run_id }} | |
- name: Apply version.patch | |
run: git apply ${{ runner.temp }}/version.patch/version.patch | |
- name: Linux > Install fuse devel | |
if: matrix.platform == 'linux' | |
run: | | |
until sudo apt-get install fuse3 libfuse3-dev; do | |
sleep 1; | |
echo "Retrying"; | |
done | |
timeout-minutes: 1 | |
- name: Linux > Install snapcraft | |
if: matrix.platform == 'linux' | |
uses: samuelmeuli/action-snapcraft@d33c176a9b784876d966f80fb1b461808edc0641 # pin v2.1.1 | |
timeout-minutes: 1 | |
- name: Linux > Setup LXD | |
if: matrix.platform == 'linux' | |
uses: canonical/setup-lxd@4e959f8e0d9c5feb27d44c5e4d9a330a782edee0 # pin v0.1.1 | |
timeout-minutes: 2 | |
- name: Windows > Install WinFSP | |
if: matrix.platform == 'windows' | |
shell: bash | |
run: | | |
set -eux | |
choco install winfsp -y --version=${{ env.WINFSP_VERSION }} | |
curl -L https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-tests-${{ env.WINFSP_VERSION }}.zip -o D:/a/_temp/winfsp-tests.zip | |
unzip D:/a/_temp/winfsp-tests.zip -d D:/a/_temp/ | |
mv 'D:/a/_temp/winfsp-tests-x64.exe' 'C:/Program Files (x86)/WinFsp/bin/' | |
timeout-minutes: 1 | |
- name: Install dependencies | |
shell: bash | |
run: | | |
npm clean-install | |
(cd electron && npm clean-install) | |
(cd ../bindings/electron && npm clean-install) | |
working-directory: client | |
timeout-minutes: 10 | |
- name: Build Electron bindings | |
run: npm run build:release | |
working-directory: bindings/electron | |
# MacOS is really slow when build rust | |
timeout-minutes: 30 | |
- name: Build Electron apps | |
run: npm run electron:release | |
working-directory: client | |
timeout-minutes: 5 | |
# Install syft | |
- uses: taiki-e/install-action@28b5a55da2f568d1d1e3f8d5ea6e7103685abc6a # pin v2.28.0 | |
with: | |
tool: syft@0.84.0 | |
- name: Generate SBOM | |
run: syft packages --config=.syft.yaml --output=spdx-json=Parsec-SBOM-Electron-${{ matrix.platform }}.spdx.json . | |
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin v4.3.1 | |
with: | |
name: ${{ runner.os }}-${{ runner.arch }}-electron-app | |
path: | | |
${{ matrix.paths }} | |
Parsec-SBOM-Electron-${{ matrix.platform }}.spdx.json | |
if-no-files-found: error | |
timeout-minutes: 10 |