Skip to content

Dev builds

Dev builds #116

Workflow file for this run

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: .