name: Zen Alpha builds on: workflow_dispatch: inputs: create_release: description: 'Create a new release for this build' required: false default: false type: 'boolean' update_version: description: 'Update the version number' required: false default: true type: 'boolean' jobs: build-data: permissions: contents: write name: Generate build data runs-on: ubuntu-latest outputs: build_date: ${{ steps.data.outputs.builddate }} version: ${{ steps.data.outputs.version }} steps: - name: Install Node.js uses: actions/setup-node@v3 with: node-version: 20 - uses: actions/checkout@v3 - name: Install pnpm run: npm install -g pnpm - name: Get pnpm store directory id: pnpm-cache shell: bash run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Install dependencies run: pnpm install - name: Setup Surfer run: | npm i -g @zen-browser/surfer - name: Bump version if: ${{ github.event.inputs.update_version == 'true' }} run: | pnpm surfer ci --brand alpha --bump prerelease - name: Bump version without new version if: ${{ github.event.inputs.update_version == 'false' }} run: | pnpm surfer ci --brand alpha - name: Debug run: | surfer get version surfer get version | xargs echo "$(surfer get version | xargs)" - name: Export release date id: data shell: bash run: | echo "builddate=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT echo "version=$(surfer get version | xargs)" >> $GITHUB_OUTPUT - uses: stefanzweifel/git-auto-commit-action@v4 if: ${{ github.event.inputs.update_version == 'true' }} with: commit_message: 🔖 Update version to ${{ steps.data.outputs.version }} commit_user_name: Zen Browser Robot commit_user_email: zen-browser-bot@users.noreply.github.com check-release: runs-on: ubuntu-latest needs: [build-data] steps: - name: Install Node.js uses: actions/setup-node@v3 with: node-version: 20 - name: Checkout uses: actions/checkout@v3 - name: Install pnpm run: npm install -g pnpm - name: Get pnpm store directory id: pnpm-cache shell: bash run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Install dependencies run: pnpm install - name: Setup surfer run: | npm i -g @zen-browser/surfer - name: Activate surfer CLI run: | echo "There's a bug in the surfer CLI, we run this so that surfer sets everything up correctly" pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} - name: Check version run: | echo "$(pwd)" ls . echo "version=$(pnpm surfer get version | xargs)" >> $GITHUB_OUTPUT if [[ $(pnpm surfer get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then echo ">>> Version matches" else echo ">>> Version mismatch" exit 1 fi source: permissions: contents: write runs-on: ubuntu-latest needs: [build-data] steps: - name: Install Node.js uses: actions/setup-node@v3 with: node-version: 20 - uses: actions/checkout@v3 with: submodules: recursive - name: Setup git run: | git config --global user.email "mauro-balades@users.noreply.github.com" git config --global user.name "mauro-balades" - name: Install pnpm run: npm install -g pnpm - name: Get pnpm store directory id: pnpm-cache shell: bash run: | echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Install dependencies run: pnpm install - name: Load surfer CI setup run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} - name: Download firefox source and dependancies run: pnpm surfer download --verbose - name: Import run: pnpm surfer import --verbose - name: Compress run: | cd engine # -h is used to dereference symlinks tar --use-compress-program=zstd -hcf ../zen.source.tar.gz * cd .. - name: Upload artifact uses: actions/upload-artifact@v4 with: name: zen.source.tar.gz path: ./zen.source.tar.gz #windows-step-1: # name: Windows build step 1 (PGO build) # uses: ./.github/workflows/windows-alpha-build.yml # needs: [build-data] # permissions: # contents: write # with: # build-version: ${{ needs.build-data.outputs.version }} # generate-gpo: true # profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip #windows-step-2: # name: Windows build step 2 (Generate profile data) # uses: ./.github/workflows/windows-profile-build.yml # permissions: # contents: write # needs: [windows-step-1, build-data] # with: # build-version: ${{ needs.build-data.outputs.version }} # profile-data-path-archive: zen.win64-pgo-stage-1.zip windows-step-3: name: Windows build step 3 (build with profile data) uses: ./.github/workflows/windows-alpha-build.yml permissions: contents: write needs: [build-data] with: build-version: ${{ needs.build-data.outputs.version }} generate-gpo: false linux: name: Linux build uses: ./.github/workflows/linux-alpha-build.yml permissions: contents: write needs: [build-data] with: build-version: ${{ needs.build-data.outputs.version }} mac: name: macOS build uses: ./.github/workflows/macos-alpha-build.yml permissions: contents: write needs: [build-data] with: build-version: ${{ needs.build-data.outputs.version }} release: if: ${{ github.event.inputs.create_release == 'true' }} permissions: write-all name: Release needs: [build-data, linux, source, windows-step-3, check-release, mac] runs-on: ubuntu-latest steps: - name: Update repo uses: actions/checkout@v4 - name: Git Pull run: git pull - uses: actions/download-artifact@v4 - name: List run: find . - name: Clone updates repo uses: actions/checkout@v4 with: repository: zen-browser/updates-server path: updates-server token: ${{ secrets.DEPLOY_KEY }} - name: Copy update manifests run: | cd updates-server mkdir -p updates cp -a ../linux_update_manifest/. updates/ cp -a ../windows_update_manifest/. updates/ cp -a ../macos_update_manifest/. updates/ - uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: 🚀 Update update manifests commit_user_name: Zen Browser Robot commit_user_email: zen-browser-bot@users.noreply.github.com repository: ./updates-server - name: release-github uses: 'marvinpinto/action-automatic-releases@latest' with: repo_token: '${{ secrets.DEPLOY_KEY }}' automatic_release_tag: ${{ needs.build-data.outputs.version }} title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})' files: | zen.linux.tar.bz2 zen.win64.zip zen.source.tar.gz linux.mar windows.mar macos.mar zen.installer.exe zen.installer.pretty.exe zen.macos.dmg