refactor(xtest): Convert to pytest framework #2816
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: X-Test | |
on: | |
pull_request: | |
workflow_call: | |
inputs: | |
platform-ref: | |
required: false | |
type: string | |
default: main | |
otdfctl-ref: | |
required: false | |
type: string | |
default: main | |
js-ref: | |
required: false | |
type: string | |
default: main | |
java-ref: | |
required: false | |
type: string | |
default: main | |
schedule: | |
- cron: "30 6 * * *" | |
jobs: | |
cross-client-test: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: read | |
env: | |
PLATFORM_REF: "${{ inputs.platform-ref || 'main' }}" | |
JS_REF: "${{ inputs.js-ref || 'main' }}" | |
OTDFCTL_REF: "${{ inputs.otdfctl-ref || 'main' }}" | |
JAVA_REF: "${{ inputs.java-ref || 'main' }}" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
repository: opentdf/tests | |
path: otdftests # use different name bc other repos might have tests directories | |
- name: Set up Node 20 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: "20.x" | |
registry-url: https://npm.pkg.github.com | |
- name: Set up Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- uses: bufbuild/buf-setup-action@382440cdb8ec7bc25a68d7b4711163d95f7cc3aa | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up JDK | |
uses: actions/setup-java@5896cecc08fd8a1fbdfaf517e29b571164b031f7 | |
with: | |
java-version: "11" | |
distribution: "adopt" | |
server-id: github | |
######## CHECKOUT THE PLATFORM ############# | |
- name: Check out platform | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
repository: opentdf/platform | |
path: platform | |
ref: ${{ env.PLATFORM_REF }} | |
- name: Set up go | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 | |
with: | |
go-version: "1.22.3" | |
check-latest: false | |
cache-dependency-path: | | |
platform/service/go.sum | |
platform/examples/go.sum | |
platform/protocol/go/go.sum | |
platform/sdk/go.sum | |
######## SPIN UP BACKEND ############# | |
- run: | | |
.github/scripts/init-temp-keys.sh | |
cp opentdf-dev.yaml opentdf.yaml | |
working-directory: platform | |
- name: Added Trusted Certs | |
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 | |
- run: docker compose up -d --wait --wait-timeout 240 | |
working-directory: platform | |
- run: go run ./service provision keycloak | |
working-directory: platform | |
- run: go run ./service provision fixtures | |
working-directory: platform | |
- uses: JarvusInnovations/background-action@2428e7b970a846423095c79d43f759abf979a635 | |
name: start server in background | |
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 | |
######## CHECKOUT CLIENT-WEB ############# | |
- name: Check out client-web | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
repository: opentdf/client-web | |
path: client-web | |
ref: ${{ env.JS_REF }} | |
######## SETUP THE JS CLI ############# | |
- name: build the js cli | |
run: | | |
make clean | |
CLIENT_VERSION=$(cd lib && npm pkg get version | tr -d \") | |
make lib/opentdf-client-$CLIENT_VERSION.tgz | |
rm -rf */node_modules | |
cd cli | |
npm uninstall @opentdf/client && npm ci && npm i ../lib/opentdf-client-*.tgz | |
npm pack | |
working-directory: client-web | |
- name: update packages | |
run: |- | |
npm ci | |
npm install ../../client-web/cli/opentdf-cli-*.tgz | |
npm list | |
working-directory: otdftests/xtest | |
######## CHECKOUT GO CLI ############# | |
- name: Check out otdfctl | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
repository: opentdf/otdfctl | |
path: otdfctl | |
ref: ${{ env.OTDFCTL_REF }} | |
######## SETUP THE GO CLI ############# | |
- name: Prepare go cli | |
run: |- | |
go get github.com/opentdf/platform/sdk@$PLATFORM_REF | |
go build . | |
cp ./otdfctl ../otdftests/xtest/sdk/go/otdfctl | |
working-directory: otdfctl | |
####### CHECKOUT JAVA SDK ############## | |
- name: Check out java-sdk | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
repository: opentdf/java-sdk | |
path: java-sdk | |
ref: ${{ env.JAVA_REF }} | |
####### SETUP JAVA CLI ############## | |
- name: Build java cli | |
run: | | |
mvn --batch-mode clean install -DskipTests | |
env: | |
BUF_INPUT_HTTPS_USERNAME: opentdf-bot | |
BUF_INPUT_HTTPS_PASSWORD: ${{ secrets.PERSONAL_ACCESS_TOKEN_OPENTDF }} | |
working-directory: java-sdk | |
- name: Move java cli to xtest | |
run: |- | |
cp cmdline/target/cmdline.jar ../otdftests/xtest/sdk/java/cmdline.jar | |
working-directory: java-sdk | |
######## RUN THE TESTS ############# | |
- name: Install test dependencies | |
run: |- | |
pip3 install -r requirements.txt | |
working-directory: otdftests/xtest | |
- name: Run xtests | |
run: |- | |
npm run test | |
working-directory: otdftests/xtest | |
###### TODO: move these unbound tests to v2 platform | |
# unbound-test-js: | |
# timeout-minutes: 60 | |
# runs-on: ubuntu-latest | |
# defaults: | |
# run: | |
# working-directory: xtest | |
# permissions: | |
# contents: read | |
# packages: read | |
# strategy: | |
# matrix: | |
# kasversion: [ python-kas, go-kas ] | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - name: Set kas-related environment variable | |
# shell: bash | |
# run: echo "KAS_VERSION=${{ matrix.kasversion }}" >> $GITHUB_ENV | |
# - name: Set up Node 18 | |
# uses: actions/setup-node@v3 | |
# with: | |
# node-version: "18.x" | |
# registry-url: https://npm.pkg.github.com | |
# - name: Set up Python 3.10 | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: "3.10" | |
# # todo: install and activate virtual env for python? | |
# - name: update packages | |
# run: |- | |
# npm ci | |
# npm install @opentdf/cli@${{ github.event.client_payload.version }} @opentdf/client@${{ github.event.client_payload.version }} | |
# npm list | |
# pip3 install -r requirements.txt | |
# env: | |
# NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# - uses: yokawasa/[email protected] | |
# with: | |
# setup-tools: | | |
# kubectl | |
# helm | |
# tilt | |
# # This should be in sync with the minikube-deployed kube version below | |
# kubectl: "1.24.1" | |
# helm: "3.9.2" | |
# tilt: "0.31.2" | |
# - run: | | |
# kubectl version --client | |
# kustomize version | |
# tilt version | |
# - name: start minikube | |
# id: minikube | |
# uses: medyagh/setup-minikube@master | |
# with: | |
# minikube-version: 1.26.0 | |
# # This should be in sync with the setup-tools version above | |
# kubernetes-version: 1.24.1 | |
# - name: Run tilt | |
# run: |- | |
# [[ -z "${{github.event.inputs.backendVersion}}" ]] && export BACKEND_LATEST_VERSION=$(skopeo list-tags docker://ghcr.io/opentdf/charts/backend \ | |
# | python3 -c "import sys, json; sys.stdout.write([tag for tag in json.load(sys.stdin)['Tags'] if not tag.endswith('.sig')][-1])") || export BACKEND_LATEST_VERSION="${{github.event.inputs.backendVersion}}" | |
# echo "Testing Backend [$BACKEND_LATEST_VERSION]">>$GITHUB_STEP_SUMMARY | |
# kubectl version | |
# tilt ci -f Tiltfile.unbound-js-sdk | |