Skip to content

Let the list-context command output indicate the current context. #2447

Let the list-context command output indicate the current context.

Let the list-context command output indicate the current context. #2447

Workflow file for this run

name: "Integration Tests"
on:
pull_request_target:
types:
- labeled
env:
KUBECONFIG: ${{ github.workspace }}/kubeconfig.yaml
DTEST_KUBECONFIG: ${{ github.workspace }}/kubeconfig.yaml
TELEPRESENCE_REGISTRY: localhost:5000
DTEST_REGISTRY: localhost:5000
SCOUT_DISABLE: "1"
jobs:
build_image:
if: ${{ github.event.label.name == 'ok to test' }}
runs-on: ubuntu-latest
outputs:
telepresenceVersion: ${{ steps.build.outputs.version }}
steps:
- name: Remove label
uses: buildsville/add-remove-label@v2.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
labels: ok to test
type: remove
- uses: actions/checkout@v4
with:
ref: "${{ github.event.pull_request.head.sha }}"
fetch-depth: 0
show-progress: false
- uses: actions/setup-go@v5
with:
go-version: stable
- name: Build dev image
id: build
run: |
make save-tel2-image
echo "version=$(cat build-output/version.txt)" >> $GITHUB_OUTPUT
- name: Upload image
uses: actions/upload-artifact@v3
with:
name: image
path: build-output/tel2-image.tar
run_tests:
strategy:
fail-fast: false
matrix:
runners:
- ubuntu-latest
- ubuntu-arm64
- macos-latest # this runner uses arm64
- windows-2019
clusters:
- distribution: Kubeception
version: "1.27"
runs-on: ${{ matrix.runners }}
needs: build_image
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: "${{ github.event.pull_request.head.sha }}"
- name: install dependencies
uses: ./.github/actions/install-dependencies
- name: install dependencies for arm64
if: runner.os == 'Linux' && runner.arch == 'arm64'
run: |
sudo rm -f /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update -y
sudo apt-get install -y socat gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu make jq uidmap
- name: install docker for arm64
if: runner.os == 'Linux' && runner.arch == 'arm64'
run: |
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
dockerd-rootless-setuptool.sh install
- name: Build client
env:
TELEPRESENCE_VERSION: ${{needs.build_image.outputs.telepresenceVersion}}
run: make build
- name: Build client image
if: runner.os == 'Linux'
env:
TELEPRESENCE_VERSION: ${{needs.build_image.outputs.telepresenceVersion}}
run: make client-image
- name: Create cluster
uses: datawire/infra-actions/provision-cluster@v0.2.7
with:
kubeconfig: ${{ env.KUBECONFIG }}
kubeceptionToken: ${{ secrets.DEV_TELEPRESENCE_KUBECEPTION_TOKEN }}
kubeceptionProfile: small
lifespan: 7200
distribution: ${{ matrix.clusters.distribution }}
version: ${{ matrix.clusters.version }}
gkeCredentials: '{"project_id": "foo"}' # See https://github.com/datawire/infra-actions/issues/66
- name: Download prebuilt docker image
uses: actions/download-artifact@v3
with:
name: image
- name: Upload docker image to cluster
shell: bash
run: |
kubectl apply -f build-aux/image-importer.yaml
kubectl rollout status -w deployment/image-importer
POD_NAME=$(kubectl get pod -ojsonpath='{.items[0].metadata.name}' -l app=image-importer)
kubectl cp tel2-image.tar "$POD_NAME:/tmp/image.tar"
kubectl exec $POD_NAME -- //hostbin/ctr images import //tmp/image.tar
- name: Run integration tests
env:
DEV_TELEPRESENCE_VERSION: ${{needs.build_image.outputs.telepresenceVersion}}
TELEPRESENCE_VERSION: ${{needs.build_image.outputs.telepresenceVersion}}
uses: nick-fields/retry/@v3
with:
max_attempts: 3
shell: bash
timeout_minutes: 90
command: |
set -ex
if [[ ${RUNNER_OS} == "Windows" ]]; then
export PATH="$PATH:/C/Program Files/SSHFS-Win/bin"
fi
make check-integration
- uses: ./.github/actions/upload-logs
env:
LOG_SUFFIX: "${{ runner.os }}-${{ runner.arch }}-${{ matrix.clusters.distribution }}-${{ matrix.clusters.version }}"
if: always()