dapr-test-sdk #179
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
# | |
# Copyright 2023 The Dapr Authors | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# | |
## Required secrets: | |
# - DAPR_BOT_TOKEN: Token for the Dapr bot | |
name: dapr-test-sdk | |
on: | |
# Run every 12 hours on weekdays, and every 24 hours on weekends. | |
schedule: | |
- cron: "16 */11 * * 1-5" | |
- cron: "41 0 * * 0,6" | |
# Dispatch on external events | |
repository_dispatch: | |
types: | |
- test-sdk-all | |
- test-sdk-python | |
- test-sdk-java | |
- test-sdk-js | |
- test-sdk-go | |
env: | |
GOOS: linux | |
GOARCH: amd64 | |
GOPROXY: https://proxy.golang.org | |
# Job(s) can be triggered with the following commands: | |
# /test-sdk-all | |
# /test-sdk-python | |
# /test-sdk-java | |
# /test-sdk-js | |
# /test-sdk-go | |
jobs: | |
python-sdk: | |
if: | | |
github.event_name == 'schedule' || | |
( github.event_name == 'repository_dispatch' && | |
( | |
github.event.action == 'test-sdk-all' || | |
github.event.action == 'test-sdk-python' | |
) | |
) | |
name: "Python SDK verification tests" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up for scheduled test | |
if: github.event_name != 'repository_dispatch' | |
run: | | |
echo "CHECKOUT_REPO=${{ github.repository }}" >> $GITHUB_ENV | |
echo "CHECKOUT_REF=refs/heads/master" >> $GITHUB_ENV | |
shell: bash | |
- name: Parse test payload | |
if: github.event_name == 'repository_dispatch' | |
uses: actions/[email protected] | |
with: | |
github-token: ${{secrets.DAPR_BOT_TOKEN}} | |
script: | | |
const testPayload = context.payload.client_payload; | |
if (testPayload) { | |
var fs = require('fs'); | |
// Set environment variables | |
fs.appendFileSync(process.env.GITHUB_ENV, | |
`CHECKOUT_REPO=${testPayload.pull_head_repo}\n`+ | |
`CHECKOUT_REF=${testPayload.pull_head_ref}\n`+ | |
`PR_NUMBER=${testPayload.issue.number}` | |
); | |
} | |
- name: Create PR comment | |
if: env.PR_NUMBER != '' | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-python | |
number: ${{ env.PR_NUMBER }} | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
# Dapr SDK Python test | |
🔗 **[Link to Action run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})** | |
Commit ref: ${{ env.CHECKOUT_REF }} | |
- name: Check out code | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ env.CHECKOUT_REPO }} | |
ref: ${{ env.CHECKOUT_REF }} | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
- name: "Set up Go" | |
id: setup-go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: "go.mod" | |
- name: Checkout python-sdk repo to run tests. | |
uses: actions/checkout@v3 | |
with: | |
repository: dapr/python-sdk | |
path: python-sdk | |
- name: Set up Dapr CLI | |
run: wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash -s | |
- name: Initialize Dapr runtime | |
run: | | |
dapr uninstall --all | |
dapr init | |
- name: Build and override daprd | |
run: | | |
make | |
mkdir -p $HOME/.dapr/bin/ | |
cp dist/linux_amd64/release/daprd $HOME/.dapr/bin/daprd | |
- name: Override placement service | |
run: | | |
docker stop dapr_placement | |
./dist/linux_amd64/release/placement --healthz-port 9091 & | |
- name: Install dependencies | |
run: | | |
cd python-sdk | |
python -m pip install --upgrade pip | |
pip install setuptools wheel twine tox | |
- name: Check Python Examples | |
run: | | |
cd python-sdk || true | |
tox -e examples | |
- name: Update PR comment for success | |
if: ${{ success() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-python | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ✅ Python SDK tests passed | |
- name: Update PR comment for failure | |
if: ${{ failure() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-python | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ❌ Python SDK tests failed | |
Please check the logs for details on the error. | |
- name: Update PR comment for cancellation | |
if: ${{ cancelled() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-python | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ⚠️ Python SDK tests cancelled | |
The Action has been canceled | |
java-sdk: | |
if: | | |
github.event_name == 'schedule' || | |
( github.event_name == 'repository_dispatch' && | |
( | |
github.event.action == 'test-sdk-all' || | |
github.event.action == 'test-sdk-java' | |
) | |
) | |
name: "Java SDK verification tests" | |
runs-on: ubuntu-latest | |
env: | |
JDK_VER: 11 | |
JAVA_SPRING_BOOT_VERSION: 2.7.8 | |
steps: | |
- name: Set up for scheduled test | |
if: github.event_name != 'repository_dispatch' | |
run: | | |
echo "CHECKOUT_REPO=${{ github.repository }}" >> $GITHUB_ENV | |
echo "CHECKOUT_REF=refs/heads/master" >> $GITHUB_ENV | |
shell: bash | |
- name: Parse test payload | |
if: github.event_name == 'repository_dispatch' | |
uses: actions/[email protected] | |
with: | |
github-token: ${{secrets.DAPR_BOT_TOKEN}} | |
script: | | |
const testPayload = context.payload.client_payload; | |
if (testPayload) { | |
var fs = require('fs'); | |
// Set environment variables | |
fs.appendFileSync(process.env.GITHUB_ENV, | |
`CHECKOUT_REPO=${testPayload.pull_head_repo}\n`+ | |
`CHECKOUT_REF=${testPayload.pull_head_ref}\n`+ | |
`PR_NUMBER=${testPayload.issue.number}` | |
); | |
} | |
- name: Create PR comment | |
if: env.PR_NUMBER != '' | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-java | |
number: ${{ env.PR_NUMBER }} | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
# Dapr SDK Java test | |
🔗 **[Link to Action run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})** | |
Commit ref: ${{ env.CHECKOUT_REF }} | |
- name: Check out code | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ env.CHECKOUT_REPO }} | |
ref: ${{ env.CHECKOUT_REF }} | |
- name: Set up OpenJDK ${{ env.JDK_VER }} | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ env.JDK_VER }} | |
- name: "Set up Go" | |
id: setup-go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: "go.mod" | |
- name: Checkout java-sdk repo to run tests. | |
uses: actions/checkout@v3 | |
with: | |
repository: dapr/java-sdk | |
path: java-sdk | |
- name: Set up Dapr CLI | |
run: wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash -s | |
- name: Initialize Dapr runtime | |
run: | | |
dapr uninstall --all | |
dapr init | |
- name: Build and override daprd | |
run: | | |
make | |
mkdir -p $HOME/.dapr/bin/ | |
cp dist/linux_amd64/release/daprd $HOME/.dapr/bin/daprd | |
- name: Override placement service | |
run: | | |
docker stop dapr_placement | |
./dist/linux_amd64/release/placement & | |
- name: Install java-sdk kafka using docker-compose | |
run: | | |
docker-compose -f ./java-sdk/sdk-tests/deploy/local-test-kafka.yml up -d | |
docker ps | |
- name: Install Local mongo database using docker-compose | |
run: | | |
docker-compose -f ./java-sdk/sdk-tests/deploy/local-test-mongo.yml up -d | |
docker ps | |
- name: Clean up files | |
run: cd java-sdk && mvn clean -B | |
- name: Build sdk | |
run: cd java-sdk && mvn compile -B -q | |
- name: Install jars | |
run: cd java-sdk && mvn install -q -B -DskipTests | |
- name: Integration tests using spring boot version ${{ env.JAVA_SPRING_BOOT_VERSION }} | |
id: integration_tests | |
run: cd java-sdk && PRODUCT_SPRING_BOOT_VERSION=${{ env.JAVA_SPRING_BOOT_VERSION }} mvn -B -f sdk-tests/pom.xml verify | |
- name: Upload test report for sdk | |
uses: actions/upload-artifact@master | |
with: | |
name: report-dapr-java-sdk | |
path: java-sdk/sdk/target/jacoco-report/ | |
- name: Upload test report for sdk-actors | |
uses: actions/upload-artifact@master | |
with: | |
name: report-dapr-java-sdk-actors | |
path: java-sdk/sdk-actors/target/jacoco-report/ | |
- name: Upload failsafe test report for sdk-tests on failure | |
if: ${{ failure() && steps.integration_tests.conclusion == 'failure' }} | |
uses: actions/upload-artifact@master | |
with: | |
name: failsafe-report-sdk-tests | |
path: java-sdk/sdk-tests/target/failsafe-reports | |
- name: Upload surefire test report for sdk-tests on failure | |
if: ${{ failure() && steps.integration_tests.conclusion == 'failure' }} | |
uses: actions/upload-artifact@master | |
with: | |
name: surefire-report-sdk-tests | |
path: java-sdk/sdk-tests/target/surefire-reports | |
- name: Update PR comment for success | |
if: ${{ success() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-java | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ✅ Java SDK tests passed | |
- name: Update PR comment for failure | |
if: ${{ failure() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-java | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ❌ Java SDK tests failed | |
Please check the logs for details on the error. | |
- name: Update PR comment for cancellation | |
if: ${{ cancelled() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-java | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ⚠️ Java SDK tests cancelled | |
The Action has been canceled | |
js-sdk: | |
if: | | |
github.event_name == 'schedule' || | |
( github.event_name == 'repository_dispatch' && | |
( | |
github.event.action == 'test-sdk-all' || | |
github.event.action == 'test-sdk-js' | |
) | |
) | |
name: "JS SDK verification tests" | |
runs-on: ubuntu-latest | |
env: | |
NODE_VER: 18 | |
services: | |
emqx: | |
image: emqx/emqx | |
ports: | |
- 1883:1883 | |
- 8081:8081 | |
- 8083:8083 | |
- 8883:8883 | |
- 18083:18083 | |
mongodb: | |
image: mongo | |
ports: | |
- 27017:27017 | |
steps: | |
- name: Set up for scheduled test | |
if: github.event_name != 'repository_dispatch' | |
run: | | |
echo "CHECKOUT_REPO=${{ github.repository }}" >> $GITHUB_ENV | |
echo "CHECKOUT_REF=refs/heads/master" >> $GITHUB_ENV | |
shell: bash | |
- name: Parse test payload | |
if: github.event_name == 'repository_dispatch' | |
uses: actions/[email protected] | |
with: | |
github-token: ${{secrets.DAPR_BOT_TOKEN}} | |
script: | | |
const testPayload = context.payload.client_payload; | |
if (testPayload) { | |
var fs = require('fs'); | |
// Set environment variables | |
fs.appendFileSync(process.env.GITHUB_ENV, | |
`CHECKOUT_REPO=${testPayload.pull_head_repo}\n`+ | |
`CHECKOUT_REF=${testPayload.pull_head_ref}\n`+ | |
`PR_NUMBER=${testPayload.issue.number}` | |
); | |
} | |
- name: Create PR comment | |
if: env.PR_NUMBER != '' | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-js | |
number: ${{ env.PR_NUMBER }} | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
# Dapr SDK JS test | |
🔗 **[Link to Action run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})** | |
Commit ref: ${{ env.CHECKOUT_REF }} | |
- name: Check out code | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ env.CHECKOUT_REPO }} | |
ref: ${{ env.CHECKOUT_REF }} | |
- name: NodeJS - Install | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VER }} | |
- name: "Set up Go" | |
id: setup-go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: "go.mod" | |
- name: Checkout js-sdk repo to run tests. | |
uses: actions/checkout@v3 | |
with: | |
repository: dapr/js-sdk | |
path: js-sdk | |
- name: Set up Dapr CLI | |
run: wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash -s | |
- name: Initialize Dapr runtime | |
run: | | |
dapr uninstall --all | |
dapr init | |
- name: Build and override daprd | |
run: | | |
make | |
mkdir -p $HOME/.dapr/bin/ | |
cp dist/linux_amd64/release/daprd $HOME/.dapr/bin/daprd | |
- name: Override placement service | |
run: | | |
docker stop dapr_placement | |
./dist/linux_amd64/release/placement & | |
- name: Build Package | |
run: cd js-sdk && npm run build | |
- name: Run E2E tests | |
id: tests | |
run: cd js-sdk && npm run test:e2e:all | |
- name: Run E2E test to show successful TypeScript build | |
run: | | |
cd js-sdk/test/e2e/typescript-build | |
npm install | |
dapr run --app-id typescript-build npm run start | |
- name: Update PR comment for success | |
if: ${{ success() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-js | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ✅ JS SDK tests passed | |
- name: Update PR comment for failure | |
if: ${{ failure() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-js | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ❌ JS SDK tests failed | |
Please check the logs for details on the error. | |
- name: Update PR comment for cancellation | |
if: ${{ cancelled() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-js | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ⚠️ JS SDK tests cancelled | |
The Action has been canceled | |
go-sdk: | |
if: | | |
github.event_name == 'schedule' || | |
( github.event_name == 'repository_dispatch' && | |
( | |
github.event.action == 'test-sdk-all' || | |
github.event.action == 'test-sdk-go' | |
) | |
) | |
name: "Go SDK verification tests" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up for scheduled test | |
if: github.event_name != 'repository_dispatch' | |
run: | | |
echo "CHECKOUT_REPO=${{ github.repository }}" >> $GITHUB_ENV | |
echo "CHECKOUT_REF=refs/heads/master" >> $GITHUB_ENV | |
shell: bash | |
- name: Parse test payload | |
if: github.event_name == 'repository_dispatch' | |
uses: actions/[email protected] | |
with: | |
github-token: ${{secrets.DAPR_BOT_TOKEN}} | |
script: | | |
const testPayload = context.payload.client_payload; | |
if (testPayload) { | |
var fs = require('fs'); | |
// Set environment variables | |
fs.appendFileSync(process.env.GITHUB_ENV, | |
`CHECKOUT_REPO=${testPayload.pull_head_repo}\n`+ | |
`CHECKOUT_REF=${testPayload.pull_head_ref}\n`+ | |
`PR_NUMBER=${testPayload.issue.number}` | |
); | |
} | |
- name: Create PR comment | |
if: env.PR_NUMBER != '' | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-go | |
number: ${{ env.PR_NUMBER }} | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
# Dapr SDK Go test | |
🔗 **[Link to Action run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})** | |
Commit ref: ${{ env.CHECKOUT_REF }} | |
- name: Check out code | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ env.CHECKOUT_REPO }} | |
ref: ${{ env.CHECKOUT_REF }} | |
- name: "Set up Go" | |
id: setup-go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: "go.mod" | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- name: Checkout go-sdk repo to run tests. | |
uses: actions/checkout@v3 | |
with: | |
repository: dapr/go-sdk | |
path: go-sdk | |
- name: Install Mechanical Markdown | |
run: | | |
cd go-sdk | |
python -m pip install --upgrade pip | |
pip install mechanical-markdown | |
- name: Set up Dapr CLI | |
run: wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash -s | |
- name: Initialize Dapr runtime | |
run: | | |
dapr uninstall --all | |
dapr init | |
- name: Build and override daprd with HEAD. | |
run: | | |
make | |
mkdir -p $HOME/.dapr/bin/ | |
cp dist/linux_amd64/release/daprd $HOME/.dapr/bin/daprd | |
- name: Override placement service. | |
run: | | |
docker stop dapr_placement | |
./dist/linux_amd64/release/placement --healthz-port 9091 & | |
- name: Check Examples | |
run: | | |
cd go-sdk/examples | |
./validate.sh hello-world | |
./validate.sh pubsub | |
./validate.sh service | |
./validate.sh actor | |
- name: Update PR comment for success | |
if: ${{ success() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-go | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ✅ Go SDK tests passed | |
- name: Update PR comment for failure | |
if: ${{ failure() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-go | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ❌ Go SDK tests failed | |
Please check the logs for details on the error. | |
- name: Update PR comment for cancellation | |
if: ${{ cancelled() }} | |
uses: artursouza/[email protected] | |
with: | |
header: ${{ github.run_id }}-go | |
number: ${{ env.PR_NUMBER }} | |
append: true | |
GITHUB_TOKEN: ${{ secrets.DAPR_BOT_TOKEN }} | |
message: | | |
## ⚠️ Go SDK tests cancelled | |
The Action has been canceled |