From c0baf05ee88cda085f0d5de81a94606d120aedc8 Mon Sep 17 00:00:00 2001 From: webzwo0i Date: Sun, 22 Nov 2020 07:04:36 +0100 Subject: [PATCH] add github workflows --- .github/workflows/backend-tests.yml | 50 ++++++++++++++++ .github/workflows/dockerfile.yml | 21 +++++++ .github/workflows/frontend-tests.yml | 80 +++++++++++++++++++++++++ .github/workflows/lint-package-lock.yml | 19 ++++++ .github/workflows/load-test.yml | 43 +++++++++++++ .github/workflows/rate-limit.yml | 33 ++++++++++ tests/ratelimit/testlimits.sh | 0 7 files changed, 246 insertions(+) create mode 100644 .github/workflows/backend-tests.yml create mode 100644 .github/workflows/dockerfile.yml create mode 100644 .github/workflows/frontend-tests.yml create mode 100644 .github/workflows/lint-package-lock.yml create mode 100644 .github/workflows/load-test.yml create mode 100644 .github/workflows/rate-limit.yml mode change 100644 => 100755 tests/ratelimit/testlimits.sh diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml new file mode 100644 index 000000000..beb31096e --- /dev/null +++ b/.github/workflows/backend-tests.yml @@ -0,0 +1,50 @@ +name: "Backend tests" + +# any branch is useful for testing before a PR is submitted +on: [push, pull_request] + +jobs: + withoutplugins: + name: Backend tests without plugins + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - 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: bin/installDeps.sh + + # configures some settings and runs npm run test + - name: Run the backend tests + run: tests/frontend/travis/runnerBackend.sh + + withplugins: + name: Backend tests with Plugins + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - 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: bin/installDeps.sh + + - name: Install etherpad plugins + run: npm install ep_align ep_author_hover ep_cursortrace ep_font_size ep_hash_auth ep_headings2 ep_markdown ep_readonly_guest ep_spellcheck ep_subscript_and_superscript ep_table_of_contents + + # configures some settings and runs npm run test + - name: Run the backend tests + run: tests/frontend/travis/runnerBackend.sh diff --git a/.github/workflows/dockerfile.yml b/.github/workflows/dockerfile.yml new file mode 100644 index 000000000..c9f67bd97 --- /dev/null +++ b/.github/workflows/dockerfile.yml @@ -0,0 +1,21 @@ +name: "Dockerfile" + +# any branch is useful for testing before a PR is submitted +on: [push, pull_request] + +jobs: + dockerfile: + name: Builds an image using Dockerfile and runs a connectivity test + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: docker build + run: | + docker build -t etherpad:test . + docker run -d -p 9001:9001 etherpad:test + ./bin/installDeps.sh + sleep 3 # delay for startup? + cd src && npm run test-container diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml new file mode 100644 index 000000000..558a37755 --- /dev/null +++ b/.github/workflows/frontend-tests.yml @@ -0,0 +1,80 @@ +name: "Frontend tests" + +# any branch is useful for testing before a PR is submitted +on: [push, pull_request] + +jobs: + withoutplugins: + name: Frontend tests without plugins + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Run sauce-connect-action + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + TRAVIS_JOB_NUMBER: ${{ github.run_id }}-${{ github.run_number }} + run: tests/frontend/travis/sauce_tunnel.sh + + - name: Install all dependencies and symlink for ep_etherpad-lite + run: 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: Write custom settings.json with loglevel WARN + run: "sed 's/\"loglevel\": \"INFO\",/\"loglevel\": \"WARN\",/' < settings.json.template > settings.json" + + - name: Run the frontend tests + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + TRAVIS_JOB_NUMBER: ${{ github.run_id }}-${{ github.run_number }} + GIT_HASH: ${{ steps.environment.outputs.sha_short }} + run: | + tests/frontend/travis/runner.sh + + withplugins: + name: Frontend tests with plugins + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Run sauce-connect-action + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + TRAVIS_JOB_NUMBER: ${{ github.run_id }}-${{ github.run_number }} + run: tests/frontend/travis/sauce_tunnel.sh + + - name: Install all dependencies and symlink for ep_etherpad-lite + run: bin/installDeps.sh + + - name: Install etherpad plugins + run: npm install ep_align ep_author_hover ep_cursortrace ep_font_size ep_hash_auth ep_headings2 ep_markdown ep_readonly_guest ep_spellcheck ep_subscript_and_superscript ep_table_of_contents + + - name: export GIT_HASH to env + id: environment + run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" + + - name: Write custom settings.json with loglevel WARN + run: "sed 's/\"loglevel\": \"INFO\",/\"loglevel\": \"WARN\",/' < settings.json.template > settings.json" + + - name: Run the frontend tests + shell: bash + env: + SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }} + SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }} + TRAVIS_JOB_NUMBER: ${{ github.run_id }}-${{ github.run_number }} + GIT_HASH: ${{ steps.environment.outputs.sha_short }} + run: | + tests/frontend/travis/runner.sh diff --git a/.github/workflows/lint-package-lock.yml b/.github/workflows/lint-package-lock.yml new file mode 100644 index 000000000..c6754c1f0 --- /dev/null +++ b/.github/workflows/lint-package-lock.yml @@ -0,0 +1,19 @@ +name: "Lint package-lock.json" + +# any branch is useful for testing before a PR is submitted +on: [push, pull_request] + +jobs: + lint-package-lock: + name: Lint the package-lock.json file + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install lockfile-lint + run: npm install lockfile-lint + + - name: Run lockfile-lint on package-lock.json + run: npx lockfile-lint --path src/package-lock.json --validate-https --allowed-hosts npm diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml new file mode 100644 index 000000000..c69bc0532 --- /dev/null +++ b/.github/workflows/load-test.yml @@ -0,0 +1,43 @@ +name: "Loadtest" + +# any branch is useful for testing before a PR is submitted +on: [push, pull_request] + +jobs: + withoutplugins: + name: Load test without plugins + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install all dependencies and symlink for ep_etherpad-lite + run: bin/installDeps.sh + + - name: Install etherpad-load-test + run: sudo npm install -g etherpad-load-test + + - name: Run load test + run: tests/frontend/travis/runnerLoadTest.sh + + withplugins: + name: Load test with Plugins + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install all dependencies and symlink for ep_etherpad-lite + run: bin/installDeps.sh + + - name: Install etherpad-load-test + run: sudo npm install -g etherpad-load-test + + - name: Install etherpad plugins + run: npm install ep_align ep_author_hover ep_cursortrace ep_font_size ep_hash_auth ep_headings2 ep_markdown ep_readonly_guest ep_spellcheck ep_subscript_and_superscript ep_table_of_contents + + # configures some settings and runs npm run test + - name: Run load test + run: tests/frontend/travis/runnerLoadTest.sh diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml new file mode 100644 index 000000000..c6cb87466 --- /dev/null +++ b/.github/workflows/rate-limit.yml @@ -0,0 +1,33 @@ +name: "Test rate limit" + +# any branch is useful for testing before a PR is submitted +on: [push, pull_request] + +jobs: + ratelimit: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - 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 tests/ratelimit/Dockerfile.nginx -t nginx-latest . + docker build -f 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: bin/installDeps.sh + + - name: run rate limit test + run: | + cd tests/ratelimit + ./testlimits.sh diff --git a/tests/ratelimit/testlimits.sh b/tests/ratelimit/testlimits.sh old mode 100644 new mode 100755