mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
603 lines
17 KiB
YAML
603 lines
17 KiB
YAML
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
|
|
|
|
- uses: actions/cache@v3
|
|
name: Setup pnpm cache
|
|
with:
|
|
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pnpm-store-
|
|
|
|
- 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: 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
|
|
|
|
- uses: actions/cache@v3
|
|
name: Setup pnpm cache
|
|
with:
|
|
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pnpm-store-
|
|
|
|
- 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/set-swap-space@v1.0
|
|
with:
|
|
swap-size-gb: 6
|
|
|
|
- name: Setup git
|
|
run: |
|
|
git config --global user.email "mauro-balades@users.noreply.github.com"
|
|
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: Disable wasm sandboxing for the sake of my sanity
|
|
run: |
|
|
echo "ac_add_options --without-wasm-sandboxed-libraries" >> mozconfig
|
|
|
|
- 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
|
|
|
|
- uses: actions/cache@v3
|
|
name: Setup pnpm cache
|
|
with:
|
|
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pnpm-store-
|
|
|
|
- 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: 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/set-swap-space@v1.0
|
|
with:
|
|
swap-size-gb: 6
|
|
|
|
- name: Install pnpm
|
|
run: npm install -g pnpm
|
|
|
|
- name: Setup git
|
|
run: |
|
|
git config --global user.email "mauro-balades@users.noreply.github.com"
|
|
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: Disable wasm sandboxing for the sake of my sanity
|
|
run: |
|
|
cd engine/
|
|
echo "ac_add_options --without-wasm-sandboxed-libraries" >> mozconfig
|
|
|
|
- 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
|
|
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/nsis || 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: pnpm build
|
|
|
|
- name: Package
|
|
run: |
|
|
set -x
|
|
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.installer.exe
|
|
# path: ./dist/zen.installer.exe
|
|
|
|
- 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 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 "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@v2
|
|
with:
|
|
name: zen.source.tar.gz
|
|
path: ./zen.source.tar.gz
|
|
|
|
mac:
|
|
if: false
|
|
runs-on: macos-13
|
|
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 "mauro-balades@users.noreply.github.com"
|
|
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
|
|
|
|
- uses: actions/cache@v3
|
|
name: Setup pnpm cache
|
|
with:
|
|
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pnpm-store-
|
|
|
|
- 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: 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]
|
|
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
|
|
|
|
- name: List
|
|
run: find .
|
|
|
|
- name: Clone updates repo
|
|
run: git clone https://github.com/zen-browser/updates-server.git
|
|
|
|
- name: Copy update manifests
|
|
run: |
|
|
cd updates-server
|
|
mkdir -p updates
|
|
cp -a ../linux_update_manifest/. updates/
|
|
cp -a ../windows_update_manifest/. updates/
|
|
|
|
- name: Setup git
|
|
run: |
|
|
git config --global user.email "mauro-balades@users.noreply.github.com"
|
|
git config --global user.name "mauro-balades"
|
|
|
|
- name: Commit update manifests
|
|
run: |
|
|
cd updates-server
|
|
git add .
|
|
git commit -m "Update manifests for ${{ needs.build-data.outputs.version }}"
|
|
git push
|
|
|