zotero/.github/workflows/ci.yml
2023-04-07 01:32:26 -04:00

100 lines
3.6 KiB
YAML

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'
# --force 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 --force
- 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