Skip to content

Zen Alpha builds

Zen Alpha builds #314

Workflow file for this run

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: [email protected]
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 "[email protected]"
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: [email protected]
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