mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	Add script to generate integration test gitjobs
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
This commit is contained in:
		
							parent
							
								
									2084464225
								
							
						
					
					
						commit
						efd0f79fbc
					
				
							
								
								
									
										132
									
								
								cmd/gh-action-integration-generator/main.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								cmd/gh-action-integration-generator/main.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,132 @@ | ||||
| package main | ||||
| 
 | ||||
| //go:generate go run ./main.go
 | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"fmt" | ||||
| 	"log" | ||||
| 	"os" | ||||
| 	"text/template" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	jobFileNameTemplate = `test-integration-v2-%s.yaml` | ||||
| 	jobTemplate         = template.Must(template.New("jobTemplate").Parse(` | ||||
| # DO NOT EDIT, generated with cmd/gh-action-integration-generator/main.go | ||||
| # To regenerate, run "go generate" in cmd/gh-action-integration-generator/ | ||||
| 
 | ||||
| name: Integration Test v2 - {{.Name}} | ||||
| 
 | ||||
| on: [pull_request] | ||||
| 
 | ||||
| jobs: | ||||
|   test: | ||||
|     runs-on: ubuntu-latest | ||||
| 
 | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 2 | ||||
| 
 | ||||
|       - name: Get changed files | ||||
|         id: changed-files | ||||
|         uses: tj-actions/changed-files@v34 | ||||
|         with: | ||||
|           files: | | ||||
|             *.nix | ||||
|             go.* | ||||
|             **/*.go | ||||
|             integration_test/ | ||||
|             config-example.yaml | ||||
| 
 | ||||
|       - uses: cachix/install-nix-action@v16 | ||||
|         if: steps.changed-files.outputs.any_changed == 'true' | ||||
| 
 | ||||
|       - name: Run general integration tests | ||||
|         if: steps.changed-files.outputs.any_changed == 'true' | ||||
| <<<<<<< HEAD:integration/github_ci_jobs.go | ||||
|         run: > | ||||
|             nix develop --command -- | ||||
|             docker run | ||||
|                 --tty --rm | ||||
|                 --volume ~/.cache/hs-integration-go:/go | ||||
|                 --name headscale-test-suite | ||||
|                 --volume $$PWD:$$PWD -w $$PWD/integration | ||||
|                 --volume /var/run/docker.sock:/var/run/docker.sock | ||||
|                 golang:1 | ||||
|                 	go test ./... | ||||
| 						-tags ts2019 | ||||
| 						-failfast | ||||
| 						-timeout 120m | ||||
| 						-parallel 1 | ||||
| 						-run {{.Name}} | ||||
| ======= | ||||
|         run: | | ||||
|             nix develop --command -- docker run \ | ||||
|               --tty --rm \ | ||||
|               --volume ~/.cache/hs-integration-go:/go \ | ||||
|               --name headscale-test-suite \ | ||||
|               --volume $PWD:$PWD -w $PWD/integration \ | ||||
|               --volume /var/run/docker.sock:/var/run/docker.sock \ | ||||
|               golang:1 \ | ||||
|                 go test ./... \ | ||||
|                   -tags ts2019 \ | ||||
|                   -failfast \ | ||||
|                   -timeout 120m \ | ||||
|                   -parallel 1 \ | ||||
|                   -run {{.Name}} | ||||
| >>>>>>> dd5c2cd (move):cmd/gh-action-integration-generator/main.go | ||||
| `)) | ||||
| ) | ||||
| 
 | ||||
| const workflowFilePerm = 0o600 | ||||
| 
 | ||||
| func main() { | ||||
| 	type testConfig struct { | ||||
| 		Name string | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO(kradalby): automatic fetch tests at runtime
 | ||||
| 	tests := []string{ | ||||
| 		"TestAuthKeyLogoutAndRelogin", | ||||
| 		"TestAuthWebFlowAuthenticationPingAll", | ||||
| 		"TestAuthWebFlowLogoutAndRelogin", | ||||
| 		"TestCreateTailscale", | ||||
| 		"TestEnablingRoutes", | ||||
| 		"TestHeadscale", | ||||
| 		"TestNamespaceCommand", | ||||
| 		"TestOIDCAuthenticationPingAll", | ||||
| 		"TestOIDCExpireNodes", | ||||
| 		"TestPingAllByHostname", | ||||
| 		"TestPingAllByIP", | ||||
| 		"TestPreAuthKeyCommand", | ||||
| 		"TestPreAuthKeyCommandReusableEphemeral", | ||||
| 		"TestPreAuthKeyCommandWithoutExpiry", | ||||
| 		"TestResolveMagicDNS", | ||||
| 		"TestSSHIsBlockedInACL", | ||||
| 		"TestSSHMultipleNamespacesAllToAll", | ||||
| 		"TestSSHNoSSHConfigured", | ||||
| 		"TestSSHOneNamespaceAllToAll", | ||||
| 		"TestSSNamespaceOnlyIsolation", | ||||
| 		"TestTaildrop", | ||||
| 		"TestTailscaleNodesJoiningHeadcale", | ||||
| 	} | ||||
| 
 | ||||
| 	for _, test := range tests { | ||||
| 		var content bytes.Buffer | ||||
| 
 | ||||
| 		if err := jobTemplate.Execute(&content, testConfig{ | ||||
| 			Name: test, | ||||
| 		}); err != nil { | ||||
| 			log.Fatalf("failed to render template: %s", err) | ||||
| 		} | ||||
| 
 | ||||
| 		path := "../../.github/workflows/" + fmt.Sprintf(jobFileNameTemplate, test) | ||||
| 
 | ||||
| 		err := os.WriteFile(path, content.Bytes(), workflowFilePerm) | ||||
| 		if err != nil { | ||||
| 			log.Fatalf("failed to write github job: %s", err) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user