Fix build #164
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
| # This is a basic workflow to help you get started with Actions | |
| name: CI | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| # Controls when the action will run. | |
| on: | |
| # Triggers the workflow on push or pull request events but only for the main branch | |
| push: | |
| branches: [develop] | |
| tags: | |
| - v* | |
| - s* | |
| paths-ignore: | |
| - 'docs/**' | |
| pull_request: | |
| branches: [develop, staging, staging-new, main] | |
| paths-ignore: | |
| - 'docs/**' | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| inputs: | |
| run-cockroach: | |
| description: 'Run CockroachDB tests (with profiling)' | |
| required: false | |
| default: 'false' | |
| type: boolean | |
| env: | |
| CacheFolders: | | |
| communication | |
| common | |
| desktop | |
| desktop-package | |
| foundations | |
| dev | |
| models | |
| packages | |
| plugins | |
| pods | |
| server | |
| server-plugins | |
| templates | |
| services | |
| workers | |
| tests | |
| rush.json | |
| .prettierrc | |
| tools | |
| workers | |
| ws-tests | |
| PublishTempFolder: publish_artifacts | |
| INIT_SCRIPTS_BRANCH: 'main' | |
| # A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
| jobs: | |
| # This workflow contains a single job called "build" | |
| build: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache node modules | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-node-platform | |
| with: | |
| path: | | |
| common/temp | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| # - name: Cheking model is updated... | |
| # run: node common/scripts/check_model_version.js | |
| - name: Checking for mis-matching dependencies... | |
| run: node common/scripts/install-run-rush.js check | |
| - name: Checking for mis-matching transitive dependencies... | |
| run: node common/scripts/check-versions.js | |
| - name: Installing... | |
| run: node common/scripts/install-run-rush.js install | |
| - name: Model version from git tags | |
| run: node common/scripts/install-run-rush.js model-version | |
| - name: Bundle... | |
| run: node common/scripts/install-run-rush.js fast-build:bundle | |
| - name: Validate... | |
| run: node common/scripts/install-run-rush.js fast-build:validate | |
| - name: Build @intabia-fusion/api bundle | |
| run: | | |
| cd dev/api | |
| node scripts/build-bundle.js | |
| cd bundle | |
| npm install | |
| npx tsc | |
| npm pack | |
| - name: Upload @intabia-fusion/api bundle artifact | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: intabia-fusion-api-bundle | |
| path: dev/api/bundle/intabia-fusion-api-*.tgz | |
| if-no-files-found: error | |
| - name: Cache build results | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-build-results | |
| with: | |
| path: ${{ env.CacheFolders}} | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| svelte-check: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache build results | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-build-results | |
| with: | |
| path: ${{ env.CacheFolders}} | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| - name: Checking svelte sources... | |
| run: node common/scripts/install-run-rush.js fast-build:svelte-check | |
| formatting: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache build results | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-build-results | |
| with: | |
| path: ${{ env.CacheFolders}} | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| - name: Formatting... | |
| run: node common/scripts/install-run-rush.js fast-format --branch ${{ github.base_ref || 'develop' }} | |
| - name: Check files formatting | |
| run: | | |
| echo '================================================================' | |
| echo 'Checking for diff files' | |
| echo '================================================================' | |
| git diff '*.js' '*.ts' '*.svelte' '*.json' '*.yaml' | cat | |
| [ -z "$(git diff --name-only '*.js' '*.ts' '*.svelte' '*.json' '*.yaml' | cat)" ] | |
| echo '================================================================' | |
| test: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache build results | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-build-results | |
| with: | |
| path: ${{ env.CacheFolders}} | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}-${{ github.sha }} | |
| - name: Prepare server (with rate limit retry) | |
| run: | | |
| set -o pipefail | |
| cd ./tests | |
| if ./prepare-tests.sh 2>&1 | tee /tmp/prepare-tests.log; then | |
| echo "Prepare succeeded" | |
| else | |
| if grep -qi "rate limit\|too many requests\|toomanyrequests\|429" /tmp/prepare-tests.log; then | |
| echo "Rate limit hit, logging in to Docker Hub and retrying..." | |
| echo "${{ secrets.DOCKER_ACCESS_TOKEN }}" | docker login -u haiodo --password-stdin | |
| ./prepare-tests.sh | |
| else | |
| echo "Prepare failed (not a rate limit issue)" | |
| cat /tmp/prepare-tests.log | |
| exit 1 | |
| fi | |
| fi | |
| - name: Testing... | |
| run: node common/scripts/install-run-rush.js fast-build:test --verbose | |
| env: | |
| DB_URL: 'postgresql://root@localhost:26258/defaultdb?sslmode=disable' | |
| ELASTIC_URL: 'http://localhost:9201' | |
| MONGO_URL: 'mongodb://localhost:27018' | |
| POSTGRES_URL: 'postgresql://postgres:postgres@localhost:5433/postgres' | |
| uitest-cockroach: | |
| if: inputs.run-cockroach == true | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache node modules | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-node-platform | |
| with: | |
| path: | | |
| common/temp | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Checking for mis-matching dependencies... | |
| run: node common/scripts/install-run-rush.js check | |
| - name: Checking for mis-matching transitive dependencies... | |
| run: node common/scripts/check-versions.js | |
| - name: Installing... | |
| run: node common/scripts/install-run-rush.js install | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - name: Docker Build (with rate limit retry) | |
| run: | | |
| set -o pipefail | |
| if node common/scripts/install-run-rush.js fast-build:docker 2>&1 | tee /tmp/docker-build.log; then | |
| echo "Docker build succeeded" | |
| else | |
| if grep -qi "rate limit\|too many requests\|toomanyrequests\|429" /tmp/docker-build.log; then | |
| echo "Rate limit hit, logging in to Docker Hub and retrying..." | |
| echo "${{ secrets.DOCKER_ACCESS_TOKEN }}" | docker login -u haiodo --password-stdin | |
| node common/scripts/install-run-rush.js fast-build:docker | |
| else | |
| echo "Docker build failed (not a rate limit issue)" | |
| cat /tmp/docker-build.log | |
| exit 1 | |
| fi | |
| fi | |
| env: | |
| DOCKER_CLI_HINTS: false | |
| DOCKER_BUILDKIT: 1 | |
| - name: Configure /etc/hosts | |
| run: | | |
| sudo echo "127.0.0.1 huly.local" | sudo tee -a /etc/hosts | |
| # CockroachDB tests with profiling | |
| - name: Run UI tests (CockroachDB) | |
| uses: ./.github/actions/ui-test | |
| with: | |
| test-folder: tests | |
| prepare-script: ./prepare-cockroach.sh | |
| build-package: '@hcengineering/tests-sanity' | |
| artifact-name-suffix: cockroach | |
| enable-profiling: 'true' | |
| docker-access-token: ${{ secrets.DOCKER_ACCESS_TOKEN }} | |
| uitest-pg: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache node modules | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-node-platform | |
| with: | |
| path: | | |
| common/temp | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Checking for mis-matching dependencies... | |
| run: node common/scripts/install-run-rush.js check | |
| - name: Checking for mis-matching transitive dependencies... | |
| run: node common/scripts/check-versions.js | |
| - name: Installing... | |
| run: node common/scripts/install-run-rush.js install | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - name: Docker Build (with rate limit retry) | |
| run: | | |
| set -o pipefail | |
| if node common/scripts/install-run-rush.js fast-build:docker 2>&1 | tee /tmp/docker-build.log; then | |
| echo "Docker build succeeded" | |
| else | |
| if grep -qi "rate limit\|too many requests\|toomanyrequests\|429" /tmp/docker-build.log; then | |
| echo "Rate limit hit, logging in to Docker Hub and retrying..." | |
| echo "${{ secrets.DOCKER_ACCESS_TOKEN }}" | docker login -u haiodo --password-stdin | |
| node common/scripts/install-run-rush.js fast-build:docker | |
| else | |
| echo "Docker build failed (not a rate limit issue)" | |
| cat /tmp/docker-build.log | |
| exit 1 | |
| fi | |
| fi | |
| env: | |
| DOCKER_CLI_HINTS: false | |
| DOCKER_BUILDKIT: 1 | |
| - name: Configure /etc/hosts | |
| run: | | |
| sudo echo "127.0.0.1 huly.local" | sudo tee -a /etc/hosts | |
| # PostgreSQL tests | |
| - name: Run UI tests (PostgreSQL) | |
| uses: ./.github/actions/ui-test | |
| with: | |
| test-folder: tests | |
| prepare-script: ./prepare-pg.sh | |
| build-package: '@hcengineering/tests-sanity' | |
| artifact-name-suffix: pg | |
| enable-profiling: 'true' | |
| docker-access-token: ${{ secrets.DOCKER_ACCESS_TOKEN }} | |
| uitest-workspaces: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache node modules | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-node-platform | |
| with: | |
| path: | | |
| common/temp | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Checking for mis-matching dependencies... | |
| run: node common/scripts/install-run-rush.js check | |
| - name: Checking for mis-matching transitive dependencies... | |
| run: node common/scripts/check-versions.js | |
| - name: Installing... | |
| run: node common/scripts/install-run-rush.js install | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - name: Docker Build (with rate limit retry) | |
| run: | | |
| set -o pipefail | |
| if node common/scripts/install-run-rush.js fast-build:docker 2>&1 | tee /tmp/docker-build.log; then | |
| echo "Docker build succeeded" | |
| else | |
| if grep -qi "rate limit\|too many requests\|toomanyrequests\|429" /tmp/docker-build.log; then | |
| echo "Rate limit hit, logging in to Docker Hub and retrying..." | |
| echo "${{ secrets.DOCKER_ACCESS_TOKEN }}" | docker login -u haiodo --password-stdin | |
| node common/scripts/install-run-rush.js fast-build:docker | |
| else | |
| echo "Docker build failed (not a rate limit issue)" | |
| cat /tmp/docker-build.log | |
| exit 1 | |
| fi | |
| fi | |
| env: | |
| DOCKER_CLI_HINTS: false | |
| DOCKER_BUILDKIT: 1 | |
| - name: Configure /etc/hosts | |
| run: | | |
| sudo echo "127.0.0.1 huly.local" | sudo tee -a /etc/hosts | |
| # Workspace tests with API tests (first, fastest) | |
| - name: Run UI tests (Workspaces) | |
| uses: ./.github/actions/ui-test | |
| with: | |
| test-folder: ws-tests | |
| prepare-script: ./prepare.sh | |
| build-package: '@hcengineering/tests-ws-sanity' | |
| artifact-name-suffix: ws | |
| run-api-tests: 'true' | |
| docker-access-token: ${{ secrets.DOCKER_ACCESS_TOKEN }} | |
| docker-build: | |
| needs: [uitest-workspaces] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| # https://github.com/actions/runner-images/issues/2840#issuecomment-790492173 | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Configure docker | |
| uses: docker/setup-docker-action@v4 | |
| with: | |
| daemon-config: | | |
| { | |
| "features": { | |
| "containerd-snapshotter": true | |
| } | |
| } | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - uses: pnpm/action-setup@v4 | |
| with: | |
| version: latest | |
| - name: Cache node modules | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: cache-node-platform | |
| with: | |
| path: | | |
| common/temp | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Installing... | |
| run: node common/scripts/install-run-rush.js install | |
| - name: Model version from git tags | |
| run: node common/scripts/install-run-rush.js model-version | |
| - name: Docker build (with rate limit retry) | |
| run: | | |
| set -o pipefail | |
| docker system prune -a -f | |
| if node common/scripts/install-run-rush.js fast-build:docker-build -v 2>&1 | tee /tmp/docker-build.log; then | |
| echo "Docker build succeeded" | |
| else | |
| if grep -qi "rate limit\|too many requests\|toomanyrequests\|429" /tmp/docker-build.log; then | |
| echo "Rate limit hit, logging in to Docker Hub and retrying..." | |
| echo "${{ secrets.DOCKER_ACCESS_TOKEN }}" | docker login -u haiodo --password-stdin | |
| node common/scripts/install-run-rush.js fast-build:docker-build -v | |
| else | |
| echo "Docker build failed (not a rate limit issue)" | |
| cat /tmp/docker-build.log | |
| exit 1 | |
| fi | |
| fi | |
| docker builder prune -a -f | |
| env: | |
| DOCKER_CLI_HINTS: false | |
| DOCKER_EXTRA: --platform=linux/amd64,linux/arm64 | |
| DOCKER_BUILDKIT: 1 | |
| DOCKER_BUILD_CLEANUP: true | |
| - name: Docker push tag | |
| if: ${{ startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/tags/s') }} | |
| run: | | |
| echo Pushing release of tag ${{ github.ref }} | |
| echo "${{ secrets.DOCKER_ACCESS_TOKEN }}" | docker login -u haiodo --password-stdin | |
| node common/scripts/install-run-rush.js docker:push -v | |
| dist-build: | |
| # if: ${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/tags/s') }} | |
| if: ${{ startsWith(github.ref, 'refs/tags/v') || startsWith(github.ref, 'refs/tags/s') }} | |
| needs: build | |
| runs-on: macos-latest | |
| timeout-minutes: 60 | |
| outputs: | |
| release_tag: ${{ steps.release_info.outputs.release_tag }} | |
| rev: ${{ steps.release_info.outputs.rev }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - name: Free space | |
| uses: ./.github/actions/free-disk-space | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.nvmrc' | |
| - name: Cache node modules | |
| uses: actions/cache@v5 | |
| env: | |
| cache-name: node | |
| with: | |
| path: | | |
| common/temp | |
| key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| - name: Installing... | |
| run: node common/scripts/install-run-rush.js install --purge | |
| - name: Model version from git tags | |
| run: node common/scripts/install-run-rush.js model-version | |
| - name: Package | |
| run: node common/scripts/install-run-rush.js fast-build:package --to desktop -v | |
| - name: Bump package JSON version | |
| run: | | |
| cd desktop-package | |
| node ../common/scripts/install-run-rushx.js bump | |
| cat ./package.json | |
| # - name: Install the Apple certificate and provisioning profile | |
| # env: | |
| # DEV_ID_P12_BASE64: ${{ secrets.DEV_ID_P12_BASE64 }} | |
| # DEV_ID_P12_PASSWORD: ${{ secrets.DEV_ID_P12_PASSWORD }} | |
| # KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
| # run: | | |
| # # create variables | |
| # CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
| # KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
| # # import certificate from secret | |
| # echo -n "$DEV_ID_P12_BASE64" | base64 --decode -o $CERTIFICATE_PATH | |
| # # create temporary keychain | |
| # security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| # security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
| # security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| # # import certificate to keychain | |
| # security import $CERTIFICATE_PATH -P "$DEV_ID_P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
| # security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
| # security list-keychain -d user -s $KEYCHAIN_PATH | |
| - name: Build distribution's | |
| # env: | |
| # APPLE_ID: ${{ secrets.APPLE_ID }} | |
| # APPLE_ID_APP_PASS: ${{ secrets.APPLE_ID_APP_PASS }} | |
| # TEAM_ID: ${{ secrets.TEAM_ID }} | |
| run: | | |
| cd desktop-package | |
| node ../common/scripts/install-run-rushx.js dist --linux --x64 | |
| node ../common/scripts/install-run-rushx.js dist --windows --x64 | |
| node ../common/scripts/install-run-rushx.js dist --macos --x64 --arm64 | |
| # ./scripts/copy-publish-artifacts.sh ${{ env.PublishTempFolder}} | |
| # - name: Publish distribution assets and version | |
| # uses: ryand56/r2-upload-action@latest | |
| # with: | |
| # r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} | |
| # r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} | |
| # r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} | |
| # r2-bucket: desktop-distro | |
| # source-dir: desktop-package/${{ env.PublishTempFolder}} | |
| # destination-dir: ./ | |
| - name: Upload MacOS | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-MacOS-x64 | |
| path: ./desktop-package/deploy/Platform-macos-*-x64.dmg | |
| - name: Upload MacOS Zip | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-MacOS-zip | |
| path: ./desktop-package/deploy/Platform-macos*.zip | |
| - name: Upload MacOS arm64 | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-MacOS-arm64 | |
| path: ./desktop-package/deploy/Platform-macos-*-arm64.dmg | |
| - name: Upload Windows | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-Windows | |
| path: ./desktop-package/deploy/Platform-windows-*.exe | |
| - name: Upload Windows zip | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-Windows-zip | |
| path: ./desktop-package/deploy/Platform-windows-*.zip | |
| - name: Upload Linux | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-Linux-arm64 | |
| path: ./desktop-package/deploy/Platform-linux-*-arm64.zip | |
| - name: Upload Linux | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-Linux-x64 | |
| path: ./desktop-package/deploy/Platform-linux-*-x64.zip | |
| - name: Upload Linux App image | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Platform-Linux-AppImage | |
| path: ./desktop-package/deploy/Platform-linux-*.AppImage | |
| - name: List deploy contents | |
| run: | | |
| cd desktop-package | |
| echo "Files in deploy directory:" | |
| ls -la deploy/ | |
| - name: Build server bundle (macOS only) | |
| run: | | |
| cd desktop-package | |
| node ../common/scripts/install-run-rushx.js bundle:server | |
| - name: Upload server bundle | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: server-bundle | |
| path: ./desktop-package/bundle | |
| - name: Upload manifests (yml + blockmap) | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: desktop-manifests | |
| path: | | |
| ./desktop-package/deploy/*.yml | |
| ./desktop-package/deploy/*.yaml | |
| ./desktop-package/deploy/*.blockmap | |
| - name: Set release info | |
| id: release_info | |
| run: | | |
| echo "release_tag=$(node common/scripts/show_tag.js)" >> $GITHUB_OUTPUT | |
| echo "rev=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT | |
| dist-build-docker: | |
| needs: dist-build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| filter: tree:0 | |
| submodules: recursive | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| - name: Configure docker | |
| uses: docker/setup-docker-action@v4 | |
| with: | |
| daemon-config: | | |
| { | |
| "features": { | |
| "containerd-snapshotter": true | |
| } | |
| } | |
| - name: Download Platform-MacOS-x64 | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-MacOS-x64 | |
| path: ./desktop-package/deploy | |
| - name: Download Platform-MacOS-arm64 | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-MacOS-arm64 | |
| path: ./desktop-package/deploy | |
| - name: Download Platform-MacOS-zip | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-MacOS-zip | |
| path: ./desktop-package/deploy | |
| - name: Download Platform-Windows | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-Windows | |
| path: ./desktop-package/deploy | |
| - name: Download Platform-Windows-zip | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-Windows-zip | |
| path: ./desktop-package/deploy | |
| # - name: Download Platform-Linux-arm64 | |
| # uses: actions/download-artifact@v5 | |
| # with: | |
| # name: Platform-Linux-arm64 | |
| # path: ./desktop-package/deploy | |
| - name: Download Platform-Linux-x64 | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-Linux-x64 | |
| path: ./desktop-package/deploy | |
| - name: Download Platform-Linux-AppImage | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: Platform-Linux-AppImage | |
| path: ./desktop-package/deploy | |
| - name: Download server-bundle | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: server-bundle | |
| path: ./desktop-package/bundle | |
| - name: Download desktop-manifests | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: desktop-manifests | |
| path: ./desktop-package/deploy | |
| - name: List downloaded artifacts | |
| run: ls -R ./desktop-package/deploy || true | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: haiodo | |
| password: ${{ secrets.DOCKER_ACCESS_TOKEN }} | |
| - name: Build and push Docker image (via package script) | |
| run: | | |
| set -euo pipefail | |
| cd desktop-package | |
| ../common/scripts/docker_build.sh haiodo/desktop-distro | |
| ../common/scripts/docker_tag.sh haiodo/desktop-distro | |
| env: | |
| DOCKER_CLI_HINTS: false | |
| DOCKER_BUILDKIT: 1 | |
| BUILD_REV: ${{ needs.dist-build.outputs.rev }} | |
| RELEASE_TAG: ${{ needs.dist-build.outputs.release_tag }} |