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 - name: Setup conda uses: conda-incubator/setup-miniconda@v3 with: activate-environment: binaryen - name: Install binaryen shell: bash -l {0} run: conda install -c conda-forge binaryen - 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 }}