
This sets the default permission for current CI workflows to only be able to read from the repository (scope: "contents"). When a used Github Action require additional permissions (like CodeQL) we grant that permission on job-level instead. This means that a compromised action will not be able to modify the repo or even steal secrets since all other permission-scopes are implicit set to "none", i.e. not permitted. This is recommended by [OpenSSF](https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions). This PR includes a small fix for the possibility of missing server logs artifacts, found while verifying the permission. The `upload-artifact@v3` action will replace artifacts which already exists. Since both CI-jobs `test-external-standalone` and `test-external-nodebug` uses the same artifact name, when both jobs fail, we only get logs from the last finished job. This can be avoided by using unique artifact names. This PR is part of #211 More about permissions and scope can be found here: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions --------- Signed-off-by: Björn Svensson <bjorn.a.svensson@est.tech>
89 lines
2.7 KiB
YAML
89 lines
2.7 KiB
YAML
name: External Server Tests
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
schedule:
|
|
- cron: '0 0 * * *'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
test-external-standalone:
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name != 'schedule' || github.repository == 'valkey-io/valkey'
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build
|
|
run: make SERVER_CFLAGS=-Werror
|
|
- name: Start valkey-server
|
|
run: |
|
|
./src/valkey-server --daemonize yes --save "" --logfile external-server.log \
|
|
--enable-protected-configs yes --enable-debug-command yes --enable-module-command yes
|
|
- name: Run external test
|
|
run: |
|
|
./runtest \
|
|
--host 127.0.0.1 --port 6379 \
|
|
--verbose \
|
|
--tags -slow
|
|
- name: Archive server log
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-external-standalone-log
|
|
path: external-server.log
|
|
|
|
test-external-cluster:
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name != 'schedule' || github.repository == 'valkey-io/valkey'
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build
|
|
run: make SERVER_CFLAGS=-Werror
|
|
- name: Start valkey-server
|
|
run: |
|
|
./src/valkey-server --cluster-enabled yes --daemonize yes --save "" --logfile external-server.log \
|
|
--enable-protected-configs yes --enable-debug-command yes --enable-module-command yes
|
|
- name: Create a single node cluster
|
|
run: ./src/valkey-cli cluster addslots $(for slot in {0..16383}; do echo $slot; done); sleep 5
|
|
- name: Run external test
|
|
run: |
|
|
./runtest \
|
|
--host 127.0.0.1 --port 6379 \
|
|
--verbose \
|
|
--cluster-mode \
|
|
--tags -slow
|
|
- name: Archive server log
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-external-cluster-log
|
|
path: external-server.log
|
|
|
|
test-external-nodebug:
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name != 'schedule' || github.repository == 'valkey-io/valkey'
|
|
timeout-minutes: 14400
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build
|
|
run: make SERVER_CFLAGS=-Werror
|
|
- name: Start valkey-server
|
|
run: |
|
|
./src/valkey-server --daemonize yes --save "" --logfile external-server.log
|
|
- name: Run external test
|
|
run: |
|
|
./runtest \
|
|
--host 127.0.0.1 --port 6379 \
|
|
--verbose \
|
|
--tags "-slow -needs:debug"
|
|
- name: Archive server log
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: test-external-nodebug-log
|
|
path: external-server.log
|