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