aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-12-02 11:44:20 +0100
committerGitHub <noreply@github.com>2022-12-02 11:44:20 +0100
commit9a46d8d95c937bdb356f9e373424e1a37aa37f04 (patch)
tree6cd43e85506ec5316ed2923042cfa76169f0e10d /.github
parent934056f21fb91b59c9a9c4413318a9387abf658e (diff)
Test and CI related changes (#2896)
In an attempt to: - make on-boarding a bit easier (`go test ./...` should now not need additional postgres setup) - get code coverage faster, not only scheduled at night - test the `create-account` binary
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/dendrite.yml75
-rw-r--r--.github/workflows/schedules.yaml82
2 files changed, 83 insertions, 74 deletions
diff --git a/.github/workflows/dendrite.yml b/.github/workflows/dendrite.yml
index fa428238..593012ef 100644
--- a/.github/workflows/dendrite.yml
+++ b/.github/workflows/dendrite.yml
@@ -68,7 +68,7 @@ jobs:
# run go test with different go versions
test:
- timeout-minutes: 5
+ timeout-minutes: 10
name: Unit tests (Go ${{ matrix.go }})
runs-on: ubuntu-latest
# Service containers to run with `container-job`
@@ -94,14 +94,22 @@ jobs:
strategy:
fail-fast: false
matrix:
- go: ["1.18", "1.19"]
+ go: ["1.19"]
steps:
- uses: actions/checkout@v3
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go }}
- cache: true
+ - uses: actions/cache@v3
+ # manually set up caches, as they otherwise clash with different steps using setup-go with cache=true
+ with:
+ path: |
+ ~/.cache/go-build
+ ~/go/pkg/mod
+ key: ${{ runner.os }}-go${{ matrix.go }}-unit-${{ hashFiles('**/go.sum') }}
+ restore-keys: |
+ ${{ runner.os }}-go${{ matrix.go }}-unit-
- name: Set up gotestfmt
uses: gotesttools/gotestfmt-action@v2
with:
@@ -194,6 +202,66 @@ jobs:
with:
jobs: ${{ toJSON(needs) }}
+ # run go test with different go versions
+ integration:
+ timeout-minutes: 20
+ needs: initial-tests-done
+ name: Integration tests (Go ${{ matrix.go }})
+ runs-on: ubuntu-latest
+ # Service containers to run with `container-job`
+ services:
+ # Label used to access the service container
+ postgres:
+ # Docker Hub image
+ image: postgres:13-alpine
+ # Provide the password for postgres
+ env:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_DB: dendrite
+ ports:
+ # Maps tcp port 5432 on service container to the host
+ - 5432:5432
+ # Set health checks to wait until postgres has started
+ options: >-
+ --health-cmd pg_isready
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+ strategy:
+ fail-fast: false
+ matrix:
+ go: ["1.19"]
+ steps:
+ - uses: actions/checkout@v3
+ - name: Setup go
+ uses: actions/setup-go@v3
+ with:
+ go-version: ${{ matrix.go }}
+ - name: Set up gotestfmt
+ uses: gotesttools/gotestfmt-action@v2
+ with:
+ # Optional: pass GITHUB_TOKEN to avoid rate limiting.
+ token: ${{ secrets.GITHUB_TOKEN }}
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cache/go-build
+ ~/go/pkg/mod
+ key: ${{ runner.os }}-go${{ matrix.go }}-test-race-${{ hashFiles('**/go.sum') }}
+ restore-keys: |
+ ${{ runner.os }}-go${{ matrix.go }}-test-race-
+ - run: go test -race -json -v -coverpkg=./... -coverprofile=cover.out $(go list ./... | grep -v /cmd/dendrite*) 2>&1 | gotestfmt
+ env:
+ POSTGRES_HOST: localhost
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_DB: dendrite
+ - name: Upload coverage to Codecov
+ uses: codecov/codecov-action@v3
+ with:
+ flags: unittests
+
# run database upgrade tests
upgrade_test:
name: Upgrade tests
@@ -404,6 +472,7 @@ jobs:
upgrade_test_direct,
sytest,
complement,
+ integration
]
runs-on: ubuntu-latest
if: ${{ !cancelled() }} # Run this even if prior jobs were skipped
diff --git a/.github/workflows/schedules.yaml b/.github/workflows/schedules.yaml
index ff4d4718..d2a1f6e1 100644
--- a/.github/workflows/schedules.yaml
+++ b/.github/workflows/schedules.yaml
@@ -10,79 +10,9 @@ concurrency:
cancel-in-progress: true
jobs:
- # run go test with different go versions
- test:
- timeout-minutes: 20
- name: Unit tests (Go ${{ matrix.go }})
- runs-on: ubuntu-latest
- # Service containers to run with `container-job`
- services:
- # Label used to access the service container
- postgres:
- # Docker Hub image
- image: postgres:13-alpine
- # Provide the password for postgres
- env:
- POSTGRES_USER: postgres
- POSTGRES_PASSWORD: postgres
- POSTGRES_DB: dendrite
- ports:
- # Maps tcp port 5432 on service container to the host
- - 5432:5432
- # Set health checks to wait until postgres has started
- options: >-
- --health-cmd pg_isready
- --health-interval 10s
- --health-timeout 5s
- --health-retries 5
- strategy:
- fail-fast: false
- matrix:
- go: ["1.18", "1.19"]
- steps:
- - uses: actions/checkout@v3
- - name: Setup go
- uses: actions/setup-go@v3
- with:
- go-version: ${{ matrix.go }}
- - name: Set up gotestfmt
- uses: gotesttools/gotestfmt-action@v2
- with:
- # Optional: pass GITHUB_TOKEN to avoid rate limiting.
- token: ${{ secrets.GITHUB_TOKEN }}
- - uses: actions/cache@v3
- with:
- path: |
- ~/.cache/go-build
- ~/go/pkg/mod
- key: ${{ runner.os }}-go${{ matrix.go }}-test-race-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-go${{ matrix.go }}-test-race-
- - run: go test -race -json -v -coverpkg=./... -coverprofile=cover.out $(go list ./... | grep -v /cmd/dendrite*) 2>&1 | gotestfmt
- env:
- POSTGRES_HOST: localhost
- POSTGRES_USER: postgres
- POSTGRES_PASSWORD: postgres
- POSTGRES_DB: dendrite
- - name: Upload coverage to Codecov
- uses: codecov/codecov-action@v3
-
- # Dummy step to gate other tests on without repeating the whole list
- initial-tests-done:
- name: Initial tests passed
- needs: [test]
- runs-on: ubuntu-latest
- if: ${{ !cancelled() }} # Run this even if prior jobs were skipped
- steps:
- - name: Check initial tests passed
- uses: re-actors/alls-green@release/v1
- with:
- jobs: ${{ toJSON(needs) }}
-
# run Sytest in different variations
sytest:
timeout-minutes: 60
- needs: initial-tests-done
name: "Sytest (${{ matrix.label }})"
runs-on: ubuntu-latest
strategy:
@@ -104,13 +34,23 @@ jobs:
image: matrixdotorg/sytest-dendrite:latest
volumes:
- ${{ github.workspace }}:/src
+ - /root/.cache/go-build:/github/home/.cache/go-build
+ - /root/.cache/go-mod:/gopath/pkg/mod
env:
POSTGRES: ${{ matrix.postgres && 1}}
API: ${{ matrix.api && 1 }}
SYTEST_BRANCH: ${{ github.head_ref }}
RACE_DETECTION: 1
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.cache/go-build
+ /gopath/pkg/mod
+ key: ${{ runner.os }}-go-sytest-${{ hashFiles('**/go.sum') }}
+ restore-keys: |
+ ${{ runner.os }}-go-sytest-
- name: Run Sytest
run: /bootstrap.sh dendrite
working-directory: /src