feat(ci): make e2e test workflow reusable #3
Workflow file for this run
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
name: 'end-to-end' | |
on: | |
pull_request: | |
branches: | |
- main | |
paths-ignore: | |
- '**/*.yaml' | |
- '**/*.md' | |
- LICENSE | |
- CODEOWNERS | |
- '.gitignore' | |
workflow_call: | |
inputs: | |
platform-is-running: | |
required: false | |
description: 'If false, spin up the platform and its resources' | |
default: false | |
type: boolean | |
# In a remote workflow_call, we should use the inputs. | |
# In a local PR call, we should run the CLI PR branch against the main branch of the platform. | |
platform-ref: | |
required: false | |
description: 'The ref to check out for the platform' | |
default: '' | |
type: string | |
otdfctl-ref: | |
required: false | |
description: 'The ref to check out for the otdfctl CLI' | |
default: '' | |
type: string | |
jobs: | |
end-to-end: | |
name: otdfctl CLI e2e tests | |
runs-on: ubuntu-latest | |
env: | |
# Define 'bats' install location in ubuntu | |
BATS_LIB_PATH: /usr/lib | |
# Terminal width for testing printed output | |
TEST_TERMINAL_WIDTH: 200 | |
PLATFORM_IS_RUNNING: ${{ inputs.platform-is-running }} | |
# Ternaries to handle empty inputs (a PR within otdfctl), or remote call scenario | |
PLATFORM_REF: ${{ inputs.platform-ref == '' && 'main' || inputs.platform-ref }} | |
OTDFCTL_REF: ${{ inputs.otdfctl-ref == '' && github.event.pull_request.head.sha || inputs.otdfctl-ref }} | |
steps: | |
- name: Check out otdfctl CLI | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
ref: ${{ env.OTDFCTL_REF }} | |
# Spin up the platform IFF it's not already running in the current workflow context | |
- name: Check out platform | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
repository: opentdf/platform | |
path: platform | |
ref: ${{ env.PLATFORM_REF }} | |
- name: Set up go (platform's go version) | |
id: setup-go | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 | |
with: | |
go-version-file: 'platform/service/go.mod' | |
check-latest: false | |
cache-dependency-path: | | |
platform/service/go.sum | |
platform/protocol/go/go.sum | |
platform/sdk/go.sum | |
- name: Provide the platform with keys | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
run: | | |
.github/scripts/init-temp-keys.sh | |
cp opentdf-dev.yaml opentdf.yaml | |
working-directory: platform | |
- name: Trust the generated certs | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
run: | | |
sudo chmod -R 777 ./keys | |
sudo apt-get install -y ca-certificates | |
sudo cp ./keys/localhost.crt /usr/local/share/ca-certificates | |
sudo update-ca-certificates | |
working-directory: platform | |
- name: Spin up platform's containerized resources | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
run: docker compose up -d --wait --wait-timeout 240 | |
working-directory: platform | |
- name: Provision realms/clients/users into idP | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
run: go run ./service provision keycloak | |
working-directory: platform | |
- name: Provision test fixture policy | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
run: go run ./service provision fixtures | |
working-directory: platform | |
- name: Start platform server in background | |
if: ${{ ! env.PLATFORM_IS_RUNNING }} | |
uses: JarvusInnovations/background-action@2428e7b970a846423095c79d43f759abf979a635 | |
with: | |
run: > | |
go build -o opentdf -v service/main.go | |
&& .github/scripts/watch.sh opentdf.yaml ./opentdf start | |
wait-on: | | |
tcp:localhost:8080 | |
log-output-if: true | |
wait-for: 90s | |
working-directory: platform | |
# Build the CLI and run tests | |
- name: Set up go (CLI version, if needed) | |
if: steps.setup-go.outcome != 'success' | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 | |
with: | |
go-version-file: go.mod | |
- name: Build the CLI | |
run: go build . | |
- name: Build the CLI in test mode | |
run: make build-test | |
- name: Set up the CLI config | |
run: cp otdfctl-example.yaml otdfctl.yaml | |
- name: Setup Bats and bats libs | |
uses: bats-core/[email protected] | |
- run: tests/encrypt-decrypt.bats | |
- run: tests/kas-grants.bats | |
- run: tests/profile.bats | |
- run: tests/kas-registry.bats | |
- run: tests/namespaces.bats |