name: CI on: [push, pull_request] jobs: build: name: Build, Upload, Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Install Node uses: actions/setup-node@v3 with: node-version: 18 #cache: npm # On GitHub - name: Install xvfb if: false # temporarily disabled #if: env.ACT != 'true' run: sudo apt update && sudo apt install -y xvfb # Local via act - name: Install packages for act if: env.ACT == 'true' run: apt update && apt install -y zstd xvfb dbus-x11 libgtk-3-0 libx11-xcb1 libdbus-glib-1-2 libxt6 - name: Cache Firefox if: false # temporarily disabled id: firefox-cache uses: actions/cache@v3 with: path: firefox-x86_64 key: firefox-60.9.0esr - name: Download Firefox if: false # temporarily disabled #if: steps.firefox-cache.outputs.cache-hit != 'true' run: wget -O tarball "https://zotero-download.s3.us-east-1.amazonaws.com/dev/firefox-60.9.0esr-x86_64-modified.tar.gz" - name: Extract Firefox if: false # temporarily disabled #if: steps.firefox-cache.outputs.cache-hit != 'true' run: tar xvf tarball - name: Cache Node modules id: node-cache uses: actions/cache@v3 with: path: node_modules key: node-modules-${{ hashFiles('package-lock.json') }} - name: Install Node modules if: steps.node-cache.outputs.cache-hit != 'true' # --legacy-peer-deps is necessary for current React versions until react-virtualized is # updated or we replace it: https://github.com/bvaughn/react-virtualized/issues/1775 run: npm install --legacy-peer-deps - name: Build Zotero run: npm run build # Currently necessary for pdf-worker Webpack: https://stackoverflow.com/a/69746937 env: NODE_OPTIONS: --openssl-legacy-provider - name: Upload deployment ZIP if: | env.ACT != 'true' && github.repository == 'zotero/zotero' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/fx102' || endsWith(github.ref, '-hotfix') || github.ref == 'refs/heads/gh-actions-ci-test') env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | mkdir build-zip cd build zip -r ../build-zip/$GITHUB_SHA.zip * cd .. sudo gem install --no-document dpl dpl-s3 dpl --provider=s3 --bucket=zotero-download --local-dir=build-zip --upload-dir=ci/client --acl=public-read --skip_cleanup=true - name: Run tests if: false # temporarily disabled run: xvfb-run test/runtests.sh -x firefox-x86_64/firefox -f - name: Cache utilities Node modules id: utilities-node-cache uses: actions/cache@v3 with: path: chrome/content/zotero/xpcom/utilities/node_modules key: utilities-node-modules-${{ hashFiles('chrome/content/zotero/xpcom/utilities/package-lock.json') }} - name: Install utilities Node modules if: steps.utilities-node-cache.outputs.cache-hit != 'true' run: npm install --prefix chrome/content/zotero/xpcom/utilities - name: Run utilities tests run: | npm test --prefix chrome/content/zotero/xpcom/utilities -- -j resource/schema/global/schema.json