fix: Overhaul the validation action (#495) #14
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: validate-examples | |
on: | |
push: | |
branches: | |
- main | |
- release-* | |
tags: | |
- v* | |
pull_request: | |
branches: | |
- main | |
- release-* | |
workflow_dispatch: | |
inputs: | |
daprdapr_commit: | |
description: 'Dapr/Dapr commit to build custom daprd from' | |
required: false | |
default: '' | |
daprcli_commit: | |
description: 'Dapr/CLI commit to build custom dapr CLI from' | |
required: false | |
default: '' | |
repository_dispatch: | |
types: [ validate-examples ] | |
merge_group: | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
env: | |
GOOS: linux | |
GOARCH: amd64 | |
GOPROXY: https://proxy.golang.org | |
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | |
DAPR_CLI_REF: ${{ github.event.inputs.daprcli_commit }} | |
DAPR_REF: ${{ github.event.inputs.daprdapr_commit }} | |
CHECKOUT_REPO: ${{ github.repository }} | |
CHECKOUT_REF: ${{ github.ref }} | |
outputs: | |
DAPR_INSTALL_URL: ${{ env.DAPR_INSTALL_URL }} | |
DAPR_CLI_VER: ${{ steps.outputs.outputs.DAPR_CLI_VER }} | |
DAPR_RUNTIME_VER: ${{ steps.outputs.outputs.DAPR_RUNTIME_VER }} | |
CHECKOUT_REPO: ${{ steps.outputs.outputs.CHECKOUT_REPO }} | |
CHECKOUT_REF: ${{ steps.outputs.outputs.CHECKOUT_REF }} | |
DAPR_REF: ${{ steps.outputs.outputs.DAPR_REF }} | |
steps: | |
- name: Parse repository_dispatch payload | |
if: github.event_name == 'repository_dispatch' | |
run: | | |
if [ ${{ github.event.client_payload.command }} = "ok-to-test" ]; then | |
echo "CHECKOUT_REPO=${{ github.event.client_payload.pull_head_repo }}" >> $GITHUB_ENV | |
echo "CHECKOUT_REF=${{ github.event.client_payload.pull_head_ref }}" >> $GITHUB_ENV | |
echo "DAPR_REF=master" >> $GITHUB_ENV | |
fi | |
- name: Check out code onto GOPATH | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.CHECKOUT_REPO }} | |
ref: ${{ env.CHECKOUT_REF }} | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: "go.mod" | |
- name: Run go mod tidy check diff | |
run: make modtidy check-diff | |
- name: Determine latest Dapr Runtime version | |
run: | | |
RUNTIME_VERSION=$(curl -s "https://api.github.com/repos/dapr/dapr/releases/latest" | grep '"tag_name"' | cut -d ':' -f2 | tr -d '",v') | |
echo "DAPR_RUNTIME_VER=$RUNTIME_VERSION" >> $GITHUB_ENV | |
echo "Found $RUNTIME_VERSION" | |
- name: Determine latest Dapr Cli version | |
run: | | |
CLI_VERSION=$(curl -s "https://api.github.com/repos/dapr/cli/releases/latest" | grep '"tag_name"' | cut -d ':' -f2 | tr -d '",v') | |
echo "DAPR_CLI_VER=$CLI_VERSION" >> $GITHUB_ENV | |
echo "Found $CLI_VERSION" | |
- name: Set up Dapr CLI | |
run: wget -q ${{ env.DAPR_INSTALL_URL }} -O - | /bin/bash -s ${{ env.DAPR_CLI_VER }} | |
- 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_runtime | |
- name: Build dapr cli with referenced commit. | |
if: env.DAPR_CLI_REF != '' | |
run: | | |
cd cli | |
make | |
mkdir -p $HOME/artifacts/$GITHUB_SHA/ | |
sudo cp dist/linux_amd64/release/dapr $HOME/artifacts/$GITHUB_SHA/dapr | |
- name: Build daprd and placement with referenced commit. | |
if: env.DAPR_REF != '' | |
run: | | |
cd dapr_runtime | |
make | |
mkdir -p $HOME/artifacts/$GITHUB_SHA/ | |
cp dist/linux_amd64/release/daprd $HOME/artifacts/$GITHUB_SHA/daprd | |
cp dist/linux_amd64/release/placement $HOME/artifacts/$GITHUB_SHA/placement | |
- name: Upload dapr-artifacts | |
uses: actions/upload-artifact@v4 | |
if: env.DAPR_REF != '' || env.DAPR_CLI_REF != '' | |
with: | |
name: dapr-artifacts | |
path: $HOME/artifacts/$GITHUB_SHA/ | |
if-no-files-found: error | |
retention-days: 1 | |
compression-level: 0 | |
- name: Outputs | |
id: outputs | |
run: | | |
echo "DAPR_INSTALL_URL=$DAPR_INSTALL_URL" | |
echo "DAPR_CLI_VER=$DAPR_CLI_VER" >> "$GITHUB_OUTPUT" | |
echo "DAPR_RUNTIME_VER=$DAPR_RUNTIME_VER" >> "$GITHUB_OUTPUT" | |
echo "CHECKOUT_REPO=$CHECKOUT_REPO" >> "$GITHUB_OUTPUT" | |
echo "CHECKOUT_REF=$CHECKOUT_REF" >> "$GITHUB_OUTPUT" | |
echo "DAPR_REF=$DAPR_REF" >> "$GITHUB_OUTPUT" | |
validate-example: | |
needs: setup | |
runs-on: ubuntu-latest | |
env: | |
PYTHON_VER: 3.12 | |
GOOS: linux | |
GOARCH: amd64 | |
GOPROXY: https://proxy.golang.org | |
DAPR_INSTALL_URL: ${{ needs.setup.outputs.DAPR_INSTALL_URL }} | |
DAPR_CLI_VER: ${{ needs.setup.outputs.DAPR_CLI_VER }} | |
DAPR_RUNTIME_VER: ${{ needs.setup.outputs.DAPR_RUNTIME_VER }} | |
DAPR_CLI_REF: ${{ github.event.inputs.daprcli_commit }} | |
DAPR_REF: ${{ github.event.inputs.daprdapr_commit }} | |
CHECKOUT_REPO: ${{ needs.setup.outputs.CHECKOUT_REPO }} | |
CHECKOUT_REF: ${{ needs.setup.outputs.CHECKOUT_REF }} | |
strategy: | |
fail-fast: false | |
matrix: | |
examples: [ "actor", "configuration", "grpc-service", "hello-world", "pubsub", "service", "socket" ] | |
steps: | |
- name: Check out code onto GOPATH | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.CHECKOUT_REPO }} | |
ref: ${{ env.CHECKOUT_REF }} | |
- name: Make Artifacts destination folder | |
if: env.DAPR_CLI_REF != '' || env.DAPR_REF != '' | |
run: | | |
mkdir -p $HOME/artifacts/$GITHUB_SHA/ | |
- name: Retrieve dapr-artifacts | |
if: env.DAPR_CLI_REF != '' || env.DAPR_REF != '' | |
uses: actions/download-artifact@v4 | |
with: | |
name: dapr-artifacts | |
path: $HOME/artifacts/$GITHUB_SHA/ | |
- name: Set up Go | |
id: setup-go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: "go.mod" | |
- name: Set up Dapr CLI | |
run: wget -q ${{ env.DAPR_INSTALL_URL }} -O - | /bin/bash -s ${{ env.DAPR_CLI_VER }} | |
- name: Override dapr cli with referenced commit. | |
if: env.DAPR_CLI_REF != '' | |
run: | | |
sudo cp $HOME/artifacts/$GITHUB_SHA/dapr /usr/local/bin/dapr | |
- name: Initialize Dapr runtime ${{ env.DAPR_RUNTIME_VER }} | |
run: | | |
dapr uninstall --all | |
dapr init --runtime-version ${{ env.DAPR_RUNTIME_VER }} | |
- name: Override daprd and placement service with referenced commit. | |
if: env.DAPR_REF != '' | |
run: | | |
mkdir -p $HOME/.dapr/bin/ | |
cp $HOME/artifacts/$GITHUB_SHA/daprd $HOME/.dapr/bin/daprd | |
docker stop dapr_placement | |
$HOME/artifacts/$GITHUB_SHA/placement --healthz-port 9091 & | |
- name: Set up Python ${{ env.PYTHON_VER }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VER }} | |
- name: Install Mechanical Markdown | |
run: | | |
python -m pip install --upgrade pip | |
pip install mechanical-markdown | |
- name: Check Example | |
run: | | |
cd examples | |
./validate.sh ${{ matrix.examples }} |