Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(e2e): run e2e tests as actions #15

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added workflows/e2e/README.md
Empty file.
105 changes: 105 additions & 0 deletions workflows/e2e/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
name: "e2e-workflow"
description: "Run Greenhouse E2E test against a Kubernetes cluster"
inputs:
admin-cluster-name:
description: "The kind cluster name"
required: false
default: "greenhouse-admin"
remote-cluster-name:
description: "The kind cluster name"
required: false
default: "greenhouse-remote"
namespace:
description: "The namespcace to be created in the kind cluster"
required: false
default: "greenhouse"
kubernetes-version:
description: "The Kubernetes version used to spin up clusters"
required: false
default: "v1.30.4"
go-version:
description: "The Go version to build greenhousectl"
required: false
default: "1.23"
runs:
using: "composite"
steps:
- name: Checkout tools repo
uses: actions/checkout@v4
with:
repository: cloudoperators/greenhouse
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ inputs.go-version }}
- name: Build greenhousectl
shell: bash
run: |
make build-greenhousectl
- name: Create k8s Kind Cluster
uses: helm/[email protected]
with:
install_only: true
- name: compose config.json
shell: bash
run: |
cat << EOF > $RUNNER_TEMP/config.json
{
"config":[
{
"cluster":{
"name": "${{ inputs.remote-cluster-name }}",
"version": "${{ inputs.kubernetes-version }}"
}
},
{
"cluster":{
"name": "${{ inputs.admin-cluster-name }}",
"namespace": "${{ inputs.namespace }}",
"version": "${{ inputs.kubernetes-version }}"
},
"dependencies":[
{
"manifest":{
"release":"greenhouse",
"chartPath":"charts/idproxy",
"crdOnly":true
}
},
{
"manifest":{
"release":"greenhouse",
"chartPath":"charts/manager",
"valuesPath":"dev-env/localenv/sample.values.yaml",
"crdOnly":false,
"webhook":{
"devMode":false,
"dockerFile":"./",
"envs":[
{
"name":"CONTROLLERS_ONLY",
"value":"true"
}
]
}
}
}
]
}
]
}
EOF
- name: run greenhousectl
shell: bash
run: |
bin/greenhousectl dev setup -f $RUNNER_TEMP/config.json
- name: export kubeconfig
shell: bash
run: |
kind export kubeconfig --name ${{ inputs.admin-cluster-name }} --kubeconfig $RUNNER_TEMP/e2e.kubeconfig
kind export kubeconfig --internal --name ${{ inputs.admin-cluster-name }} --kubeconfig $RUNNER_TEMP/e2e.internal.kubeconfig
Comment on lines +99 to +100
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will the second line not override the exported kubeconfig from the first line?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No it would not, because the first one exports to --kubeconfig $RUNNER_TEMP/e2e.kubeconfig and in the second there is an additional internal in the file name

- name: run e2e test
shell: bash
run: |
sleep 30s
USE_EXISTING_CLUSTER=true TEST_KUBECONFIG=$RUNNER_TEMP/e2e.kubeconfig INTERNAL_KUBECONFIG=$RUNNER_TEMP/e2e.internal.kubeconfig go test ./test/e2e/... -coverprofile cover.out -v