mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-05 19:08:18 +00:00
456 lines
14 KiB
YAML
456 lines
14 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@v4
|
|
with:
|
|
submodules: recursive
|
|
token: ${{ secrets.DEPLOY_KEY }}
|
|
|
|
- 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
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
token: ${{ secrets.DEPLOY_KEY }}
|
|
|
|
- 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:
|
|
if: false
|
|
permissions:
|
|
contents: write
|
|
runs-on: ubuntu-latest
|
|
needs: [build-data, check-release]
|
|
environment: production
|
|
steps:
|
|
- name: Install Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 20
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
token: ${{ secrets.DEPLOY_KEY }}
|
|
|
|
- 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
|
|
# secrets: inherit
|
|
# 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
|
|
# secrets: inherit
|
|
# 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
|
|
secrets: inherit
|
|
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
|
|
secrets: inherit
|
|
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
|
|
secrets: inherit
|
|
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
|
|
with:
|
|
submodules: recursive
|
|
token: ${{ secrets.DEPLOY_KEY }}
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
npm install -g pnpm
|
|
sudo apt-get update
|
|
sudo apt-get -y install libfuse2 desktop-file-utils
|
|
|
|
- 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/appimagetool/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 zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 10 \
|
|
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync" \
|
|
"$APPDIR" zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
|
mkdir dist
|
|
mv zen*AppImage* dist/.
|
|
|
|
- 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, windows-step-3, check-release, mac, appimage]
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
token: ${{ secrets.DEPLOY_KEY }}
|
|
|
|
- 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: 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 }}
|
|
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
|
|
|
|
|