name: Cloud integration on: push: paths-ignore: - '*.md' - '**/*.md' branches: - master jobs: # todo: Keep in sync with `release.yml` docker_build: name: Docker build runs-on: ubuntu-18.04 steps: - name: Checkout code # actions/checkout@v2 uses: actions/checkout@722adc6 - name: Setup SSH config for Packet run: | mkdir -p ~/.ssh/ touch ~/.ssh/id && chmod 600 ~/.ssh/id echo "${{ secrets.DOCKER_SSH_CONFIG }}" > ~/.ssh/config echo "${{ secrets.DOCKER_PRIVATE_KEY }}" > ~/.ssh/id echo "${{ secrets.DOCKER_KNOWN_HOSTS }}" > ~/.ssh/known_hosts ssh linkerd-docker docker version - name: Build docker images env: DOCKER_HOST: ssh://linkerd-docker DOCKER_TRACE: 1 run: | export PATH="`pwd`/bin:$PATH" bin/docker-build # todo: Keep in sync with `release.yml` docker_push: name: Docker push runs-on: ubuntu-18.04 needs: [docker_build] steps: - name: Checkout code # actions/checkout@v2 uses: actions/checkout@722adc6 - name: Set environment variables from scripts run: | . bin/_tag.sh echo ::set-env name=TAG::$(CI_FORCE_CLEAN=1 bin/root-tag) - name: Configure gcloud # linkerd/linkerd2-action-gcloud@v1.0.1 uses: linkerd/linkerd2-action-gcloud@308c4df with: cloud_sdk_service_account_key: ${{ secrets.CLOUD_SDK_SERVICE_ACCOUNT_KEY }} gcp_project: ${{ secrets.GCP_PROJECT }} gcp_zone: ${{ secrets.GCP_ZONE }} - name: Docker SSH setup run: | mkdir -p ~/.ssh/ touch ~/.ssh/id && chmod 600 ~/.ssh/id echo "${{ secrets.DOCKER_SSH_CONFIG }}" > ~/.ssh/config echo "${{ secrets.DOCKER_PRIVATE_KEY }}" > ~/.ssh/id echo "${{ secrets.DOCKER_KNOWN_HOSTS }}" > ~/.ssh/known_hosts ssh linkerd-docker docker version - name: Push docker images to registry env: DOCKER_HOST: ssh://linkerd-docker run: | export PATH="`pwd`/bin:$PATH" bin/docker-push-deps bin/docker-push $TAG bin/docker-retag-all $TAG master bin/docker-push master # todo: Keep in sync with `release.yml` cloud_integration_tests: name: Cloud integration tests runs-on: ubuntu-18.04 needs: [docker_push] steps: - name: Checkout code # actions/checkout@v2 uses: actions/checkout@722adc6 - name: Try to load cached Go modules # actions/cache@v1.1.2 uses: actions/cache@70655ec with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go- - name: Install linkerd CLI id: install_cli run: | TAG="$(CI_FORCE_CLEAN=1 bin/root-tag)" image="gcr.io/linkerd-io/cli-bin:$TAG" id=$(bin/docker create $image) bin/docker cp "$id:/out/linkerd-linux" "$HOME/.linkerd" $HOME/.linkerd version --client # validate CLI version matches the repo [[ "$TAG" == "$($HOME/.linkerd version --short --client)" ]] echo "Installed Linkerd CLI version: $TAG" echo "::set-output name=tag::$TAG" - name: Create GKE cluster # linkerd/linkerd2-action-gcloud@v1.0.1 uses: linkerd/linkerd2-action-gcloud@308c4df with: cloud_sdk_service_account_key: ${{ secrets.CLOUD_SDK_SERVICE_ACCOUNT_KEY }} gcp_project: ${{ secrets.GCP_PROJECT }} gcp_zone: ${{ secrets.GCP_ZONE }} preemptible: false create: true name: testing-${{ steps.install_cli.outputs.tag }}-${{ github.run_id }} - name: Run integration tests env: GITCOOKIE_SH: ${{ secrets.GITCOOKIE_SH }} run: | export PATH="`pwd`/bin:$PATH" echo "$GITCOOKIE_SH" | bash version="$($HOME/.linkerd version --client --short | tr -cd '[:alnum:]-')" bin/test-run $HOME/.linkerd - name: CNI tests run: | export TAG="$($HOME/.linkerd version --client --short)" go test -cover -race -v -mod=readonly ./cni-plugin/test -integration-tests