This repository has been archived by the owner on Sep 30, 2024. It is now read-only.
Alpha builds #294
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: Alpha builds | |
on: | |
workflow_dispatch: | |
jobs: | |
build-data: | |
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: 16 | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
token: ${{ secrets.ROBOT_TOKEN }} | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 7 | |
run_install: false | |
- 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 gluon | |
run: | | |
npm i -g gluon-build@next | |
- name: Bump version | |
run: | | |
pnpm gluon ci --brand alpha --bump prerelease | |
- name: Debug | |
run: | | |
gluon get version | |
gluon get version | xargs | |
echo "$(gluon get version | xargs)" | |
- name: Export release date | |
id: data | |
shell: bash | |
run: | | |
echo "builddate=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT | |
echo "version=$(gluon get version | xargs)" >> $GITHUB_OUTPUT | |
- uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: 🔖 Update version to ${{ steps.data.outputs.version }} | |
commit_user_name: Fushra Robot | |
commit_user_email: [email protected] | |
linux: | |
runs-on: ubuntu-latest | |
needs: [build-data] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
# 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 "TrickyPR" | |
- 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 | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 7 | |
run_install: false | |
- 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 gluon CI setup | |
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download firefox source and dependencies | |
run: pnpm download | |
- name: Import | |
run: pnpm imp | |
- 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/pulse-browser-*.tar.bz2 "pulse-browser.linux.tar.bz2" | |
mv dist/output.mar linux.mar | |
- name: Upload binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pulse-browser.linux.tar.bz2 | |
path: ./pulse-browser.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 | |
mac: | |
runs-on: macos-13 | |
needs: [build-data] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "TrickyPR" | |
- name: Install system dependencies | |
run: | | |
brew install cairo sccache gnu-tar mercurial | |
- 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 | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 7 | |
run_install: false | |
- 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 gluon CI setup | |
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download firefox source and dependancies | |
run: pnpm download | |
- name: Import | |
run: pnpm imp | |
- name: Bootstrap | |
run: | | |
cd engine | |
./mach --no-interactive bootstrap --application-choice browser | |
cd .. | |
- name: Gluon build | |
run: pnpm build --verbose | |
- name: Package | |
run: pnpm gluon package | |
- name: Rename artifacts | |
run: | | |
mv ./dist/*.dmg "pulse-browser.macos.dmg" | |
mv ./dist/output.mar macos.mar | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pulse-browser.macos.dmg | |
path: ./pulse-browser.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 | |
source: | |
runs-on: ubuntu-latest | |
needs: [build-data] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "TrickyPR" | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 7 | |
run_install: false | |
- 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 gluon CI setup | |
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download firefox source and dependancies | |
run: pnpm download --verbose | |
- name: Import | |
run: pnpm imp --verbose | |
- name: Compress | |
run: | | |
cd engine | |
# -h is used to dereference symlinks | |
tar --use-compress-program=zstd -hcf ../pulse-browser.source.tar.gz * | |
cd .. | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: pulse-browser.source.tar.gz | |
path: ./pulse-browser.source.tar.gz | |
windows: | |
runs-on: tricky-win | |
needs: [build-data] | |
steps: | |
- uses: trickypr/checkout@main | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: | | |
pnpm i | |
- name: Load gluon CI setup | |
run: pnpm gluon ci --brand alpha --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download | |
run: pnpm download | |
- name: Import | |
run: pnpm imp | |
- name: Build | |
shell: powershell.exe C:\mozilla-build\start-shell.bat "{0}" | |
run: | | |
cd /c/actions-runner/_work/browser/browser # mozillabuild defaults to ~ | |
pnpm build --skip-patch-check | |
- name: Package | |
shell: powershell.exe C:\mozilla-build\start-shell.bat "{0}" | |
run: | | |
cd /c/actions-runner/_work/browser/browser # mozillabuild defaults to ~ | |
pnpm package | |
mv ./dist/output.mar windows.mar | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pulse-browser.installer.exe | |
path: ./dist/pulse-browser.installer.exe | |
- 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 | |
release: | |
name: Release | |
needs: [build-data, linux, source, mac, windows] | |
runs-on: ubuntu-latest | |
if: ${{ github.ref == 'refs/heads/alpha' }} | |
steps: | |
- uses: actions/download-artifact@v3 | |
- name: release-github | |
uses: 'marvinpinto/action-automatic-releases@latest' | |
with: | |
repo_token: '${{ secrets.GITHUB_TOKEN }}' | |
automatic_release_tag: ${{ needs.build-data.outputs.version }} | |
prerelease: true | |
title: 'Alpha build' | |
files: | | |
pulse-browser.linux.tar.bz2 | |
pulse-browser.source.tar.gz | |
pulse-browser.macos.dmg | |
pulse-browser.installer.exe | |
windows.mar | |
macos.mar | |
linux.mar | |
- name: List | |
run: find . | |
- name: Checkout tools repo | |
uses: actions/checkout@v3 | |
with: | |
repository: pulse-browser/updates | |
path: updates | |
token: ${{ secrets.ROBOT_TOKEN }} | |
- name: Copy update manifests | |
run: | | |
mkdir -p updates/updates | |
cp -a macos_update_manifest/. updates/updates/ | |
cp -a linux_update_manifest/. updates/updates/ | |
cp -a windows_update_manifest/. updates/updates/ | |
- uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: 🔖 Upload update manifests ${{ needs.build-data.outputs.version }} | |
commit_user_name: Fushra Robot | |
commit_user_email: [email protected] | |
repository: ./updates | |
distro-flatpak: | |
name: Build flatpak repos | |
needs: [build-data, release] | |
runs-on: ubuntu-latest | |
if: ${{ github.ref == 'refs/heads/alpha' }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: pulse-browser/packages | |
token: ${{ secrets.ROBOT_TOKEN }} | |
submodules: recursive | |
- name: Ensure repo is on main branch | |
run: | | |
cd repo | |
git checkout main | |
git pull | |
- name: Install flatpak builder | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y flatpak-builder | |
- name: Install build dependancies | |
run: | | |
sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | |
sudo flatpak install flathub org.freedesktop.Platform//22.08 org.freedesktop.Sdk//22.08 org.mozilla.firefox.BaseApp//22.08 -y | |
- name: Import GPG keys | |
run: | | |
mkdir ~/.gpg | |
echo -n "$GPG_SIGNING_KEY" | base64 --decode | gpg --import --homedir ~/.gpg | |
env: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
- name: Build flatpak | |
run: | | |
cd flatpak | |
./build.sh alpha | |
- name: Upload flatpak repo | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: 📦 Upload flatpak for ${{ needs.build-data.outputs.version }} | |
commit_user_name: Fushra Robot | |
commit_user_email: [email protected] | |
repository: ./repo | |
- name: Update repo version in package | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
commit_message: 📦 Upload flatpak for ${{ needs.build-data.outputs.version }} | |
commit_user_name: Fushra Robot | |
commit_user_email: [email protected] | |
repository: . |