Zen Alpha builds #163
Workflow file for this run
This file contains 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
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 | |
run: | | |
pnpm surfer ci --brand alpha --bump prerelease | |
- 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 | |
linux: | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
needs: [build-data, check-release] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- uses: actions/checkout@v3 | |
# Give the runner some swap space in an attempt to stop gkrust from crashing the build | |
- name: Set Swap Space | |
uses: pierotofy/[email protected] | |
with: | |
swap-size-gb: 6 | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "mauro-balades" | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update --fix-missing | |
sudo apt-get update | |
sudo apt-get install dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm | |
pip install pycairo testresources | |
- name: Free up space | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf "/usr/local/share/boost" | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
- name: Install sccache | |
env: | |
LINK: https://github.com/mozilla/sccache/releases/download | |
SCCACHE_VERSION: 0.2.13 | |
run: | | |
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl | |
mkdir -p $HOME/.local/bin | |
curl -L "$LINK/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz | |
mv -f $SCCACHE_FILE/sccache $HOME/.local/bin/sccache | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: Save sccache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: /home/runner/.cache/sccache | |
key: ${{ runner.os }}-sccache | |
- 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 dependencies | |
run: pnpm surfer download | |
- name: Import | |
run: pnpm surfer import | |
- name: Bootstrap | |
run: | | |
cd engine | |
./mach --no-interactive bootstrap --application-choice browser | |
cd .. | |
- name: Build | |
run: | | |
export ZEN_RELEASE=1 | |
pnpm build | |
- name: Package | |
run: pnpm package | |
- name: Rename artifacts | |
run: | | |
mv dist/zen-*.tar.bz2 "zen.linux.tar.bz2" | |
mv dist/output.mar linux.mar | |
- name: Upload binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: zen.linux.tar.bz2 | |
path: ./zen.linux.tar.bz2 | |
- name: Upload mar | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux.mar | |
path: ./linux.mar | |
- name: Upload update manifests | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux_update_manifest | |
path: ./dist/update | |
windows: | |
runs-on: ubuntu-latest | |
needs: [build-data, check-release] | |
steps: | |
- name: Install Node.js and pnpm | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- uses: actions/checkout@v3 | |
# Give the runner some swap space in an attempt to stop gkrust from crashing the build | |
- name: Set Swap Space | |
uses: pierotofy/[email protected] | |
with: | |
swap-size-gb: 6 | |
- name: Install pnpm | |
run: npm install -g pnpm | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "mauro-balades" | |
- name: Install dependencies | |
run: | | |
pnpm i | |
- name: Load surfer CI setup | |
run: pnpm surfer ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download | |
run: pnpm surfer download | |
- name: Free up space | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf "/usr/local/share/boost" | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
- name: Setup For Windows | |
run: | | |
set -x | |
mkdir -p ~/win-cross | |
cd engine/ | |
echo Setup wine | |
aria2c "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-1.toolchains.v3.linux64-wine.latest/artifacts/public%2Fbuild%2Fwine.tar.zst" -o wine.tar.zst | |
tar --zstd -xvf wine.tar.zst -C ~/win-cross | |
rm wine.tar.zst | |
echo Setup Visual Studio | |
sudo apt install -y msitools python3-pip | |
./mach python --virtualenv build taskcluster/scripts/misc/get_vs.py build/vs/vs2022.yaml ~/win-cross/vs2022 | |
chmod -R +x "$(echo ~)/win-cross/vs2022" || true | |
cat ../.github/workflows/src/windows_mozconfig >> ../configs/common/mozconfig | |
cd .. | |
npm install -g pnpm | |
export SURFER_PLATFORM="win32" | |
pnpm surfer bootstrap | |
cd engine/ | |
ls ~/.mozbuild/clang/lib/clang/ | |
echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig | |
cat ../configs/common/mozconfig | |
ls ~/win-cross/wine || true | |
ls ~/win-cross/vs2022 || true | |
- name: setup Rust | |
run: | | |
cd engine/ | |
# Install a rust version compatible with 17 | |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.76 | |
source $HOME/.cargo/env | |
rustup target add x86_64-pc-windows-msvc | |
cargo install cargo-download | |
cargo download -x windows=0.52.0 | |
#? https://github.com/mozilla/sccache#known-caveats | |
export CARGO_INCREMENTAL=0 | |
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.52.0" >> ../configs/common/mozconfig | |
- name: Import | |
run: pnpm surfer import --verbose | |
- name: Build | |
run: | | |
unset SURFER_PLATFORM | |
export ZEN_RELEASE=1 | |
export ZEN_CROSS_COMPILING=1 | |
pnpm build | |
- name: Package | |
run: | | |
set -x | |
export SURFER_PLATFORM="win32" | |
pnpm package | |
mv ./dist/output.mar windows.mar | |
mv ./dist/zen-$(pnpm surfer get version | xargs).en-US.win64.zip zen.win64.zip | |
ls ./dist | |
ls . | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: zen.win64.zip | |
path: ./zen.win64.zip | |
- name: Upload mar | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows.mar | |
path: ./windows.mar | |
- name: Upload installer | |
uses: actions/upload-artifact@v3 | |
with: | |
name: zen.installer.exe | |
path: ./dist/zen.installer.exe | |
- name: Upload installer stub | |
uses: actions/upload-artifact@v3 | |
with: | |
name: zen.installer.pretty.exe | |
path: ./dist/zen.installer.pretty.exe | |
- name: Upload update manifests | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows_update_manifest | |
path: ./dist/update | |
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@v2 | |
with: | |
name: zen.source.tar.gz | |
path: ./zen.source.tar.gz | |
mac: | |
runs-on: macos-14 | |
needs: [build-data, check-release] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- uses: actions/checkout@v3 | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "mauro-balades" | |
- name: Install system dependencies | |
run: | | |
brew install cairo sccache gnu-tar mercurial | |
sudo pip install setuptools | |
- name: Force usage fo gnu-tar | |
run: | | |
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile | |
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh | |
source ~/.bash_profile | |
- name: Save sccache | |
uses: actions/cache@v3 | |
continue-on-error: false | |
with: | |
path: ~/Library/Caches/Mozilla.sccache | |
key: ${{ runner.os }}-sccache | |
- 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 | |
- name: Import | |
run: pnpm surfer import | |
- name: Bootstrap | |
run: | | |
cd engine | |
./mach --no-interactive bootstrap --application-choice browser | |
cd .. | |
- name: surfer build | |
run: | | |
export ZEN_RELEASE=1 | |
pnpm build --verbose | |
- name: Package | |
run: pnpm package | |
- name: Rename artifacts | |
run: | | |
mv ./dist/*.dmg "zen.macos.dmg" | |
mv ./dist/output.mar macos.mar | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: zen.macos.dmg | |
path: ./zen.macos.dmg | |
- name: Upload mar | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos.mar | |
path: ./macos.mar | |
- name: Upload update manifests | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos_update_manifest | |
path: ./dist/update | |
release: | |
if: ${{ github.event.inputs.create_release == 'true' }} | |
permissions: write-all | |
name: Release | |
needs: [build-data, linux, source, windows, check-release, mac] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Update repo | |
uses: actions/checkout@v3 | |
- name: Git Pull | |
run: git pull | |
- uses: actions/download-artifact@v3 | |
- 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 | |
- name: List | |
run: find . | |
- name: Clone updates repo | |
uses: actions/checkout@v3 | |
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 | |
distro-flatpak: | |
name: Build flatpak repos | |
needs: [release] | |
runs-on: ubuntu-latest | |
container: | |
image: bilelmoussaoui/flatpak-github-actions:gnome-44 | |
options: --privileged | |
if: ${{ github.event.inputs.create_release == 'true' && false }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: zen-browser/flatpak | |
token: ${{ secrets.DEPLOY_KEY }} | |
submodules: recursive | |
- name: Ensure repo is on main branch | |
run: | | |
cd flatpak | |
git checkout main | |
git pull | |
- uses: flatpak/flatpak-github-actions/flatpak-builder@v6 | |
with: | |
bundle: org.zen.browser.flatpak | |
manifest-path: flatpak/org.zen.browser.flatpak.json | |
cache-key: flatpak-builder-${{ github.sha }} | |
- name: Upload flatpak repo | |
uses: actions/upload-artifact@v3 | |
with: | |
name: flatpak-repo | |
path: flatpak/repo |