diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 72f13481..85d4ddd3 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -17,18 +17,18 @@ jobs: fail-fast: false matrix: include: - - name: Windows (Intel) - os: windows-2022 + # - name: Windows (Intel) + # os: windows-2022 - name: Windows (ARM) os: windows-11-arm - - name: Linux (Intel) - os: ubuntu-22.04 - - name: Linux (ARM) - os: ubuntu-22.04-arm - - name: macOS (Intel) - os: macos-15-intel - - name: macOS (ARM) - os: macos-15 + # - name: Linux (Intel) + # os: ubuntu-22.04 + # - name: Linux (ARM) + # os: ubuntu-22.04-arm + # - name: macOS (Intel) + # os: macos-15-intel + # - name: macOS (ARM) + # os: macos-15 env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} APPLE_ID: ${{ secrets.APPLE_ID }} @@ -72,28 +72,17 @@ jobs: - name: Install bun (Windows ARM only) if: ${{ matrix.name == 'Windows (ARM)' }} run: | - curl -L https://github.com/oven-sh/bun/releases/latest/download/bun-windows-x64-baseline.zip -o bun.zip + curl -L https://github.com/oven-sh/bun/releases/latest/download/bun-windows-aarch64.zip -o bun.zip unzip -j bun.zip -d $env:USERPROFILE\.bun del bun.zip echo "$env:USERPROFILE\.bun" >> $env:GITHUB_PATH - - name: Make sure that we can sign OpenCOR (Windows ARM only) - if: ${{ matrix.name == 'Windows (ARM)' }} - run: | - curl -L https://npmmirror.com/mirrors/electron-builder-binaries/winCodeSign-2.6.0/winCodeSign-2.6.0.7z -o winCodeSign.7z - 7z x winCodeSign.7z -oC:\Users\runneradmin\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0 - cd C:\Users\runneradmin\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-2.6.0\windows-10 - mv x64 arm64 - name: Install libopenjp2-tools (Linux ARM only) if: ${{ matrix.name == 'Linux (ARM)' }} run: | sudo apt update sudo apt install libopenjp2-tools - name: OpenCOR dependencies - if: ${{ matrix.name != 'Windows (ARM)' }} run: bun install - - name: OpenCOR dependencies (Windows ARM only) - if: ${{ matrix.name == 'Windows (ARM)' }} - run: bun install --cpu=arm64 - name: Build OpenCOR env: VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }} @@ -103,88 +92,88 @@ jobs: run: bun run build - name: Release OpenCOR run: bun release - web_app: - if: ${{ github.repository == 'opencor/webapp' }} - name: Web app - runs-on: ubuntu-22.04 - steps: - - name: Set the timezone to New Zealand - uses: szenius/set-timezone@v2.0 - with: - timezoneLinux: 'Pacific/Auckland' - - name: Check out OpenCOR - uses: actions/checkout@v4 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 'lts/*' - - name: Install bun - run: npm install -g bun - - name: OpenCOR dependencies - run: bun install - - name: Build OpenCOR's Web app - env: - VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }} - VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }} - VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }} - VITE_FIREBASE_MEASUREMENT_ID: ${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }} - run: bun build:web - - name: Deploy to https://opencor.ws/app/ - uses: milanmk/actions-file-deployer@master - with: - remote-protocol: sftp - remote-host: ${{ secrets.REMOTE_HOST }} - remote-user: ${{ secrets.REMOTE_USER }} - ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} - local-path: ./src/renderer/dist - remote-path: /home/www/opencor.ws/app - sync: full - - name: Archive OpenCOR's Web app - run: bun archive:web - - name: Release OpenCOR's Web app - uses: softprops/action-gh-release@v2 - with: - files: dist/OpenCOR-*-WebApp.tar.gz - npm: - runs-on: ubuntu-22.04 - steps: - - name: Set the timezone to New Zealand - uses: szenius/set-timezone@v2.0 - with: - timezoneLinux: 'Pacific/Auckland' - - name: Check out OpenCOR - uses: actions/checkout@v4 - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 'lts/*' - registry-url: 'https://registry.npmjs.org' - - name: Update npm - # Install the latest version of npm since we need npm 11.5.1 or later to publish to npm using OIDC (see - # https://docs.npmjs.com/trusted-publishers). - run: npm install -g npm@latest - - name: Install bun - run: npm install -g bun - - name: OpenCOR dependencies - run: | - cd src/renderer - bun install - - name: Build OpenCOR as a component - env: - VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }} - VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }} - VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }} - VITE_FIREBASE_MEASUREMENT_ID: ${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }} - run: | - cd src/renderer - bun build:lib - - name: Publish OpenCOR - # bun cannot currently be used to publish to npm using OIDC (see https://github.com/oven-sh/bun/issues/22423 and - # https://github.com/oven-sh/bun/issues/15601), so we use npm instead. To publish using OIDC implies automatic - # provenance generation, so no need to specify --provenance (see https://docs.npmjs.com/trusted-publishers). - # Provenance requires "repository.url" in package.json to match the repository from which we are publishing. In - # our case, it means that we can only publish to npm from the "opencor/webapp" repository. (Provenance can be - # disabled, but we prefer to be open.) - run: | - cd src/renderer - npm publish --access public --no-git-checks + # web_app: + # if: ${{ github.repository == 'opencor/webapp' }} + # name: Web app + # runs-on: ubuntu-22.04 + # steps: + # - name: Set the timezone to New Zealand + # uses: szenius/set-timezone@v2.0 + # with: + # timezoneLinux: 'Pacific/Auckland' + # - name: Check out OpenCOR + # uses: actions/checkout@v4 + # - name: Install Node.js + # uses: actions/setup-node@v4 + # with: + # node-version: 'lts/*' + # - name: Install bun + # run: npm install -g bun + # - name: OpenCOR dependencies + # run: bun install + # - name: Build OpenCOR's Web app + # env: + # VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }} + # VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }} + # VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }} + # VITE_FIREBASE_MEASUREMENT_ID: ${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }} + # run: bun build:web + # - name: Deploy to https://opencor.ws/app/ + # uses: milanmk/actions-file-deployer@master + # with: + # remote-protocol: sftp + # remote-host: ${{ secrets.REMOTE_HOST }} + # remote-user: ${{ secrets.REMOTE_USER }} + # ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + # local-path: ./src/renderer/dist + # remote-path: /home/www/opencor.ws/app + # sync: full + # - name: Archive OpenCOR's Web app + # run: bun archive:web + # - name: Release OpenCOR's Web app + # uses: softprops/action-gh-release@v2 + # with: + # files: dist/OpenCOR-*-WebApp.tar.gz + # npm: + # runs-on: ubuntu-22.04 + # steps: + # - name: Set the timezone to New Zealand + # uses: szenius/set-timezone@v2.0 + # with: + # timezoneLinux: 'Pacific/Auckland' + # - name: Check out OpenCOR + # uses: actions/checkout@v4 + # - name: Install Node.js + # uses: actions/setup-node@v4 + # with: + # node-version: 'lts/*' + # registry-url: 'https://registry.npmjs.org' + # - name: Update npm + # # Install the latest version of npm since we need npm 11.5.1 or later to publish to npm using OIDC (see + # # https://docs.npmjs.com/trusted-publishers). + # run: npm install -g npm@latest + # - name: Install bun + # run: npm install -g bun + # - name: OpenCOR dependencies + # run: | + # cd src/renderer + # bun install + # - name: Build OpenCOR as a component + # env: + # VITE_FIREBASE_API_KEY: ${{ secrets.VITE_FIREBASE_API_KEY }} + # VITE_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.VITE_FIREBASE_MESSAGING_SENDER_ID }} + # VITE_FIREBASE_APP_ID: ${{ secrets.VITE_FIREBASE_APP_ID }} + # VITE_FIREBASE_MEASUREMENT_ID: ${{ secrets.VITE_FIREBASE_MEASUREMENT_ID }} + # run: | + # cd src/renderer + # bun build:lib + # - name: Publish OpenCOR + # # bun cannot currently be used to publish to npm using OIDC (see https://github.com/oven-sh/bun/issues/22423 and + # # https://github.com/oven-sh/bun/issues/15601), so we use npm instead. To publish using OIDC implies automatic + # # provenance generation, so no need to specify --provenance (see https://docs.npmjs.com/trusted-publishers). + # # Provenance requires "repository.url" in package.json to match the repository from which we are publishing. In + # # our case, it means that we can only publish to npm from the "opencor/webapp" repository. (Provenance can be + # # disabled, but we prefer to be open.) + # run: | + # cd src/renderer + # npm publish --access public --no-git-checks diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 18c33daf..6ee8b98b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,16 +50,12 @@ jobs: - name: Install bun (Windows ARM only) if: ${{ matrix.name == 'Windows (ARM)' }} run: | - curl -L https://github.com/oven-sh/bun/releases/latest/download/bun-windows-x64-baseline.zip -o bun.zip + curl -L https://github.com/oven-sh/bun/releases/latest/download/bun-windows-aarch64.zip -o bun.zip unzip -j bun.zip -d $env:USERPROFILE\.bun del bun.zip echo "$env:USERPROFILE\.bun" >> $env:GITHUB_PATH - name: OpenCOR dependencies - if: ${{ matrix.name != 'Windows (ARM)' }} run: bun install - - name: OpenCOR dependencies (Windows ARM only) - if: ${{ matrix.name == 'Windows (ARM)' }} - run: bun install --cpu=arm64 - name: Build OpenCOR if: ${{ matrix.name != 'Code formatting' && matrix.name != 'Linting' }} run: bun run build