From 43aa1e4aebc4f21fd7475249d898d79888cb729a Mon Sep 17 00:00:00 2001 From: Richard Hansen Date: Fri, 28 Jan 2022 01:33:52 -0500 Subject: [PATCH] ci: Reformat `.yml` files for readability --- .github/workflows/backend-tests.yml | 305 +++++++++--------- .github/workflows/codeql-analysis.yml | 59 ++-- .github/workflows/frontend-admin-tests.yml | 140 ++++---- .github/workflows/frontend-tests.yml | 254 +++++++-------- .github/workflows/lint-package-lock.yml | 50 +-- .github/workflows/load-test.yml | 187 ++++++----- .github/workflows/rate-limit.yml | 70 ++-- .../workflows/upgrade-from-latest-release.yml | 158 ++++----- .github/workflows/windows-installer.yml | 103 +++--- .github/workflows/windows-zip.yml | 133 ++++---- src/bin/plugins/lib/backend-tests.yml | 120 +++---- src/bin/plugins/lib/frontend-tests.yml | 173 +++++----- src/bin/plugins/lib/npmpublish.yml | 45 ++- 13 files changed, 904 insertions(+), 893 deletions(-) diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 6fe87e1ab..16c81209a 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -8,190 +8,193 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Linux without plugins runs-on: ubuntu-latest - strategy: fail-fast: false matrix: node: [12, 14, 16] - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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: | - sudo add-apt-repository -y ppa:libreoffice/ppa - sudo apt update - sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport - - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - - name: Run the backend tests - run: cd src && npm test + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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: | + sudo add-apt-repository -y ppa:libreoffice/ppa + sudo apt update + sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: Run the backend tests + run: cd src && npm test withpluginsLinux: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Linux with Plugins runs-on: ubuntu-latest - strategy: fail-fast: false matrix: node: [12, 14, 16] - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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: | - sudo add-apt-repository -y ppa:libreoffice/ppa - sudo apt update - sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport - - - name: Install Etherpad plugins - # The --legacy-peer-deps flag is required to work around a bug in npm v7: - # https://github.com/npm/cli/issues/2199 - run: > - npm install --no-save --legacy-peer-deps - ep_align - ep_author_hover - ep_cursortrace - ep_font_size - ep_hash_auth - ep_headings2 - ep_image_upload - ep_markdown - ep_readonly_guest - ep_set_title_on_pad - ep_spellcheck - ep_subscript_and_superscript - ep_table_of_contents - - # This must be run after installing the plugins, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - - name: Run the backend tests - run: cd src && npm test + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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: | + sudo add-apt-repository -y ppa:libreoffice/ppa + sudo apt update + sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport + - + name: Install Etherpad plugins + # The --legacy-peer-deps flag is required to work around a bug in npm v7: + # https://github.com/npm/cli/issues/2199 + run: > + npm install --no-save --legacy-peer-deps + ep_align + ep_author_hover + ep_cursortrace + ep_font_size + ep_hash_auth + ep_headings2 + ep_image_upload + ep_markdown + ep_readonly_guest + ep_set_title_on_pad + ep_spellcheck + ep_subscript_and_superscript + ep_table_of_contents + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: Run the backend tests + run: cd src && npm test withoutpluginsWindows: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Windows without plugins runs-on: windows-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: Fix up the settings.json - run: | - powershell -Command "(gc settings.json.template) -replace '\"max\": 10', '\"max\": 10000' | Out-File -encoding ASCII settings.json.holder" - powershell -Command "(gc settings.json.holder) -replace '\"points\": 10', '\"points\": 1000' | Out-File -encoding ASCII settings.json" - - - name: Run the backend tests - run: cd src && npm test + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: Fix up the settings.json + run: | + powershell -Command "(gc settings.json.template) -replace '\"max\": 10', '\"max\": 10000' | Out-File -encoding ASCII settings.json.holder" + powershell -Command "(gc settings.json.holder) -replace '\"points\": 10', '\"points\": 1000' | Out-File -encoding ASCII settings.json" + - + name: Run the backend tests + run: cd src && npm test withpluginsWindows: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Windows with Plugins runs-on: windows-latest steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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: - # https://github.com/npm/cli/issues/2199 - run: > - npm install --no-save --legacy-peer-deps - ep_align - ep_author_hover - ep_cursortrace - ep_font_size - ep_hash_auth - ep_headings2 - ep_image_upload - ep_markdown - ep_readonly_guest - ep_set_title_on_pad - ep_spellcheck - ep_subscript_and_superscript - ep_table_of_contents - - # This must be run after installing the plugins, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installOnWindows.bat - - - name: Fix up the settings.json - run: | - powershell -Command "(gc settings.json.template) -replace '\"max\": 10', '\"max\": 10000' | Out-File -encoding ASCII settings.json.holder" - powershell -Command "(gc settings.json.holder) -replace '\"points\": 10', '\"points\": 1000' | Out-File -encoding ASCII settings.json" - - - name: Run the backend tests - run: cd src && npm test + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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: https://github.com/npm/cli/issues/2199 + run: > + npm install --no-save --legacy-peer-deps + ep_align + ep_author_hover + ep_cursortrace + ep_font_size + ep_hash_auth + ep_headings2 + ep_image_upload + ep_markdown + ep_readonly_guest + ep_set_title_on_pad + ep_spellcheck + ep_subscript_and_superscript + ep_table_of_contents + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installOnWindows.bat + - + name: Fix up the settings.json + run: | + powershell -Command "(gc settings.json.template) -replace '\"max\": 10', '\"max\": 10000' | Out-File -encoding ASCII settings.json.holder" + powershell -Command "(gc settings.json.holder) -replace '\"points\": 10', '\"points\": 1000' | Out-File -encoding ASCII settings.json" + - + name: Run the backend tests + run: cd src && npm test diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f3b1cf2c2..4fa9785f0 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,42 +13,25 @@ jobs: analyze: name: Analyze runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - # Override language selection by uncommenting this and choosing your languages - # with: - # languages: go, javascript, csharp, python, cpp, java - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹī¸ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - + name: Checkout repository + uses: actions/checkout@v2 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + # If this run was triggered by a pull request event, then checkout + # the head of the pull request instead of the merge commit. + - + run: git checkout HEAD^2 + if: ${{ github.event_name == 'pull_request' }} + - + name: Initialize CodeQL + uses: github/codeql-action/init@v1 + - + name: Autobuild + uses: github/codeql-action/autobuild@v1 + - + name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/workflows/frontend-admin-tests.yml index cbdd24b56..41dbe8a7c 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -14,72 +14,74 @@ jobs: node: [12, 14, 16] steps: - - name: Generate Sauce Labs strings - id: sauce_strings - run: | - printf %s\\n '::set-output name=name::${{ github.workflow }} - ${{ github.job }} - Node ${{ matrix.node }}' - printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}-node${{ matrix.node }}' - - - name: Checkout repository - uses: actions/checkout@v2 - - - 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. - # The --legacy-peer-deps flag is required to work around a bug in npm v7: - # https://github.com/npm/cli/issues/2199 - run: npm install --no-save --legacy-peer-deps ep_align@0.2.27 - - # This must be run after installing the plugins, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - # Nuke plugin tests - - name: Install etherpad plugins - run: rm -Rf node_modules/ep_align/static/tests/* - - - name: export GIT_HASH to env - id: environment - run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" - - - name: Create settings.json - run: cp settings.json.template settings.json - - - name: Write custom settings.json that enables the Admin UI tests - run: "sed -i 's/\"enableAdminUITests\": false/\"enableAdminUITests\": true,\\n\"users\":{\"admin\":{\"password\":\"changeme\",\"is_admin\":true}}/' settings.json" - - - name: increase maxHttpBufferSize - run: "sed -i 's/\"maxHttpBufferSize\": 10000/\"maxHttpBufferSize\": 100000/' settings.json" - - - name: Remove standard frontend test files, so only admin tests are run - run: mv src/tests/frontend/specs/* /tmp && mv /tmp/admin*.js src/tests/frontend/specs - - - uses: saucelabs/sauce-connect-action@v2.1.1 - with: - username: ${{ secrets.SAUCE_USERNAME }} - accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} - tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} - - - name: Run the frontend admin tests - shell: bash - env: - SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} - SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} - SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} - TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} - GIT_HASH: ${{ steps.environment.outputs.sha_short }} - run: | - src/tests/frontend/travis/adminrunner.sh + - + name: Generate Sauce Labs strings + id: sauce_strings + run: | + printf %s\\n '::set-output name=name::${{ github.workflow }} - ${{ github.job }} - Node ${{ matrix.node }}' + printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}-node${{ matrix.node }}' + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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. The --legacy-peer-deps flag is required to + # work around a bug in npm v7: https://github.com/npm/cli/issues/2199 + run: npm install --no-save --legacy-peer-deps ep_align@0.2.27 + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: Install etherpad plugins + run: rm -Rf node_modules/ep_align/static/tests/* + - + name: export GIT_HASH to env + id: environment + run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" + - + name: Create settings.json + run: cp settings.json.template settings.json + - + name: Write custom settings.json that enables the Admin UI tests + run: "sed -i 's/\"enableAdminUITests\": false/\"enableAdminUITests\": true,\\n\"users\":{\"admin\":{\"password\":\"changeme\",\"is_admin\":true}}/' settings.json" + - + name: increase maxHttpBufferSize + run: "sed -i 's/\"maxHttpBufferSize\": 10000/\"maxHttpBufferSize\": 100000/' settings.json" + - + name: Remove standard frontend test files, so only admin tests are run + run: mv src/tests/frontend/specs/* /tmp && mv /tmp/admin*.js src/tests/frontend/specs + - + uses: saucelabs/sauce-connect-action@v2.1.1 + with: + username: ${{ secrets.SAUCE_USERNAME }} + accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} + tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} + - + name: Run the frontend admin tests + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} + TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} + GIT_HASH: ${{ steps.environment.outputs.sha_short }} + run: | + src/tests/frontend/travis/adminrunner.sh diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index 800bb79ac..678079909 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -7,136 +7,138 @@ jobs: withoutplugins: name: without plugins runs-on: ubuntu-latest - steps: - - name: Generate Sauce Labs strings - id: sauce_strings - run: | - printf %s\\n '::set-output name=name::${{ github.workflow }} - ${{ github.job }}' - printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}' - - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: export GIT_HASH to env - id: environment - run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" - - - name: Create settings.json - run: cp settings.json.template settings.json - - - name: Disable import/export rate limiting - run: | - sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json - - - uses: saucelabs/sauce-connect-action@v2.1.1 - with: - username: ${{ secrets.SAUCE_USERNAME }} - accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} - tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} - - - name: Run the frontend tests - shell: bash - env: - SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} - SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} - SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} - TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} - GIT_HASH: ${{ steps.environment.outputs.sha_short }} - run: | - src/tests/frontend/travis/runner.sh + - + name: Generate Sauce Labs strings + id: sauce_strings + run: | + printf %s\\n '::set-output name=name::${{ github.workflow }} - ${{ github.job }}' + printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}' + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: export GIT_HASH to env + id: environment + run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" + - + name: Create settings.json + run: cp settings.json.template settings.json + - + name: Disable import/export rate limiting + run: | + sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json + - + uses: saucelabs/sauce-connect-action@v2.1.1 + with: + username: ${{ secrets.SAUCE_USERNAME }} + accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} + tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} + - + name: Run the frontend tests + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} + TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} + GIT_HASH: ${{ steps.environment.outputs.sha_short }} + run: | + src/tests/frontend/travis/runner.sh withplugins: name: with plugins runs-on: ubuntu-latest - steps: - - name: Generate Sauce Labs strings - id: sauce_strings - run: | - printf %s\\n '::set-output name=name::${{ github.workflow }} - ${{ github.job }}' - printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}' - - - name: Checkout repository - uses: actions/checkout@v2 - - - 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: - # https://github.com/npm/cli/issues/2199 - run: > - npm install --no-save --legacy-peer-deps - ep_align - ep_author_hover - ep_cursortrace - ep_embedmedia - ep_font_size - ep_hash_auth - ep_headings2 - ep_image_upload - ep_markdown - ep_readonly_guest - ep_set_title_on_pad - ep_spellcheck - ep_subscript_and_superscript - ep_table_of_contents - - # This must be run after installing the plugins, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - - name: export GIT_HASH to env - id: environment - run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" - - - name: Create settings.json - run: cp settings.json.template settings.json - - - name: Disable import/export rate limiting - run: | - sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json - + - + name: Generate Sauce Labs strings + id: sauce_strings + run: | + printf %s\\n '::set-output name=name::${{ github.workflow }} - ${{ github.job }}' + printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}' + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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: + # https://github.com/npm/cli/issues/2199 + run: > + npm install --no-save --legacy-peer-deps + ep_align + ep_author_hover + ep_cursortrace + ep_embedmedia + ep_font_size + ep_hash_auth + ep_headings2 + ep_image_upload + ep_markdown + ep_readonly_guest + ep_set_title_on_pad + ep_spellcheck + ep_subscript_and_superscript + ep_table_of_contents + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: export GIT_HASH to env + id: environment + run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" + - + name: Create settings.json + run: cp settings.json.template settings.json + - + name: Disable import/export rate limiting + run: | + sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json # XXX we should probably run all tests, because plugins could effect their results - - name: Remove standard frontend test files, so only plugin tests are run - run: rm src/tests/frontend/specs/* - - - uses: saucelabs/sauce-connect-action@v2.1.1 - with: - username: ${{ secrets.SAUCE_USERNAME }} - accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} - tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} - - - name: Run the frontend tests - shell: bash - env: - SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} - SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} - SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} - TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} - GIT_HASH: ${{ steps.environment.outputs.sha_short }} - run: | - src/tests/frontend/travis/runner.sh + - + name: Remove standard frontend test files, so only plugin tests are run + run: rm src/tests/frontend/specs/* + - + uses: saucelabs/sauce-connect-action@v2.1.1 + with: + username: ${{ secrets.SAUCE_USERNAME }} + accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} + tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} + - + name: Run the frontend tests + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} + TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} + GIT_HASH: ${{ steps.environment.outputs.sha_short }} + run: | + src/tests/frontend/travis/runner.sh diff --git a/.github/workflows/lint-package-lock.yml b/.github/workflows/lint-package-lock.yml index b6d7fb875..b82aee902 100644 --- a/.github/workflows/lint-package-lock.yml +++ b/.github/workflows/lint-package-lock.yml @@ -8,31 +8,31 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: package-lock.json runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: Run lockfile-lint on package-lock.json - run: > - npx lockfile-lint - --path src/package-lock.json - --allowed-hosts npm - --allowed-schemes https: - --allowed-schemes github: - --allowed-urls github:mapbox/node-sqlite3#593c9d498be2510d286349134537e3bf89401c4a + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: Run lockfile-lint on package-lock.json + run: > + npx lockfile-lint + --path src/package-lock.json + --allowed-hosts npm + --allowed-schemes https: + --allowed-schemes github: + --allowed-urls github:mapbox/node-sqlite3#593c9d498be2510d286349134537e3bf89401c4a diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index 6f07eacce..ba05ac16d 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -8,116 +8,115 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: without plugins runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: Install etherpad-load-test - run: sudo npm install -g etherpad-load-test - - - name: Run load test - run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: Install etherpad-load-test + run: sudo npm install -g etherpad-load-test + - + name: Run load test + run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 withplugins: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: with Plugins runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: Install etherpad plugins - # The --legacy-peer-deps flag is required to work around a bug in npm v7: - # https://github.com/npm/cli/issues/2199 - run: > - npm install --no-save --legacy-peer-deps - ep_align - ep_author_hover - ep_cursortrace - ep_font_size - ep_hash_auth - ep_headings2 - ep_markdown - ep_readonly_guest - ep_set_title_on_pad - ep_spellcheck - ep_subscript_and_superscript - ep_table_of_contents - - # This must be run after installing the plugins, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - # configures some settings and runs npm run test - - name: Run load test - run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: Install etherpad plugins + # The --legacy-peer-deps flag is required to work around a bug in npm v7: + # https://github.com/npm/cli/issues/2199 + run: > + npm install --no-save --legacy-peer-deps + ep_align + ep_author_hover + ep_cursortrace + ep_font_size + ep_hash_auth + ep_headings2 + ep_markdown + ep_readonly_guest + ep_set_title_on_pad + ep_spellcheck + ep_subscript_and_superscript + ep_table_of_contents + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: Run load test + run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 long: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: long running runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: Install etherpad-load-test - run: sudo npm install -g etherpad-load-test - - - # configures some settings and runs npm run test - - name: Run load test - run: src/tests/frontend/travis/runnerLoadTest.sh 5000 5 + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: Install etherpad-load-test + run: sudo npm install -g etherpad-load-test + - + name: Run load test + run: src/tests/frontend/travis/runnerLoadTest.sh 5000 5 diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml index ea79e4df7..8028e443c 100644 --- a/.github/workflows/rate-limit.yml +++ b/.github/workflows/rate-limit.yml @@ -8,40 +8,42 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: test runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v2 - - - 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 - - - name: build docker image - run: | - docker build -f Dockerfile -t epl-debian-slim . - docker build -f src/tests/ratelimit/Dockerfile.nginx -t nginx-latest . - docker build -f src/tests/ratelimit/Dockerfile.anotherip -t anotherip . - - name: run docker images - run: | - docker run --name etherpad-docker -p 9000:9001 --rm --network ep_net --ip 172.23.42.2 -e 'TRUST_PROXY=true' epl-debian-slim & - docker run -p 8081:80 --rm --network ep_net --ip 172.23.42.1 -d nginx-latest - docker run --rm --network ep_net --ip 172.23.42.3 --name anotherip -dt anotherip - - - name: install dependencies and create symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - - name: run rate limit test - run: | - cd src/tests/ratelimit - ./testlimits.sh + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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 + - + name: build docker image + run: | + docker build -f Dockerfile -t epl-debian-slim . + docker build -f src/tests/ratelimit/Dockerfile.nginx -t nginx-latest . + docker build -f src/tests/ratelimit/Dockerfile.anotherip -t anotherip . + - + name: run docker images + run: | + docker run --name etherpad-docker -p 9000:9001 --rm --network ep_net --ip 172.23.42.2 -e 'TRUST_PROXY=true' epl-debian-slim & + docker run -p 8081:80 --rm --network ep_net --ip 172.23.42.1 -d nginx-latest + docker run --rm --network ep_net --ip 172.23.42.3 --name anotherip -dt anotherip + - + name: install dependencies and create symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: run rate limit test + run: | + cd src/tests/ratelimit + ./testlimits.sh diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index 6b68491df..a8b0fcb73 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -8,88 +8,90 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Linux with Plugins runs-on: ubuntu-latest - strategy: fail-fast: false matrix: node: [12, 14, 16] - steps: - - name: Check out latest release - uses: actions/checkout@v2 - with: - ref: master - - - 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: - # https://github.com/npm/cli/issues/2199 - run: > - npm install --no-save --legacy-peer-deps - ep_align - ep_author_hover - ep_cursortrace - ep_font_size - ep_hash_auth - ep_headings2 - ep_image_upload - ep_markdown - ep_readonly_guest - ep_set_title_on_pad - ep_spellcheck - ep_subscript_and_superscript - ep_table_of_contents - - # This must be run after installing the plugins, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - - name: Run the backend tests - run: cd src && npm test - - # Because actions/checkout@v2 is called with "ref: master" and without - # "fetch-depth: 0", the local clone does not have the ${GITHUB_SHA} commit. - # Fetch ${GITHUB_REF} to get the ${GITHUB_SHA} commit. Note that a plain - # "git fetch" only fetches "normal" references (refs/heads/* and - # refs/tags/*), and for pull requests none of the normal references include - # ${GITHUB_SHA}, so we have to explicitly tell Git to fetch ${GITHUB_REF}. - - name: Fetch the new Git commits - run: git fetch --depth=1 origin "${GITHUB_REF}" - - - name: Upgrade to the new Git revision - # For pull requests, ${GITHUB_SHA} is the automatically generated merge - # commit that merges the PR's source branch to its destination branch. - run: git checkout "${GITHUB_SHA}" - - - name: Install all dependencies and symlink for ep_etherpad-lite - run: src/bin/installDeps.sh - - - name: Run the backend tests - run: cd src && npm test - - - name: Install Cypress - run: npm install cypress -g - - - name: Run Etherpad & Test Frontend - run: | - node src/node/server.js & - curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test - cd src/tests/frontend - cypress run --spec cypress/integration/test.js --config-file cypress/cypress.json + - + name: Check out latest release + uses: actions/checkout@v2 + with: + ref: master + - + 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: https://github.com/npm/cli/issues/2199 + run: > + npm install --no-save --legacy-peer-deps + ep_align + ep_author_hover + ep_cursortrace + ep_font_size + ep_hash_auth + ep_headings2 + ep_image_upload + ep_markdown + ep_readonly_guest + ep_set_title_on_pad + ep_spellcheck + ep_subscript_and_superscript + ep_table_of_contents + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: Run the backend tests + run: cd src && npm test + # Because actions/checkout@v2 is called with "ref: master" and without + # "fetch-depth: 0", the local clone does not have the ${GITHUB_SHA} + # commit. Fetch ${GITHUB_REF} to get the ${GITHUB_SHA} commit. Note that a + # plain "git fetch" only fetches "normal" references (refs/heads/* and + # refs/tags/*), and for pull requests none of the normal references + # include ${GITHUB_SHA}, so we have to explicitly tell Git to fetch + # ${GITHUB_REF}. + - + name: Fetch the new Git commits + run: git fetch --depth=1 origin "${GITHUB_REF}" + - + name: Upgrade to the new Git revision + # For pull requests, ${GITHUB_SHA} is the automatically generated merge + # commit that merges the PR's source branch to its destination branch. + run: git checkout "${GITHUB_SHA}" + - + name: Install all dependencies and symlink for ep_etherpad-lite + run: src/bin/installDeps.sh + - + name: Run the backend tests + run: cd src && npm test + - + name: Install Cypress + run: npm install cypress -g + - + name: Run Etherpad & Test Frontend + run: | + node src/node/server.js & + curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test + cd src/tests/frontend + cypress run --spec cypress/integration/test.js --config-file cypress/cypress.json diff --git a/.github/workflows/windows-installer.yml b/.github/workflows/windows-installer.yml index 40bd95a3b..cbf8a05fc 100644 --- a/.github/workflows/windows-installer.yml +++ b/.github/workflows/windows-installer.yml @@ -8,58 +8,57 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) - + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Build Zip & Exe runs-on: windows-latest - steps: - - uses: msys2/setup-msys2@v2 - with: - path-type: inherit - install: >- - zip - - - name: Checkout repository - uses: actions/checkout@v2 - - - 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} - run: src/bin/installDeps.sh - - - name: Run the backend tests - shell: msys2 {0} - run: cd src && npm test - - - name: Build the .zip - shell: msys2 {0} - run: src/bin/buildForWindows.sh - - - name: Extract the .zip into folder - run: 7z x etherpad-lite-win.zip -oetherpad-lite-new - - - name: Grab nsis config - run: git clone https://github.com/ether/etherpad_nsis.git - - - name: Create installer - uses: joncloud/makensis-action@v3.6 - with: - script-file: 'etherpad_nsis/etherpad.nsi' - - - name: Check something.. - run: ls etherpad_nsis - - - name: Archive production artifacts - uses: actions/upload-artifact@v2 - with: - name: etherpad-server-windows.exe - path: etherpad_nsis/etherpad-server-windows.exe + - + uses: msys2/setup-msys2@v2 + with: + path-type: inherit + install: >- + zip + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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} + run: src/bin/installDeps.sh + - + name: Run the backend tests + shell: msys2 {0} + run: cd src && npm test + - + name: Build the .zip + shell: msys2 {0} + run: src/bin/buildForWindows.sh + - + name: Extract the .zip into folder + run: 7z x etherpad-lite-win.zip -oetherpad-lite-new + - + name: Grab nsis config + run: git clone https://github.com/ether/etherpad_nsis.git + - + name: Create installer + uses: joncloud/makensis-action@v3.6 + with: + script-file: 'etherpad_nsis/etherpad.nsi' + - + name: Check something.. + run: ls etherpad_nsis + - + name: Archive production artifacts + uses: actions/upload-artifact@v2 + with: + name: etherpad-server-windows.exe + path: etherpad_nsis/etherpad-server-windows.exe diff --git a/.github/workflows/windows-zip.yml b/.github/workflows/windows-zip.yml index 54fbe239e..c5a5fce3c 100644 --- a/.github/workflows/windows-zip.yml +++ b/.github/workflows/windows-zip.yml @@ -8,82 +8,81 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Build runs-on: windows-latest - steps: - - uses: msys2/setup-msys2@v2 - with: - path-type: inherit - install: >- - zip - - - name: Checkout repository - uses: actions/checkout@v2 - - - 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} - run: src/bin/installDeps.sh - - - name: Run the backend tests - shell: msys2 {0} - run: cd src && npm test - - - name: Build the .zip - shell: msys2 {0} - run: src/bin/buildForWindows.sh - - - name: Archive production artifacts - uses: actions/upload-artifact@v2 - with: - name: etherpad-lite-win.zip - path: etherpad-lite-win.zip - + - + uses: msys2/setup-msys2@v2 + with: + path-type: inherit + install: >- + zip + - + name: Checkout repository + uses: actions/checkout@v2 + - + 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} + run: src/bin/installDeps.sh + - + name: Run the backend tests + shell: msys2 {0} + run: cd src && npm test + - + name: Build the .zip + shell: msys2 {0} + run: src/bin/buildForWindows.sh + - + name: Archive production artifacts + uses: actions/upload-artifact@v2 + with: + name: etherpad-lite-win.zip + path: etherpad-lite-win.zip deploy: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: Deploy needs: build runs-on: windows-latest - steps: - - name: Download zip - uses: actions/download-artifact@v2 - with: - name: etherpad-lite-win.zip - - - 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 - - - name: Run Etherpad - run: | - cd etherpad - node node_modules\ep_etherpad-lite\node\server.js & - curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test - cd src\tests\frontend - cypress run --spec cypress\integration\test.js --config-file cypress\cypress.json + - + name: Download zip + uses: actions/download-artifact@v2 + with: + name: etherpad-lite-win.zip + - + 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 + - + name: Run Etherpad + run: | + cd etherpad + node node_modules\ep_etherpad-lite\node\server.js & + curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test + cd src\tests\frontend + cypress run --spec cypress\integration\test.js --config-file cypress\cypress.json diff --git a/src/bin/plugins/lib/backend-tests.yml b/src/bin/plugins/lib/backend-tests.yml index d00205f85..3ed1105aa 100644 --- a/src/bin/plugins/lib/backend-tests.yml +++ b/src/bin/plugins/lib/backend-tests.yml @@ -8,66 +8,68 @@ jobs: # run on pushes to any branch # run on PRs from external forks if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) name: with Plugins runs-on: ubuntu-latest steps: - - name: Install libreoffice - run: | - sudo add-apt-repository -y ppa:libreoffice/ppa - sudo apt update - sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport - - # clone etherpad-lite - - name: Install etherpad core - uses: actions/checkout@v2 - with: - repository: ether/etherpad-lite - - - name: Checkout plugin repository - uses: actions/checkout@v2 - with: - path: ./node_modules/__tmp - - - name: Determine plugin name - id: plugin_name - run: | - cd ./node_modules/__tmp - npx -c 'printf %s\\n "::set-output name=plugin_name::${npm_package_name}"' - - - name: Rename plugin directory - run: | - mv ./node_modules/__tmp ./node_modules/"${PLUGIN_NAME}" - 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}" - npm ci - env: - PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} - - # This must be run after setting up the plugin, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install Etherpad core dependencies - run: src/bin/installDeps.sh - - - name: Run the backend tests - run: cd src && npm test + - + name: Install libreoffice + run: | + sudo add-apt-repository -y ppa:libreoffice/ppa + sudo apt update + sudo apt install -y --no-install-recommends libreoffice libreoffice-pdfimport + - + name: Install etherpad core + uses: actions/checkout@v2 + with: + repository: ether/etherpad-lite + - + name: Checkout plugin repository + uses: actions/checkout@v2 + with: + path: ./node_modules/__tmp + - + name: Determine plugin name + id: plugin_name + run: | + cd ./node_modules/__tmp + npx -c 'printf %s\\n "::set-output name=plugin_name::${npm_package_name}"' + - + name: Rename plugin directory + run: | + mv ./node_modules/__tmp ./node_modules/"${PLUGIN_NAME}" + 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}" + npm ci + env: + PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install Etherpad core dependencies + run: src/bin/installDeps.sh + - + name: Run the backend tests + run: cd src && npm test diff --git a/src/bin/plugins/lib/frontend-tests.yml b/src/bin/plugins/lib/frontend-tests.yml index d309422eb..f72483a59 100644 --- a/src/bin/plugins/lib/frontend-tests.yml +++ b/src/bin/plugins/lib/frontend-tests.yml @@ -9,88 +9,91 @@ jobs: runs-on: ubuntu-latest steps: - - name: Generate Sauce Labs strings - id: sauce_strings - run: | - 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 }}' - - - 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: - path: ./node_modules/__tmp - - - name: export GIT_HASH to env - id: environment - run: | - cd ./node_modules/__tmp - echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" - - - name: Determine plugin name - id: plugin_name - run: | - cd ./node_modules/__tmp - npx -c 'printf %s\\n "::set-output name=plugin_name::${npm_package_name}"' - - - name: Rename plugin directory - env: - PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} - run: | - mv ./node_modules/__tmp ./node_modules/"${PLUGIN_NAME}" - - - name: Install plugin dependencies - env: - PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} - run: | - cd ./node_modules/"${PLUGIN_NAME}" - npm ci - - # This must be run after setting up the plugin, otherwise npm will try to - # hoist common dependencies by removing them from src/node_modules and - # installing them in the top-level node_modules. As of v6.14.10, npm's hoist - # logic appears to be buggy, because it sometimes removes dependencies from - # src/node_modules but fails to add them to the top-level node_modules. Even - # if npm correctly hoists the dependencies, the hoisting seems to confuse - # tools such as `npm outdated`, `npm update`, and some ESLint rules. - - name: Install Etherpad core dependencies - run: src/bin/installDeps.sh - - - name: Create settings.json - run: cp settings.json.template settings.json - - - name: Disable import/export rate limiting - run: | - sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json - - - name: Remove standard frontend test files - run: rm -rf src/tests/frontend/specs - - - uses: saucelabs/sauce-connect-action@v2.1.1 - with: - username: ${{ secrets.SAUCE_USERNAME }} - accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} - tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} - - - name: Run the frontend tests - shell: bash - env: - SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} - SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} - SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} - TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} - GIT_HASH: ${{ steps.environment.outputs.sha_short }} - run: | - src/tests/frontend/travis/runner.sh + - + name: Generate Sauce Labs strings + id: sauce_strings + run: | + 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 }}' + - + 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: + path: ./node_modules/__tmp + - + name: export GIT_HASH to env + id: environment + run: | + cd ./node_modules/__tmp + echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" + - + name: Determine plugin name + id: plugin_name + run: | + cd ./node_modules/__tmp + npx -c 'printf %s\\n "::set-output name=plugin_name::${npm_package_name}"' + - + name: Rename plugin directory + env: + PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} + run: | + mv ./node_modules/__tmp ./node_modules/"${PLUGIN_NAME}" + - + name: Install plugin dependencies + env: + PLUGIN_NAME: ${{ steps.plugin_name.outputs.plugin_name }} + run: | + cd ./node_modules/"${PLUGIN_NAME}" + npm ci + # Etherpad core dependencies must be installed after installing the + # plugin's dependencies, otherwise npm will try to hoist common + # dependencies by removing them from src/node_modules and installing them + # in the top-level node_modules. As of v6.14.10, npm's hoist logic appears + # to be buggy, because it sometimes removes dependencies from + # src/node_modules but fails to add them to the top-level node_modules. + # Even if npm correctly hoists the dependencies, the hoisting seems to + # confuse tools such as `npm outdated`, `npm update`, and some ESLint + # rules. + - + name: Install Etherpad core dependencies + run: src/bin/installDeps.sh + - + name: Create settings.json + run: cp settings.json.template settings.json + - + name: Disable import/export rate limiting + run: | + sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json + - + name: Remove standard frontend test files + run: rm -rf src/tests/frontend/specs + - + uses: saucelabs/sauce-connect-action@v2.1.1 + with: + username: ${{ secrets.SAUCE_USERNAME }} + accessKey: ${{ secrets.SAUCE_ACCESS_KEY }} + tunnelIdentifier: ${{ steps.sauce_strings.outputs.tunnel_id }} + - + name: Run the frontend tests + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + SAUCE_NAME: ${{ steps.sauce_strings.outputs.name }} + TRAVIS_JOB_NUMBER: ${{ steps.sauce_strings.outputs.tunnel_id }} + GIT_HASH: ${{ steps.environment.outputs.sha_short }} + run: | + src/tests/frontend/travis/runner.sh diff --git a/src/bin/plugins/lib/npmpublish.yml b/src/bin/plugins/lib/npmpublish.yml index a156e66cd..9fc94ae7f 100644 --- a/src/bin/plugins/lib/npmpublish.yml +++ b/src/bin/plugins/lib/npmpublish.yml @@ -21,21 +21,26 @@ jobs: # cloned to etherpad-lite then moved to ../etherpad-lite. To avoid # conflicts with this plugin's clone, etherpad-lite must be cloned and # moved out before this plugin's repo is cloned to $GITHUB_WORKSPACE. - - uses: actions/checkout@v2 + - + uses: actions/checkout@v2 with: repository: ether/etherpad-lite path: etherpad-lite - - run: mv etherpad-lite .. + - + run: mv etherpad-lite .. # 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/checkout@v2 # This is necessary for actions/setup-node because '..' can't be used in # cache-dependency-path. - - name: Create ep_etherpad-lite symlink + - + 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 + - + uses: actions/setup-node@v2 with: node-version: 12 cache: 'npm' @@ -49,32 +54,40 @@ jobs: # Etherpad plugins from piggybacking off of ep_etherpad-lite's # devDependencies. If we had that, we could change this line to only # install production dependencies. - - run: cd ../etherpad-lite/src && npm ci - - run: npm ci + - + run: cd ../etherpad-lite/src && npm ci + - + run: npm ci # This runs some sanity checks and creates a symlink at # node_modules/ep_etherpad-lite that points to ../../etherpad-lite/src. # This step must be done after `npm ci` installs the plugin's dependencies # because npm "helpfully" cleans up such symlinks. :( Installing # ep_etherpad-lite in the plugin's node_modules prevents lint errors and # unit test failures if the plugin does `require('ep_etherpad-lite/foo')`. - - run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src - - run: npm test - - run: npm run lint + - + run: npm install --no-save ep_etherpad-lite@file:../etherpad-lite/src + - + run: npm test + - + run: npm run lint publish-npm: if: github.event_name == 'push' needs: test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - + uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: actions/setup-node@v2 + - + uses: actions/setup-node@v2 with: node-version: 12 registry-url: https://registry.npmjs.org/ cache: 'npm' - - name: Bump version (patch) + - + name: Bump version (patch) run: | LATEST_TAG=$(git describe --tags --abbrev=0) || exit 1 NEW_COMMITS=$(git rev-list --count "${LATEST_TAG}"..) || exit 1 @@ -94,10 +107,12 @@ jobs: # already-used version number. By running `npm publish` after `git push`, # back-to-back merges will cause the first merge's workflow to fail but # the second's will succeed. - - run: npm publish + - + run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} - - name: Add package to etherpad organization + - + name: Add package to etherpad organization run: npm access grant read-write etherpad:developers env: NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}