Zen Alpha builds #375
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 | |
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, check-release] | |
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 }} | |
appimage: | |
name: AppImage build - Linux ${{ matrix.generic == true && 'generic' || 'specific' }} | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
generic: [true, false] | |
needs: [linux] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
npm install -g pnpm | |
sudo apt-get update | |
sudo apt-get -y install libfuse2 | |
- name: Download linux build | |
uses: actions/download-artifact@v4 | |
with: | |
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2 | |
- name: Execute AppImage build | |
run: | | |
set -eux | |
rm AppDir/.DirIcon || true | |
cp configs/branding/alpha/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png | |
cp configs/branding/alpha/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon | |
APPDIR=AppDir | |
tar -xvf *.tar.* && rm -rf *.tar.* | |
mv zen/* $APPDIR/ | |
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage | |
chmod +x *.AppImage | |
chmod +x ./AppDir/AppRun | |
echo "AppDir: $APPDIR" | |
ls -al | |
find . | |
ls -al "$APPDIR" | |
ARCH=x86_64 ./appimagetool-x86_64.AppImage --comp gzip "$APPDIR" zen.AppImage | |
mkdir dist | |
mv zen.AppImage* dist/. | |
mv ./dist/zen.AppImage ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage | |
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage | |
release: | |
if: ${{ github.event.inputs.create_release == 'true' }} | |
permissions: write-all | |
name: Release | |
needs: [build-data, linux, source, windows-step-3, check-release, mac, appimage] | |
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_generic/. updates/ | |
cp -a ../linux_update_manifest_specific/. updates/ | |
cp -a ../windows_update_manifest_generic/. updates/ | |
cp -a ../windows_update_manifest_specific/. updates/ | |
cp -a ../macos_update_manifest_aarch64/. updates/ | |
cp -a ../macos_update_manifest_x64/. 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 }} | |
prerelease: false | |
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})' | |
files: | | |
zen.source.tar.gz | |
zen.linux-generic.tar.bz2 | |
zen.linux-specific.tar.bz2 | |
zen-generic.AppImage | |
zen-specific.AppImage | |
zen.win-generic.zip | |
zen.win-specific.zip | |
linux.mar | |
linux-generic.mar | |
windows.mar | |
windows-generic.mar | |
macos-x64.mar | |
macos-aarch64.mar | |
zen.installer.exe | |
zen.installer-generic.exe | |
zen.macos-x64.dmg | |
zen.macos-aarch64.dmg | |
release-flatpak: | |
if: ${{ github.event.inputs.create_release == 'true' }} | |
permissions: write-all | |
name: Release Flatpak | |
needs: [release, linux, build-data] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Clone flatpak repo | |
uses: actions/checkout@v4 | |
with: | |
repository: flathub/io.github.zen_browser.zen | |
token: ${{ secrets.DEPLOY_KEY }} | |
- name: Download linux generic build | |
uses: actions/download-artifact@v4 | |
with: | |
name: zen.linux-generic.tar.bz2 | |
- name: Update repo | |
uses: actions/checkout@v4 | |
with: | |
path: zen-browser | |
token: ${{ secrets.DEPLOY_KEY }} | |
- name: Download flatpak archive | |
run: | | |
wget https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar -O archive.tar | |
- name: Setup git | |
run: | | |
git config --global user.name "github-actions[bot]" | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
- name: Prepare flatpak manifest | |
run: | | |
python3 ./zen-browser/scripts/prepare-flatpak-release.py \ | |
--flatpak-archive archive.tar \ | |
--version ${{ needs.build-data.outputs.version }} \ | |
--linux-archive zen.linux-generic.tar.bz2 \ | |
--output io.github.zen_browser.zen.yml \ | |
--template-root ./zen-browser/flatpak | |
- name: Commit changes | |
run: | | |
git add io.github.zen_browser.zen.yml | |
git commit -m "Update to version ${{ needs.build-data.outputs.version }}" | |
- name: Clean up | |
run: | | |
rm -rf zen-browser | |
rm -rf archive.tar | |
rm -rf zen.linux-generic.tar.bz2 | |
- name: Upload flatpak manifest | |
uses: actions/upload-artifact@v4 | |
with: | |
name: io.github.zen_browser.zen.yml | |
path: ./io.github.zen_browser.zen.yml | |
- name: Create pull request | |
uses: peter-evans/create-pull-request@v6 | |
env: | |
GIT_TRACE: 1 | |
GIT_CURL_VERBOSE: 1 | |
with: | |
token: ${{ secrets.DEPLOY_KEY }} | |
commit-message: 🚀 Update to version ${{ needs.build-data.outputs.version }} | |
title: 🚀 Update to version ${{ needs.build-data.outputs.version }} | |
body: | | |
This PR updates the Zen Browser Flatpak package to version ${{ needs.build-data.outputs.version }}. | |
@mauro-balades | |
branch: update-to-${{ needs.build-data.outputs.version }} | |
base: master | |
git-token: ${{ secrets.DEPLOY_KEY }} | |
delete-branch: true | |