E2E - Self-hosted #16046
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 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: E2E - Self-hosted | |
on: | |
push: | |
branches: | |
- master | |
- release-* | |
paths-ignore: | |
- "**.md" | |
schedule: | |
- cron: "0 */3 * * *" | |
- cron: "0 */6 * * *" | |
pull_request: | |
branches: | |
- master | |
- "release-*" | |
paths-ignore: | |
- "**.md" | |
jobs: | |
self-hosted-e2e: | |
name: Run Self-Hosted E2E tests in ${{ matrix.target_os }}_${{ matrix.target_arch }}_${{ matrix.dapr_install_mode }} | |
runs-on: ${{ matrix.os }} | |
env: | |
GOOS: ${{ matrix.target_os }} | |
GOARCH: ${{ matrix.target_arch }} | |
GOPROXY: https://proxy.golang.org | |
ARCHIVE_OUTDIR: dist/archives | |
DAPR_RUNTIME_PINNED_VERSION: "1.13.0-rc.2" | |
DAPR_DASHBOARD_PINNED_VERSION: 0.14.0 | |
DAPR_RUNTIME_LATEST_STABLE_VERSION: "" | |
DAPR_DASHBOARD_LATEST_STABLE_VERSION: "" | |
GOLANG_PROTOBUF_REGISTRATION_CONFLICT: warn | |
PODMAN_VERSION: 4.4.4 | |
strategy: | |
# TODO: Remove this when our E2E tests are stable for podman on MacOS. | |
fail-fast: false # Keep running if one leg fails. | |
matrix: | |
# See https://github.com/actions/runner-images | |
os: [macos-latest-large, ubuntu-latest, windows-latest] | |
target_arch: [amd64] | |
dapr_install_mode: [slim, complete] | |
include: | |
- os: ubuntu-latest | |
target_os: linux | |
- os: macos-latest-large | |
target_os: darwin | |
- os: windows-latest | |
target_os: windows | |
exclude: | |
- os: windows-latest | |
dapr_install_mode: complete | |
steps: | |
- name: Prepare Go's bin location - MacOS | |
if: matrix.os == 'macos-latest-large' | |
run: | | |
export PATH=$HOME/bin:$PATH | |
echo "$HOME/bin" >> $GITHUB_PATH | |
echo "GOBIN=$HOME/bin" >> $GITHUB_ENV | |
mkdir -p $HOME/bin | |
- name: Check out code into the Go module directory | |
uses: actions/checkout@v3 | |
- name: Set up Go | |
uses: actions/setup-go@v3 | |
id: setup-go | |
with: | |
go-version-file: "go.mod" | |
- name: Cache Go modules (Linux) | |
if: matrix.target_os == 'linux' | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cache/go-build | |
~/go/pkg/mod | |
key: ${{ matrix.target_os }}-${{ matrix.target_arch }}-go-${{ steps.setup-go.outputs.go-version }}-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ matrix.target_os }}-${{ matrix.target_arch }}-go-${{ steps.setup-go.outputs.go-version }}- | |
- name: Cache Go modules (Windows) | |
if: matrix.target_os == 'windows' | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~\AppData\Local\go-build | |
~\go\pkg\mod | |
key: ${{ matrix.target_os }}-${{ matrix.target_arch }}-go-${{ steps.setup-go.outputs.go-version }}-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ matrix.target_os }}-${{ matrix.target_arch }}-go-${{ steps.setup-go.outputs.go-version }}- | |
- name: Cache Go modules (macOS) | |
if: matrix.target_os == 'darwin' | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/Library/Caches/go-build | |
~/go/pkg/mod | |
key: ${{ matrix.target_os }}-${{ matrix.target_arch }}-go-${{ steps.setup-go.outputs.go-version }}-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ matrix.target_os }}-${{ matrix.target_arch }}-go-${{ steps.setup-go.outputs.go-version }}- | |
- name: Install podman - MacOS | |
timeout-minutes: 15 | |
if: matrix.os == 'macos-latest-large' && matrix.dapr_install_mode == 'complete' | |
run: | | |
# Install podman | |
curl -sL -o podman.pkg https://github.com/containers/podman/releases/download/v${{ env.PODMAN_VERSION }}/podman-installer-macos-amd64.pkg | |
sudo installer -pkg podman.pkg -target / | |
export PATH=/opt/podman/bin:$PATH | |
echo "/opt/podman/bin" >> $GITHUB_PATH | |
# Start podman machine | |
sudo podman-mac-helper install | |
podman machine init | |
podman machine start --log-level debug | |
echo "CONTAINER_RUNTIME=podman" >> $GITHUB_ENV | |
- name: Determine latest Dapr Runtime version including Pre-releases | |
if: github.base_ref == 'master' | |
run: | | |
export RUNTIME_VERSION=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/dapr/dapr/releases | grep tag_name | awk -F':' '{print $2}' | tr -d '", ' | sed '/-/! s/$/_/' | sort -V | sed 's/_$//' | tr -d 'v' | tail -1) | |
if [[ -z "$RUNTIME_VERSION" ]]; then | |
echo "Could not fetch the latest Dapr Runtime version. Using pinned version $DAPR_RUNTIME_PINNED_VERSION" | |
else | |
echo "Found $RUNTIME_VERSION" | |
echo "DAPR_RUNTIME_PINNED_VERSION=$RUNTIME_VERSION" >> $GITHUB_ENV | |
fi | |
shell: bash | |
- name: Determine latest Dapr Dashboard version including Pre-releases | |
if: github.base_ref == 'master' | |
run: | | |
export DASHBOARD_VERSION=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/dapr/dashboard/releases | grep tag_name | awk -F':' '{print $2}' | tr -d '", ' | sed '/-/! s/$/_/' | sort -V | sed 's/_$//' | tr -d 'v' | tail -1) | |
if [[ -z "$DASHBOARD_VERSION" ]]; then | |
echo "Could not fetch the latest Dapr Dashboard version. Using pinned version $DAPR_DASHBOARD_PINNED_VERSION" | |
else | |
echo "Found $DASHBOARD_VERSION" | |
echo "DAPR_DASHBOARD_PINNED_VERSION=$DASHBOARD_VERSION" >> $GITHUB_ENV | |
fi | |
shell: bash | |
- name: Determine latest stable Dapr Runtime version | |
run: | | |
export LATEST_STABLE_RUNTIME_VERSION=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/dapr/dapr/releases/latest | grep tag_name | awk -F':' '{print $2}' | tr -d '", ' | sed '/-/! s/$/_/' | sort -V | sed 's/_$//' | tr -d 'v' | tail -1) | |
echo "Found $LATEST_STABLE_RUNTIME_VERSION" | |
echo "DAPR_RUNTIME_LATEST_STABLE_VERSION=$LATEST_STABLE_RUNTIME_VERSION" >> $GITHUB_ENV | |
shell: bash | |
- name: Determine latest stable Dapr Dashboard version | |
run: | | |
export LATEST_STABLE_DASHBOARD_VERSION=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/dapr/dashboard/releases/latest | grep tag_name | awk -F':' '{print $2}' | tr -d '", ' | sed '/-/! s/$/_/' | sort -V | sed 's/_$//' | tr -d 'v' | tail -1) | |
echo "Found $LATEST_STABLE_DASHBOARD_VERSION" | |
echo "DAPR_DASHBOARD_LATEST_STABLE_VERSION=$LATEST_STABLE_DASHBOARD_VERSION" >> $GITHUB_ENV | |
shell: bash | |
- name: Set the test timeout - MacOS | |
if: matrix.os == 'macos-latest-large' | |
run: echo "E2E_SH_TEST_TIMEOUT=30m" >> $GITHUB_ENV | |
- name: Run E2E tests with GHCR | |
# runs every 6hrs | |
if: github.event.schedule == '0 */6 * * *' | |
env: | |
DAPR_DEFAULT_IMAGE_REGISTRY: ghcr | |
DAPR_E2E_INIT_SLIM: ${{ contains(matrix.os, 'windows-latest') || contains(matrix.dapr_install_mode, 'slim') }} | |
CONTAINER_RUNTIME: ${{ env.CONTAINER_RUNTIME }} | |
E2E_SH_TEST_TIMEOUT: ${{ env.E2E_SH_TEST_TIMEOUT }} | |
run: | | |
export TEST_OUTPUT_FILE=$GITHUB_WORKSPACE/test-e2e-standalone.json | |
echo "TEST_OUTPUT_FILE=$TEST_OUTPUT_FILE" >> $GITHUB_ENV | |
export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} | |
make e2e-build-run-sh | |
shell: bash | |
- name: Run E2E tests with Docker hub | |
if: github.event.schedule != '0 */6 * * *' | |
env: | |
DAPR_E2E_INIT_SLIM: ${{ contains(matrix.os, 'windows-latest') || contains(matrix.dapr_install_mode, 'slim') }} | |
CONTAINER_RUNTIME: ${{ env.CONTAINER_RUNTIME }} | |
E2E_SH_TEST_TIMEOUT: ${{ env.E2E_SH_TEST_TIMEOUT }} | |
run: | | |
export TEST_OUTPUT_FILE=$GITHUB_WORKSPACE/test-e2e-standalone.json | |
echo "TEST_OUTPUT_FILE=$TEST_OUTPUT_FILE" >> $GITHUB_ENV | |
export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} | |
make e2e-build-run-sh | |
shell: bash | |
- name: Upload test results | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.target_os }}_${{ matrix.target_arch }}_${{ matrix.dapr_install_mode }}_e2e_standalone.json | |
path: ${{ env.TEST_OUTPUT_FILE }} |