Skip to content

feat: add structured log writer #595

feat: add structured log writer

feat: add structured log writer #595

Workflow file for this run

name: Go Conformance CI
on:
pull_request:
branches:
- main
push:
branches:
- main
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@f086349bfa2bd1361f7909c78558e816508cdc10 # v2.8.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@72a4f36b10f1c6435ab1a86a9ea24bda464cc262 # v1.8.6
# Check if it's already in the cache
- name: Cache client
id: check-for-cached-client
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
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@72a4f36b10f1c6435ab1a86a9ea24bda464cc262 # v1.8.6
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@f086349bfa2bd1361f7909c78558e816508cdc10 # v2.8.0
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: Check out code
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version: '${{ matrix.go-version }}'
- name: Pre-fetch go dependencies and build
run: 'go build ./...'
- name: Fetch conformance client
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
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