diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 9e33cbe10..6fe87e1ab 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -25,6 +25,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: ${{ matrix.node }} + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install libreoffice run: | @@ -59,6 +63,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: ${{ matrix.node }} + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install libreoffice run: | @@ -114,6 +122,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installOnWindows.bat @@ -142,6 +154,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install Etherpad plugins # The --legacy-peer-deps flag is required to work around a bug in npm v7: diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index eeabeb806..5fd65002d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -25,11 +25,17 @@ jobs: context: . load: true tags: ${{ env.TEST_TAG }} + cache-from: type=gha + cache-to: type=gha,mode=max - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: 'lts/*' + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Test run: | diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/workflows/frontend-admin-tests.yml index 00c390717..c066a98b7 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -26,6 +26,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: ${{ matrix.node }} + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install etherpad plugins # We intentionally install an old ep_align version to test upgrades to the minor version number. diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index e8b657a39..74e4f9114 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -21,6 +21,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installDeps.sh @@ -70,6 +74,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install Etherpad plugins # The --legacy-peer-deps flag is required to work around a bug in npm v7: diff --git a/.github/workflows/lint-package-lock.yml b/.github/workflows/lint-package-lock.yml index 67d9d9df7..b6d7fb875 100644 --- a/.github/workflows/lint-package-lock.yml +++ b/.github/workflows/lint-package-lock.yml @@ -20,6 +20,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install lockfile-lint run: npm install --no-save lockfile-lint diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index f4cbbb58d..6f07eacce 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -20,6 +20,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installDeps.sh @@ -46,6 +50,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install etherpad-load-test run: sudo npm install -g etherpad-load-test @@ -98,6 +106,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installDeps.sh diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml index 0849f8e06..ea79e4df7 100644 --- a/.github/workflows/rate-limit.yml +++ b/.github/workflows/rate-limit.yml @@ -19,6 +19,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: docker network run: docker network create --subnet=172.23.42.0/16 ep_net diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index e57e63ebb..6b68491df 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -27,6 +27,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: ${{ matrix.node }} + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install Etherpad plugins # The --legacy-peer-deps flag is required to work around a bug in npm v7: diff --git a/.github/workflows/windows-installer.yml b/.github/workflows/windows-installer.yml index b369474db..40bd95a3b 100644 --- a/.github/workflows/windows-installer.yml +++ b/.github/workflows/windows-installer.yml @@ -27,6 +27,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install all dependencies and symlink for ep_etherpad-lite shell: msys2 {0} diff --git a/.github/workflows/windows-zip.yml b/.github/workflows/windows-zip.yml index 42a99a191..54fbe239e 100644 --- a/.github/workflows/windows-zip.yml +++ b/.github/workflows/windows-zip.yml @@ -26,6 +26,10 @@ jobs: - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json - name: Install all dependencies and symlink for ep_etherpad-lite shell: msys2 {0} @@ -65,6 +69,14 @@ jobs: - name: Extract Etherpad run: 7z x etherpad-lite-win.zip -oetherpad + - uses: actions/setup-node@v2 + with: + node-version: 12 + cache: 'npm' + cache-dependency-path: | + etherpad/src/package-lock.json + etherpad/src/bin/doc/package-lock.json + - name: Install Cypress run: npm install cypress -g diff --git a/src/bin/plugins/lib/backend-tests.yml b/src/bin/plugins/lib/backend-tests.yml index 4e36a5d87..d00205f85 100644 --- a/src/bin/plugins/lib/backend-tests.yml +++ b/src/bin/plugins/lib/backend-tests.yml @@ -14,10 +14,6 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/setup-node@v2 - with: - node-version: 12 - - name: Install libreoffice run: | sudo add-apt-repository -y ppa:libreoffice/ppa @@ -47,6 +43,15 @@ jobs: env: PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} + - uses: actions/setup-node@v2 + with: + node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json + node_modules/${{ steps.plugin_name.outputs.plugin_name }}/package-lock.json + - name: Install plugin dependencies run: | cd ./node_modules/"${PLUGIN_NAME}" diff --git a/src/bin/plugins/lib/frontend-tests.yml b/src/bin/plugins/lib/frontend-tests.yml index 4d22d5a23..d309422eb 100644 --- a/src/bin/plugins/lib/frontend-tests.yml +++ b/src/bin/plugins/lib/frontend-tests.yml @@ -15,15 +15,19 @@ jobs: printf %s\\n '::set-output name=name::${{github.event.repository.name}} ${{ github.workflow }} - ${{ github.job }}' printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}' - - uses: actions/setup-node@v2 - with: - node-version: 12 - - name: Check out Etherpad core uses: actions/checkout@v2 with: repository: ether/etherpad-lite + - uses: actions/setup-node@v2 + with: + node-version: 12 + cache: 'npm' + cache-dependency-path: | + src/package-lock.json + src/bin/doc/package-lock.json + - name: Check out the plugin uses: actions/checkout@v2 with: diff --git a/src/bin/plugins/lib/npmpublish.yml b/src/bin/plugins/lib/npmpublish.yml index 0f0f94113..a156e66cd 100644 --- a/src/bin/plugins/lib/npmpublish.yml +++ b/src/bin/plugins/lib/npmpublish.yml @@ -29,9 +29,20 @@ jobs: # etherpad-lite has been moved outside of $GITHUB_WORKSPACE, so it is now # safe to clone this plugin's repo to $GITHUB_WORKSPACE. - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + # This is necessary for actions/setup-node because '..' can't be used in + # cache-dependency-path. + - name: Create ep_etherpad-lite symlink + run: | + mkdir -p node_modules + ln -s ../../etherpad-lite/src node_modules/ep_etherpad-lite + - uses: actions/setup-node@v2 with: node-version: 12 + cache: 'npm' + cache-dependency-path: | + node_modules/ep_etherpad-lite/package-lock.json + node_modules/ep_etherpad-lite/bin/doc/package-lock.json + package-lock.json # All of ep_etherpad-lite's devDependencies are installed because the # plugin might do `require('ep_etherpad-lite/node_modules/${devDep}')`. # Eventually it would be nice to create an ESLint plugin that prohibits @@ -58,10 +69,11 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: actions/setup-node@v1 + - uses: actions/setup-node@v2 with: node-version: 12 registry-url: https://registry.npmjs.org/ + cache: 'npm' - name: Bump version (patch) run: | LATEST_TAG=$(git describe --tags --abbrev=0) || exit 1