name: "rate limit" # any branch is useful for testing before a PR is submitted on: push: paths-ignore: - "doc/**" pull_request: paths-ignore: - "doc/**" permissions: contents: read env: PNPM_HOME: ~/.pnpm-store jobs: ratelimit: # 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) name: test runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - uses: actions/cache@v5 name: Cache pnpm store with: path: ${{ env.PNPM_HOME }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - uses: pnpm/action-setup@v6 name: Install pnpm with: version: 10.33.2 run_install: false - name: docker network run: docker network create --subnet=172.23.0.0/16 ep_net - name: build docker image run: | docker build -f Dockerfile -t epl-debian-slim --build-arg NODE_ENV=develop . 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: pnpm install --frozen-lockfile - name: run rate limit test run: | cd src/tests/ratelimit ./testlimits.sh