Skip to content

Commit 1d19935

Browse files
authored
feat(local E2E development simulation): add pr-e2e-test.yml for github action
1 parent 9cbea00 commit 1d19935

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

.github/workflows/pr-e2e-test.yml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: PR E2E Tests
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
e2e-pr:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: ⬇️ Checkout code
12+
uses: actions/checkout@v4
13+
14+
- name: ⚙️ Build local provider
15+
run: make build
16+
17+
- name: 🧩 Install local provider plugin
18+
run: make install-plugin
19+
20+
- name: 🩹 Patch main.tf files to use local provider
21+
run: |
22+
find e2e-tests -name "main.tf" -exec sed -i 's|source *= *"portainer/portainer"|source = "localdomain/local/portainer"|' {} +
23+
24+
- name: 🐳 Start Portainer via Docker Compose
25+
run: make up
26+
27+
- name: 🛠️ Install kubectl
28+
run: make install-kubectl
29+
30+
- name: 🔧 Install k3d
31+
run: make install-k3d
32+
33+
- name: ☸️ Create K3d cluster
34+
run: make k3d-up
35+
36+
- name: ☸️ Verify K3d cluster
37+
run: make k3d-status
38+
39+
- name: 🧠 Deploy Portainer Agent into Kubernetes
40+
run: make k8s-deploy-agent
41+
42+
- name: 🧬 Connect Portainer to k3d network
43+
run: make k3d-connect-portainer
44+
45+
- name: 🌐 Get Kubernetes server IP and export for Terraform
46+
run: make k3d-export-ip
47+
48+
- name: ⬇️ Install Terraform
49+
uses: hashicorp/setup-terraform@v3
50+
with:
51+
terraform_version: 1.6.6
52+
53+
- name: 🔍 Validate formatting (terraform fmt)
54+
run: terraform fmt -check -recursive
55+
56+
- name: 🧪 Run Terraform E2E tests - Create Kubernetes Environment
57+
run: |
58+
cd e2e-tests/environment
59+
terraform init -input=false
60+
terraform fmt -check
61+
terraform apply -auto-approve
62+
63+
- name: 🧪 Run Terraform E2E tests
64+
run: |
65+
APPLY_ONLY_DIRS=("stack" "webhook" "container_exec" "backup" "auth" "settings" "open_amt" "endpoint_snapshot" "endpoint_settings" "kubernetes_namespace")
66+
FULL_CYCLE_DIRS=("kubernetes_application" "kubernetes_clusterrole" "kubernetes_clusterrolebinding" "kubernetes_configmaps" "kubernetes_cronjob" "kubernetes_helm" "kubernetes_ingress" "kubernetes_ingresscontrollers" "kubernetes_job" "kubernetes_namespace_ingresscontrollers" "kubernetes_namespace_system" "kubernetes_role" "kubernetes_rolebinding" "kubernetes_secret" "kubernetes_service" "kubernetes_serviceaccounts" "kubernetes_storage" "kubernetes_volume"
67+
"custom_template" "docker_image" "docker_network" "docker_volume" "stack" "endpoint_group" "tag" "user-team-teammembership" "registry")
68+
69+
for dir in "${FULL_CYCLE_DIRS[@]}"; do
70+
if [ -d "e2e-tests/$dir" ]; then
71+
echo "▶️ Running full Terraform cycle in e2e-tests/$dir"
72+
cd "e2e-tests/$dir"
73+
terraform init -input=false
74+
terraform fmt -check
75+
terraform validate
76+
terraform apply -auto-approve
77+
terraform destroy -auto-approve
78+
cd -
79+
fi
80+
done
81+
82+
for dir in "${APPLY_ONLY_DIRS[@]}"; do
83+
if [ -d "e2e-tests/$dir" ]; then
84+
echo "▶️ Running apply-only Terraform in e2e-tests/$dir"
85+
cd "e2e-tests/$dir"
86+
terraform init -input=false
87+
terraform fmt -check
88+
terraform validate
89+
terraform apply -auto-approve
90+
cd -
91+
fi
92+
done
93+
94+
- name: 🧽 Run Terraform E2E tests - Destroy Kubernetes Environment
95+
run: |
96+
cd e2e-tests/environment
97+
terraform destroy -auto-approve
98+
99+
- name: 🧪 Run Terraform E2E tests - Added SSL for Portainer
100+
run: |
101+
cd e2e-tests/ssl
102+
terraform init -input=false
103+
terraform fmt -check
104+
terraform apply -auto-approve

0 commit comments

Comments
 (0)