Dev builds #116
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: Dev builds | |
on: | |
workflow_dispatch: | |
inputs: | |
bumpVersion: | |
type: boolean | |
description: Bump version before building | |
default: true | |
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@v4 | |
with: | |
submodules: recursive | |
token: ${{ secrets.ROBOT_TOKEN }} | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 8 | |
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', '*/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 | |
if: ${{ inputs.bumpVersion }} | |
run: | | |
pnpm gluon ci --brand dev --bump prerelease | |
- name: Brand | |
if: ${{ !inputs.bumpVersion }} | |
run: | | |
pnpm gluon ci --brand dev | |
- 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: Jadua Studios Bot | |
commit_user_email: [email protected] | |
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 "Jadua1010" | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 8 | |
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', '*/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 dev --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download firefox source and dependencies | |
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 ../jadua-go-browser.source.tar.gz . | |
cd .. | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: jadua-go-browser.source.tar.gz | |
path: ./jadua-go-browser.source.tar.gz | |
linux: | |
runs-on: ubuntu-latest | |
needs: [source, 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 "Jadua1010" | |
- 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: 8 | |
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', '*/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 dev --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download source | |
uses: actions/download-artifact@v3 | |
with: | |
name: jadua-go-browser.source.tar.gz | |
- name: Unpack source | |
shell: bash | |
run: | | |
rm -rf engine | |
mkdir engine | |
tar -xf jadua-go-browser.source.tar.gz -C ./engine | |
- name: Bootstrap | |
run: | | |
cd engine | |
./mach --no-interactive bootstrap --application-choice browser | |
cd .. | |
- name: Gluon build | |
run: pnpm build --verbose --skip-patch-check | |
- name: Package | |
run: pnpm package | |
- name: Rename artifacts | |
run: | | |
mv dist/jadua-go-browser-*.tar.bz2 "jadua-go-browser.linux.tar.bz2" | |
mv dist/output.mar linux.mar | |
- name: Upload binary | |
uses: actions/upload-artifact@v3 | |
with: | |
name: jadua-go-browser.linux.tar.bz2 | |
path: ./jadua-go-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: [source, build-data] | |
steps: | |
- name: Install Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.11" | |
- name: Setup git | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "Jadua1010" | |
- name: Install system dependencies | |
continue-on-error: false | |
run: | | |
brew link --overwrite python3 | |
brew update | |
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 | |
- uses: pnpm/action-setup@v2 | |
name: Install pnpm | |
id: pnpm-install | |
with: | |
version: 8 | |
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', '*/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 dev --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download source | |
uses: actions/download-artifact@v3 | |
with: | |
name: jadua-go-browser.source.tar.gz | |
- name: Unpack source | |
shell: bash | |
run: | | |
rm -rf engine | |
mkdir engine | |
tar -xf jadua-go-browser.source.tar.gz -C ./engine | |
- name: Remove bad python files | |
continue-on-error: true | |
run: | | |
rm '/usr/local/bin/2to3' | |
rm '/usr/local/bin/2to3-3.11' | |
rm '/usr/local/bin/idle3' | |
rm '/usr/local/bin/idle3.11' | |
rm '/usr/local/bin/pydoc3' | |
rm '/usr/local/bin/pydoc3.11' | |
rm '/usr/local/bin/python3.11' | |
rm '/usr/local/bin/python3' | |
rm '/usr/local/bin/python3-config' | |
rm '/usr/local/bin/python3.11-config' | |
rm '/usr/local/bin/2to3-3.12' | |
rm '/usr/local/bin/idle3.12' | |
rm '/usr/local/bin/pydoc3.12' | |
rm '/usr/local/bin/python3.12-config' | |
rm '/usr/local/bin/python3.12' | |
- name: Bootstrap | |
run: | | |
cd engine | |
./mach --no-interactive bootstrap --application-choice browser | |
cd .. | |
- name: Gluon build | |
run: pnpm build --verbose --skip-patch-check | |
- name: Package | |
run: pnpm gluon package | |
- name: Rename artifacts | |
run: | | |
mv ./dist/*.dmg "jadua-go-browser.macos.dmg" | |
mv ./dist/output.mar macos.mar | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: jadua-go-browser.macos.dmg | |
path: ./jadua-go-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 | |
windows: | |
runs-on: jaduafast-win | |
needs: [build-data] | |
steps: | |
- uses: trickypr/checkout@main | |
with: | |
submodules: recursive | |
- name: Install dependencies | |
run: | | |
npm i | |
- name: Setup gluon | |
run: | | |
npm i -g gluon-build@next | |
- name: Load gluon CI setup | |
run: gluon ci --brand dev --display-version ${{ needs.build-data.outputs.version }} | |
- name: Download | |
run: gluon download | |
- name: Set brand to dev | |
run: gluon set brand dev | |
- name: Import | |
run: gluon import | |
continue-on-error: true | |
- name: Reset because possible fail | |
run: ECHO 'Y' | gluon reset | |
- name: Redownload addons | |
run: gluon download | |
- name: Import 2nd try | |
run: gluon import | |
- name: Bootstrap | |
shell: powershell.exe E:\Development\MozillaBuild\start-shell.bat "{0}" | |
run: | | |
cd /e/actions-runner/_work/JaduaGoBrowser/JaduaGoBrowser # mozillabuild defaults to ~ | |
gluon bootstrap | |
- name: Build | |
shell: powershell.exe E:\Development\MozillaBuild\start-shell.bat "{0}" | |
run: | | |
cd /e/actions-runner/_work/JaduaGoBrowser/JaduaGoBrowser # mozillabuild defaults to ~ | |
gluon build --skip-patch-check | |
- name: Package | |
shell: powershell.exe E:\Development\MozillaBuild\start-shell.bat "{0}" | |
continue-on-error: true | |
run: | | |
cd /e/actions-runner/_work/JaduaGoBrowser/JaduaGoBrowser # mozillabuild defaults to ~ | |
gluon package | |
mv ./dist/output.mar windows.mar | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: jadua-go-browser.installer.exe | |
path: ./dist/jadua-go-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 | |
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: false | |
title: 'Dev build: ${{ needs.build-data.outputs.version }}' | |
files: | | |
jadua-go-browser.linux.tar.bz2 | |
jadua-go-browser.source.tar.gz | |
jadua-go-browser.macos.dmg | |
jadua-go-browser.installer.exe | |
windows.mar | |
macos.mar | |
linux.mar | |
- name: List | |
run: find . | |
- name: Checkout tools repo | |
uses: actions/checkout@v3 | |
with: | |
repository: JaduaStudios/GoUpdates | |
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: Jadua Studios Bot | |
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/dev' }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: JaduaStudios/GoPackages | |
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: Jadua Studios Bot | |
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: Jadua Studios Bot | |
commit_user_email: [email protected] | |
repository: . |