RAFT: db steps #9141
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: | |
- main | |
- 'stable/v*' | |
tags: | |
- '**' | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
Buf-Checks: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: bufbuild/buf-setup-action@v1 | |
- uses: bufbuild/buf-lint-action@v1 | |
with: | |
input: "cluster/proto" | |
- uses: bufbuild/buf-breaking-action@v1 | |
if: github.event_name == 'pull_request' | |
with: | |
input: "cluster/proto" | |
against: "https://github.com/${GITHUB_REPOSITORY}.git#branch=${{ github.event.pull_request.base.ref }},subdir=cluster/proto" | |
Run-Swagger: | |
name: run-swagger | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Run Swagger | |
run: ./tools/gen-code-from-swagger.sh | |
- name: Error on change | |
run: | | |
# check if anything is different | |
CHANGED=$(git status -s | wc -l) | |
if [ "$CHANGED" -gt 0 ]; then | |
echo "Please run ./tools/gen-code-from-swagger.sh script and commit changes:" | |
git status -s | |
exit 1 | |
else | |
exit 0 | |
fi | |
Vulnerability-Scanning: | |
name: vulnerability-scanning | |
runs-on: ubuntu-latest | |
if: ${{ !github.event.pull_request.head.repo.fork }} # no PRs from fork | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Scan for Vulnerabilities in Code | |
uses: Templum/govulncheck-action@v1.0.0 | |
with: | |
go-version: '1.21' | |
package: ./... | |
fail-on-vuln: true | |
Unit-Tests: | |
name: unit-tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Unit test | |
run: ./test/run.sh --unit-only | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report-unit | |
path: coverage-unit.txt | |
Integration-Tests: | |
name: integration-tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Integration test | |
run: ./test/run.sh --integration-only | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report-integration | |
path: coverage-integration.txt | |
Modules-Acceptance-Tests: | |
name: modules-acceptance-tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
test: [ | |
"--only-module-backup-azure", | |
"--only-module-backup-filesystem", | |
"--only-module-backup-gcs", | |
"--only-module-backup-s3", | |
"--only-module-img2vec-neural", | |
"--only-module-many-modules", | |
"--only-module-multi2vec-clip", | |
"--only-module-ref2vec-centroid", | |
"--only-module-reranker-transformers", | |
"--only-module-text2vec-contextionary", | |
"--only-module-text2vec-transformers", | |
"--only-module-text2vec-ollama", | |
"--only-module-generative-ollama" | |
] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Acceptance tests (modules) | |
uses: nick-fields/retry@v3 | |
with: | |
# 15 Minute is a large enough timeout for most of our tests | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: ./test/run.sh ${{ matrix.test }} | |
on_retry_command: ./test/run.sh --cleanup | |
Modules-Acceptance-Tests-large: | |
name: modules-acceptance-tests-large | |
runs-on: ubuntu-latest-4-cores | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ["--only-module-qna-transformers", "--only-module-sum-transformers"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Acceptance tests Large (modules) | |
uses: nick-fields/retry@v3 | |
with: | |
# 15 Minute is a large enough timeout for most of our tests | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: ./test/run.sh ${{ matrix.test }} | |
on_retry_command: ./test/run.sh --cleanup | |
Modules-Acceptance-Tests-gcp: | |
name: modules-acceptance-tests-gcp | |
runs-on: ubuntu-latest | |
if: ${{ !github.event.pull_request.head.repo.fork }} # no PRs from fork | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ["--only-module-multi2vec-palm", "--only-module-generative-palm", "--only-module-text2vec-palm"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: check | |
env: | |
COMMIT_SHA: ${{ github.event.pull_request.head.sha }} | |
run: | | |
commit_message=$(git log -1 --format=%B $COMMIT_SHA) | |
if [[ "$commit_message" == "[gcp]"* || "$commit_message" == "prepare release"* ]]; then | |
echo "Run pipeline" | |
echo "run_pipeline=true" >> $GITHUB_ENV | |
else | |
echo "Skip pipeline. In order to run the pipeline commit title must start with: [gcp]" | |
echo "run_pipeline=false" >> $GITHUB_ENV | |
fi | |
- name: configure | |
if : ${{ env.run_pipeline == 'true' || startsWith(github.ref, 'refs/tags') }} | |
env: | |
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} | |
GCP_PROJECT: ${{ secrets.GCP_PROJECT }} | |
run: ./tools/ci/gcloud.sh | |
- name: Acceptance tests (modules) | |
env: | |
GCP_PROJECT: ${{ secrets.GCP_PROJECT }} | |
if : ${{ env.run_pipeline == 'true' || startsWith(github.ref, 'refs/tags') }} | |
run: PALM_APIKEY=$(gcloud auth print-access-token) ./test/run.sh ${{ matrix.test }} | |
Acceptance-Tests: | |
name: acceptance-tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ["--acceptance-only-fast", "--acceptance-go-client", "--acceptance-only-graphql", "--acceptance-only-replication", "--acceptance-only-python"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Acceptance tests | |
uses: nick-fields/retry@v3 | |
env: | |
WCS_DUMMY_CI_PW: ${{ secrets.WCS_DUMMY_CI_PW }} | |
WCS_DUMMY_CI_PW_2: ${{ secrets.WCS_DUMMY_CI_PW_2 }} | |
with: | |
# 15 Minute is a large enough timeout for most of our tests | |
timeout_minutes: 15 | |
max_attempts: 3 | |
command: ./test/run.sh ${{ matrix.test }} | |
on_retry_command: ./test/run.sh --cleanup | |
Codecov: | |
needs: [Unit-Tests, Integration-Tests] | |
name: codecov | |
runs-on: ubuntu-latest | |
if: ${{ (github.ref_type == 'branch') && (github.ref_name != 'main') }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download coverage artifacts integration | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-report-unit | |
- name: Download coverage unit | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-report-integration | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: false | |
files: ./coverage-integration.txt, ./coverage-unit.txt | |
verbose: true | |
Compile-and-upload-binaries: | |
name: compile-and-upload-binaries | |
runs-on: ubuntu-latest-4-cores | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: Install GoReleaser | |
uses: goreleaser/goreleaser-action@v5 | |
with: | |
install-only: true | |
- name: goreleaser | |
run: | | |
GIT_HASH=$(git rev-parse --short HEAD) goreleaser build --clean --snapshot | |
- name: Upload macos | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binaries-macos-unsigned | |
path: dist/weaviate_darwin_all | |
- name: Upload windows | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binaries-windows-amd64 | |
path: dist/weaviate_windows_amd64_v1 | |
- name: Upload windows | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binaries-windows-arm64 | |
path: dist/weaviate_windows_arm64 | |
- name: Upload linux amd64 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binaries-linux-amd64 | |
path: dist/weaviate_linux_amd64_v1 | |
- name: Upload linux arm64 | |
uses: actions/upload-artifact@v4 | |
with: | |
name: binaries-linux-arm64 | |
path: dist/weaviate_linux_arm64 | |
Acceptance-Tests-windows: | |
name: acceptance-tests-windows | |
needs: Compile-and-upload-binaries | |
runs-on: windows-latest | |
env: | |
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: true | |
PERSISTENCE_DATA_PATH: /tmp | |
QUERY_DEFAULTS_LIMIT: 20 | |
CLUSTER_HOSTNAME: node1 | |
RAFT_BOOTSTRAP_EXPECT: 1 | |
RAFT_JOIN: node1 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download binaries | |
uses: actions/download-artifact@v4 | |
with: | |
name: binaries-windows-amd64 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21' | |
cache: true | |
- name: start weaviate | |
shell: bash | |
# Weaviate is started without a Vectorizer as running text2vec-contextionary on GH actions is difficult: | |
# - docker on GHA only supports windows container - which we currently are not build | |
# - building those containers without a windows machine is difficult to figure out | |
run: ./weaviate.exe --scheme http --port 8080 & | |
- name: run acceptance tests | |
shell: bash | |
run: go test -count 1 -race test/acceptance/actions/*.go # tests that don't need a Vectorizer | |
Push-Docker: | |
needs: [Unit-Tests, Run-Swagger, Vulnerability-Scanning, Integration-Tests] | |
name: push-docker | |
runs-on: ubuntu-latest-8-cores | |
if: ${{ !github.event.pull_request.head.repo.fork }} # no PRs from fork | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{secrets.DOCKER_USERNAME}} | |
password: ${{secrets.DOCKER_PASSWORD}} | |
- name: Push container | |
id: push-container | |
run: ./ci/push_docker.sh | |
env: | |
PR_TITLE: "${{ github.event.pull_request.title }}" | |
- name: Generate Report | |
env: | |
PREVIEW_TAG: "${{ steps.push-container.outputs.PREVIEW_TAG }}" | |
run: ./ci/generate_docker_report.sh |