Skip to content

chore: run integration tests on pull request #394

chore: run integration tests on pull request

chore: run integration tests on pull request #394

Workflow file for this run

name: Go Conformance CI
on:
pull_request:
branches:
- master
push:
branches:
- master
workflow_dispatch:
# Declare default permissions as read only.
permissions: read-all
jobs:
# Download the Go conformance client binary in it's own Github runner so that the version of Go used doesn't matter
download-conformance-client:
runs-on: ubuntu-latest
outputs:
cache-key: ${{ steps.resolve-latest-client.outputs.version }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@128a63446a954579617e875aaab7d2978154e969 # v2.4.0
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
proxy.golang.org:443
sum.golang.org:443
storage.googleapis.com:443
- name: Resolve latest client version
id: resolve-latest-client
uses: GoogleCloudPlatform/functions-framework-conformance/.github/actions/client/resolve-latest@1975792fb34ebbfa058d690666186d669d3a5977 # v1.8.0
# Check if it's already in the cache
- name: Cache client
id: check-for-cached-client
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
with:
path: ~/go/bin/client
key: ${{ steps.resolve-latest-client.outputs.version }}
- name: Install and cache client
if: ${{ steps.check-for-cached-client.outputs.cache-hit != 'true' }}
uses: GoogleCloudPlatform/functions-framework-conformance/.github/actions/client/install@1975792fb34ebbfa058d690666186d669d3a5977 # v1.8.0
with:
cache-path: ~/go/bin/client
cache-key: ${{ steps.resolve-latest-client.outputs.version }}
build:
needs:
- download-conformance-client
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [1.13, 1.16, 1.18]
steps:
- name: Harden Runner
uses: step-security/harden-runner@6b3083af2869dc3314a0257a42f4af696cc79ba3 # v2.3.1
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: Check out code
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: '${{ matrix.go-version }}'
- name: Pre-fetch go dependencies and build
run: 'go build ./...'
- name: Fetch conformance client
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1
with:
path: ~/go/bin/client
key: ${{ needs.download-conformance-client.outputs.cache-key }}
- name: Run HTTP conformance tests
run: |
client \
-type=http \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/http/main.go"
- name: Run event conformance tests
run: |
client \
-type=legacyevent \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/legacyevent/main.go"
- name: Run CloudEvent conformance tests
run: |
client \
-type=cloudevent \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/cloudevent/main.go"
- name: Run HTTP conformance tests using declarative API
run: |
FUNCTION_TARGET=declarativeHTTP client \
-type=http \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/declarative/main.go"
- name: Run Typed conformance tests using declarative API
run: |
FUNCTION_TARGET=declarativeTyped client \
-type=http \
-declarative-type=typed \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/declarative/main.go"
- name: Run CloudEvent conformance tests using declarative API
run: |
FUNCTION_TARGET=declarativeCloudEvent client \
-type=cloudevent \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/declarative/main.go"
- name: Run HTTP concurrency conformance tests
run: |
FUNCTION_TARGET=concurrentHTTP client \
-type=http \
-buildpacks=false \
-start-delay=5 \
-cmd="go run testdata/conformance/cmd/declarative/main.go" \
-validate-concurrency=true