104 lines
3.3 KiB
YAML
104 lines
3.3 KiB
YAML
name: Test extension builder Dockerfile
|
|
|
|
on:
|
|
#Run weekly every Thursday (one day before AMO submission)
|
|
schedule:
|
|
- cron: "0 2 * * 5"
|
|
|
|
#Allow for manual tests if needed
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
test-dockerfile:
|
|
name: Test the Dockerfile
|
|
runs-on: ubuntu-22.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Rust toolchain
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
toolchain: stable
|
|
targets: wasm32-unknown-unknown
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "20"
|
|
registry-url: https://registry.npmjs.org
|
|
|
|
- name: Install wasm-bindgen
|
|
run: cargo install wasm-bindgen-cli --version 0.2.92
|
|
|
|
# Keep the version number in sync in all workflows,
|
|
# and in the extension builder Dockerfile!
|
|
- name: Install wasm-opt
|
|
uses: sigoden/install-binary@v1
|
|
with:
|
|
repo: WebAssembly/binaryen
|
|
tag: version_118
|
|
name: wasm-opt
|
|
|
|
- name: Install fclones
|
|
run: cargo install fclones
|
|
|
|
- name: Install node packages
|
|
working-directory: web
|
|
shell: bash -l {0}
|
|
run: npm ci
|
|
|
|
- name: Seal version data
|
|
shell: bash -l {0}
|
|
working-directory: web
|
|
env:
|
|
ENABLE_VERSION_SEAL: "true"
|
|
run: npm run version-seal
|
|
|
|
- name: Build web normally
|
|
working-directory: web
|
|
shell: bash -l {0}
|
|
env:
|
|
CARGO_FEATURES: jpegxr
|
|
WASM_SOURCE: cargo_and_store
|
|
run: npm run build:repro
|
|
|
|
- name: Build Docker image with Ruffle in it
|
|
run: docker build --tag ruffle-web-docker -f web/docker/Dockerfile .
|
|
|
|
- name: Copy extensions out of Docker image
|
|
run: docker cp $(docker create ruffle-web-docker:latest):/ruffle/web/packages web/docker/docker_builds/packages
|
|
|
|
- name: Check that the Firefox extension was built
|
|
run: test -f web/docker/docker_builds/packages/extension/dist/firefox_unsigned.xpi
|
|
|
|
- name: Compare the two extensions
|
|
run: |
|
|
mkdir firefox_extensions
|
|
mkdir firefox_extensions/docker_build
|
|
mkdir firefox_extensions/normal_build
|
|
unzip -d firefox_extensions/normal_build "./web/packages/extension/dist/firefox_unsigned.xpi"
|
|
unzip -d firefox_extensions/docker_build "./web/docker/docker_builds/packages/extension/dist/firefox_unsigned.xpi"
|
|
fclones group --unique firefox_extensions/normal_build firefox_extensions/docker_build -o result.txt -f fdupes
|
|
fclones group --unique firefox_extensions/normal_build firefox_extensions/docker_build -o firefox_extensions/differences.txt
|
|
cat result.txt
|
|
|
|
- name: Check that the comparison was identical
|
|
run: test ! -s result.txt
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v4
|
|
if: ${{ always() }}
|
|
with:
|
|
name: result
|
|
path: firefox_extensions/
|
|
|
|
- name: Notify Discord
|
|
uses: th0th/notify-discord@v0.4.1
|
|
if: ${{ always() && github.repository == 'ruffle-rs/ruffle' }}
|
|
env:
|
|
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_UPDATES }}
|
|
GITHUB_ACTOR: ${{ github.actor }}
|
|
GITHUB_JOB_NAME: "Build extension via Dockerfile"
|
|
GITHUB_JOB_STATUS: ${{ job.status }}
|