# Copyright 2021 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. name: Auto Validate Examples on: workflow_dispatch: push: branches: - master - release-* tags: - v* pull_request: branches: - master - release-* jobs: validate: runs-on: ubuntu-latest strategy: fail-fast: false # Keep running if one leg fails. matrix: java: [ 17 ] env: GOVER: "1.20" GOOS: linux GOARCH: amd64 GOPROXY: https://proxy.golang.org JDK_VER: ${{ matrix.java }} DAPR_CLI_VER: 1.15.0 DAPR_RUNTIME_VER: 1.15.3 DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.15.0/install/install.sh DAPR_CLI_REF: DAPR_REF: steps: - uses: actions/checkout@v4 - name: Set up OpenJDK ${{ env.JDK_VER }} uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: ${{ env.JDK_VER }} - name: Install Stable Docker id: setup_docker uses: docker/setup-docker-action@v4 - name: Check Docker version run: docker version - name: Set up Dapr CLI run: wget -q ${{ env.DAPR_INSTALL_URL }} -O - | /bin/bash -s ${{ env.DAPR_CLI_VER }} - name: Set up Go ${{ env.GOVER }} if: env.DAPR_REF != '' || env.DAPR_CLI_REF != '' uses: actions/setup-go@v5 with: go-version: ${{ env.GOVER }} - name: Checkout Dapr CLI repo to override dapr command. uses: actions/checkout@v4 if: env.DAPR_CLI_REF != '' with: repository: dapr/cli ref: ${{ env.DAPR_CLI_REF }} path: cli - name: Checkout Dapr repo to override daprd. uses: actions/checkout@v4 if: env.DAPR_REF != '' with: repository: dapr/dapr ref: ${{ env.DAPR_REF }} path: dapr - name: Build and override dapr cli with referenced commit. if: env.DAPR_CLI_REF != '' run: | cd cli make sudo cp dist/linux_amd64/release/dapr /usr/local/bin/dapr cd .. - name: Initialize Dapr runtime ${{ env.DAPR_RUNTIME_VER }} run: | dapr uninstall --all dapr init --runtime-version ${{ env.DAPR_RUNTIME_VER }} - name: Build and override daprd with referenced commit. if: env.DAPR_REF != '' run: | cd dapr make mkdir -p $HOME/.dapr/bin/ cp dist/linux_amd64/release/daprd $HOME/.dapr/bin/daprd cd .. - name: Override placement service. if: env.DAPR_REF != '' run: | docker stop dapr_placement cd dapr ./dist/linux_amd64/release/placement & - name: Install utilities dependencies run: | echo "PATH=$PATH:$HOME/.local/bin" >> $GITHUB_ENV pip3 install setuptools wheel pip3 install mechanical-markdown - name: Verify scheduler is listening on port. run: sleep 30 && docker logs dapr_scheduler && nc -vz localhost 50006 - name: Clean up files run: ./mvnw clean - name: Build sdk run: ./mvnw compile -q - name: Install jars run: ./mvnw install -q env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate Jobs example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/jobs/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate invoke http example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/invoke/http/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate invoke grpc example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/invoke/grpc/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate tracing example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/tracing/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate expection handling example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/exception/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate state example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/state/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate pubsub example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/pubsub/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate bindings HTTP example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/bindings/http/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate secrets example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/secrets/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate unit testing example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/unittesting/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate Configuration API example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/configuration/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate actors example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/actors/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate query state HTTP example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/querystate/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate workflows example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/workflows/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate streaming subscription example working-directory: ./examples run: | mm.py ./src/main/java/io/dapr/examples/pubsub/stream/README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}} - name: Validate Spring Boot examples working-directory: ./spring-boot-examples run: | mm.py README.md env: DOCKER_HOST: ${{steps.setup_docker.outputs.sock}}