name: Build + Publish on: push: branches: - vega jobs: build: name: Build runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v4 - name: Setup Node.js environment uses: actions/setup-node@v4 with: node-version: 20.x - name: Enable pnpm run: | corepack enable corepack prepare pnpm@latest --activate - name: Set Build Variables run: | echo "REL_VERSION=3.0.0-alpha.$GITHUB_RUN_NUMBER" >> $GITHUB_ENV - name: Disable DEV Flag + Set Version working-directory: server run: | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" (echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> /home/runner/.bashrc eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" brew install jq mv package.json pkg-temp.json jq --arg vs "$REL_VERSION_STRICT" -r '. + {dev:false, version:$vs}' pkg-temp.json > package.json rm pkg-temp.json cat package.json - name: Fetch Latest Locales uses: localazy/download@v1 with: read_key: ${{ secrets.LOCALAZY_KEY_READ }} - name: Build Assets working-directory: ux run: | pnpm install --frozen-lockfile --shamefully-hoist NODE_OPTIONS=--max-old-space-size=8192 pnpm build - name: Build Blocks working-directory: blocks run: | pnpm install --frozen-lockfile pnpm build - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push Docker images uses: docker/build-push-action@v5 with: context: . file: dev/build/Dockerfile push: true platforms: linux/amd64,linux/arm64 tags: | ghcr.io/requarks/wiki:3.0.0-alpha ghcr.io/requarks/wiki:${{ env.REL_VERSION }} - name: Prepare build archive run: | mkdir -p _dist cp -R assets _dist/assets cp -R server _dist/server cp LICENSE _dist/LICENSE cp config.sample.yml _dist/config.sample.yml cd _dist/server pnpm install --prod --frozen-lockfile cd - find ./_dist/ -printf "%P\n" | tar -czf wiki-js.tar.gz --no-recursion -C ./_dist/ -T - - name: Upload Build Artifact uses: actions/upload-artifact@v4 with: name: build path: wiki-js.tar.gz windows: name: Windows Build runs-on: windows-latest needs: [build] steps: - name: Setup Node.js environment uses: actions/setup-node@v4 with: node-version: 20.x - name: Enable pnpm run: | corepack enable corepack prepare pnpm@latest --activate - name: Download Build Artifact uses: actions/download-artifact@v4 with: name: build path: build - name: Extract Build run: | mkdir -p win tar -xzf $env:GITHUB_WORKSPACE\build\wiki-js.tar.gz -C $env:GITHUB_WORKSPACE\win --exclude=server/node_modules - name: Install Dependencies run: pnpm install --prod --frozen-lockfile working-directory: win\server - name: Create Bundle shell: pwsh run: Compress-Archive -Path $env:GITHUB_WORKSPACE\win\* -DestinationPath wiki-js-windows.zip - name: Upload Build Artifact uses: actions/upload-artifact@v4 with: name: build-win path: wiki-js-windows.zip