|
1 | 1 | name: CI
|
| 2 | + |
2 | 3 | on: [ push, pull_request, workflow_dispatch ]
|
| 4 | + |
| 5 | +permissions: {} |
| 6 | + |
3 | 7 | jobs:
|
4 | 8 | CI:
|
5 | 9 | runs-on: ${{ matrix.os }}
|
| 10 | + permissions: |
| 11 | + contents: read |
6 | 12 | strategy:
|
7 | 13 | fail-fast: true
|
8 | 14 | matrix:
|
9 | 15 | include:
|
10 | 16 | - os: ubuntu-24.04
|
11 | 17 | nginx-version: 1.27.1
|
| 18 | + |
12 | 19 | steps:
|
13 |
| - - uses: actions/checkout@v4 |
| 20 | + - name: Checkout repository |
| 21 | + uses: actions/checkout@v4 |
| 22 | + |
14 | 23 | - name: Install dependencies
|
15 | 24 | run: |
|
16 | 25 | # for Test::Nginx
|
17 | 26 | curl -fsSL https://openresty.org/package/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/openresty.gpg
|
18 | 27 | echo "deb [signed-by=/usr/share/keyrings/openresty.gpg] https://openresty.org/package/ubuntu $(lsb_release -sc) main" | \
|
19 | 28 | sudo tee /etc/apt/sources.list.d/openresty.list > /dev/null
|
20 | 29 | sudo apt-get update
|
21 |
| - sudo apt-get install libtest-nginx-perl redis-server |
| 30 | + sudo apt-get install --no-install-recommends libtest-nginx-perl redis-server |
| 31 | +
|
22 | 32 | - name: Install nginx
|
23 | 33 | env:
|
24 | 34 | NGINX_VERSION: ${{ matrix.nginx-version }}
|
25 |
| - run: ci/install-nginx.sh --add-module=$GITHUB_WORKSPACE/ |
26 |
| - - name: Build Redis rate limiter module |
27 |
| - run: ci/build-rate-limiter.sh |
| 35 | + working-directory: ${{ runner.temp }} |
| 36 | + run: | |
| 37 | + mkdir nginx |
| 38 | + curl -Ls https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz | \ |
| 39 | + tar xzC nginx --strip-components=1 |
| 40 | + cd nginx |
| 41 | + ./configure --prefix="$HOME/nginx" --add-module=${{ github.workspace }} |
| 42 | + make -j$(nproc) |
| 43 | + make install |
| 44 | +
|
28 | 45 | - name: Install Redis rate limiter module
|
| 46 | + working-directory: ${{ runner.temp }} |
29 | 47 | run: |
|
30 |
| - sudo mkdir -p /usr/lib/redis/modules |
31 |
| - sudo mv rate-limiter/ratelimit.so /usr/lib/redis/modules/ |
| 48 | + git clone https://github.com/onsigntv/redis-rate-limiter.git |
| 49 | + cd redis-rate-limiter |
| 50 | + make -j$(nproc) USE_MONOTONIC_CLOCK=1 |
| 51 | + sudo install -D -t /usr/lib/redis/modules ratelimit.so |
| 52 | +
|
32 | 53 | - name: Load Redis rate limiter module
|
33 | 54 | run: |
|
34 | 55 | # Redis < 7
|
35 | 56 | # redis-cli MODULE LOAD /usr/lib/redis/modules/ratelimit.so
|
36 | 57 | # Redis >= 7 (due to `enable-module-command no` restriction)
|
37 | 58 | echo "loadmodule /usr/lib/redis/modules/ratelimit.so" | sudo tee -a /etc/redis/redis.conf
|
38 | 59 | sudo service redis-server restart
|
| 60 | +
|
39 | 61 | - name: Prepare environment
|
40 | 62 | run: echo "$HOME/nginx/sbin" >> $GITHUB_PATH
|
| 63 | + |
41 | 64 | - name: Run integration tests
|
42 | 65 | run: prove -r t
|
0 commit comments