fix: More migration tests and related fixes #1350
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: Firefox | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: ["main"] | |
types: [opened, synchronize, reopened, ready_for_review] | |
paths-ignore: ["*.md", "*.png", "*.svg", "LICENSE-*"] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
env: | |
FIREFOX: Firefox | |
jobs: | |
firefox: | |
name: Build Firefox | |
if: github.event.pull_request.draft == false | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
type: [debug, release] | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash | |
env: | |
MOZBUILD_STATE_PATH: ${{ github.workspace }}/mozbuild | |
CARGO_HOME: ${{ github.workspace }}/cargo | |
steps: | |
- name: Check out Neqo | |
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
- name: Maximize build space | |
if: runner.os == 'Linux' | |
run: | | |
sudo rm -rf /usr/local/lib/android || true | |
sudo rm -rf /usr/share/dotnet || true | |
sudo rm -rf /opt/ghc || true | |
sudo rm -rf /usr/local/.ghcup || true | |
sudo apt-get remove -y '^aspnetcore-.*' '^dotnet-.*' '^llvm-.*' 'php.*' '^mongodb-.*' '^mysql-.*' \ | |
azure-cli google-chrome-stable firefox powershell mono-devel libgl1-mesa-dri google-cloud-sdk \ | |
google-cloud-cli --fix-missing --quiet || true | |
sudo apt-get autoremove -y || true | |
sudo apt-get clean || true | |
sudo docker image prune --all --force || true | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true | |
df -h | |
- name: Check out Firefox | |
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
with: | |
repository: mozilla/gecko-dev | |
path: mozilla-unified | |
- name: Install deps (Windows) | |
if: runner.os == 'Windows' | |
run: choco install -y mozillabuild --version 4.0.2 | |
- name: Install Rust | |
uses: ./.github/actions/rust | |
with: | |
version: stable | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Bootstrap Firefox | |
run: | | |
cd mozilla-unified | |
{ | |
echo "mk_add_options MOZ_OBJDIR=../$FIREFOX" | |
echo "ac_add_options --with-ccache=sccache" | |
echo "ac_add_options --enable-application=browser" | |
# Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1894031 | |
if [ "${{ runner.os }}" != "Windows" ] || [ "${{ matrix.type}}" != "debug" ]; then | |
echo "ac_add_options --disable-tests" | |
fi | |
echo "ac_add_options --enable-${{ matrix.type }}" | |
} >> mozconfig | |
./mach bootstrap --application-choice browser | |
- name: Plumb in Neqo | |
run: | | |
# Get qlog version used by neqo | |
cargo generate-lockfile | |
QLOG_VERSION=$(cargo pkgid qlog | cut -d@ -f2) | |
rm Cargo.lock | |
cd mozilla-unified | |
{ | |
echo '[[audits.qlog]]' | |
echo 'who = "CI"' | |
echo 'criteria = "safe-to-deploy"' | |
echo "version = \"$QLOG_VERSION\"" | |
} >> supply-chain/audits.toml | |
sed -i'' -e "s/qlog =.*/qlog = \"$QLOG_VERSION\"/" netwerk/socket/neqo_glue/Cargo.toml | |
{ | |
echo '[patch."https://github.com/mozilla/neqo"]' | |
echo 'neqo-http3 = { path = "../neqo-http3" }' | |
echo 'neqo-transport = { path = "../neqo-transport" }' | |
echo 'neqo-common = { path = "../neqo-common" }' | |
echo 'neqo-qpack = { path = "../neqo-qpack" }' | |
echo 'neqo-crypto = { path = "../neqo-crypto" }' | |
} >> Cargo.toml | |
cargo update neqo-http3 neqo-transport neqo-common neqo-qpack neqo-crypto | |
./mach vendor rust --ignore-modified | |
- name: Build Firefox | |
env: | |
NAME: ${{ runner.os == 'macOS' && 'Nightly' || 'bin' }} | |
TYPE: ${{ runner.os == 'macOS' && matrix.type == 'debug' && 'Debug' || '' }} | |
EXT: ${{ runner.os == 'macOS' && '.app' || '' }} | |
run: | | |
cd mozilla-unified | |
# Work around "ERROR: WINDOWSSDKDIR cannot be set when using the bootstrapped WINSYSROOT" | |
# (Capitalization "WindowsSdkDir" matters) | |
[ "${{ runner.os }}" == "Windows" ] && unset WindowsSdkDir | |
./mach build && tar -cf "../$FIREFOX.tar" -C "../$FIREFOX/dist" "$NAME$TYPE$EXT" | |
- name: Export binary | |
id: upload | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: ${{ runner.os }}-${{ env.FIREFOX }}-${{ matrix.type }}.tgz | |
path: ${{ env.FIREFOX }}.tar | |
compression-level: 9 | |
- run: echo "${{ steps.upload.outputs.artifact-url }}" >> artifact | |
- name: Export artifact URL | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: artifact-${{ runner.os }}-${{ env.FIREFOX }}-${{ matrix.type }} | |
path: artifact | |
retention-days: 1 | |
comment: | |
name: Comment on PR | |
if: github.event.pull_request.draft == false | |
needs: firefox | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1 | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
pattern: 'artifact-*' | |
path: artifacts | |
- run: | | |
{ | |
echo "### Firefox builds for this PR" | |
echo "The following builds are available for testing. Crossed-out builds did not succeed." | |
for os in Linux macOS Windows; do | |
echo -n "* **$os**:" | |
for type in debug release; do | |
artifact="artifacts/artifact-$os-${{ env.FIREFOX }}-$type/artifact" | |
if [ -e "$artifact" ]; then | |
echo -n " [${type^}]($(cat $artifact))" | |
else | |
echo -n " ~~${type^}~~" | |
fi | |
done | |
echo | |
done | |
} > comment.md | |
cat comment.md > "$GITHUB_STEP_SUMMARY" | |
- uses: ./.github/actions/pr-comment-data-export | |
with: | |
name: ${{ github.workflow }} | |
contents: comment.md |