diff --git a/eventlistener/e2e-test-webhook-listener.yaml b/eventlistener/e2e-test-webhook-listener.yaml new file mode 100644 index 0000000..2ad537e --- /dev/null +++ b/eventlistener/e2e-test-webhook-listener.yaml @@ -0,0 +1,34 @@ +apiVersion: triggers.tekton.dev/v1beta1 +kind: EventListener +metadata: + name: e2e-test-webhook-listener + namespace: goghvideo-cicd-pipeline +spec: + serviceAccountName: pipeline + triggers: + - name: e2etest-greeter-webhook + interceptors: + - name: gitea + ref: + name: gitea + kind: ClusterInterceptor + apiVersion: triggers.tekton.dev + params: + - name: secretRef + value: + secretName: webhook-secret + secretKey: sharedSecret + - name: eventTypes + value: ["pull_request", "pull_request_sync"] + - name: allow-create-and-update-only + ref: + name: cel + kind: ClusterInterceptor + params: + - name: filter + value: > + body.action in ['opened', 'synchronized'] + bindings: + - ref: gitea-binding + template: + ref: e2etest-template diff --git a/pipeline/e2e-test.yaml b/pipeline/e2e-test.yaml new file mode 100644 index 0000000..3011d4c --- /dev/null +++ b/pipeline/e2e-test.yaml @@ -0,0 +1,225 @@ +apiVersion: tekton.dev/v1beta1 +kind: Pipeline +metadata: + name: e2e-buildtest + namespace: goghvideo-cicd-pipeline +spec: + workspaces: + - name: source + - name: gitauth + - name: dockerconfig + - name: helm + - name: gitsshauth + params: + - name: git-repo-full-name + type: string + - name: git-token-secret-name + type: string + - name: git-token-secret-key + type: string + - name: git-commit-sha + type: string + - name: git-repo-url + type: string + description: Git URL to retrieve + - name: git-branch + type: string + description: branch to checkout + - name: git-pr-index + description: PR number to merge + - name: git-merge-type + description: What type of merge to do + - name: git-merge-delete-branch + description: delete the branch after merge + - name: verbose + type: string + default: "false" + - name: lint-package + type: string + - name: lint-context + type: string + description: Path to where the modules are stored + - name: lint-version + type: string + default: latest + - name: image + type: string + - name: s2i-builder-image + type: string + - name: git-helm-url + type: string + tasks: + - name: set-check-pending + taskRef: + name: gitea-set-status + params: + - name: SHA + value: $(params.git-commit-sha) + - name: GITEA_HOST_URL + value: git.endofday.com + - name: REPO_FULL_NAME + value: $(params.git-repo-full-name) + - name: GITEA_TOKEN_SECRET_NAME + value: $(params.git-token-secret-name) + - name: GITEA_TOKEN_SECRET_KEY + value: $(params.git-token-secret-key) + - name: DESCRIPTION + value: Build started + - name: STATE + value: pending + - name: TARGET_URL + value: https://console-openshift-console.apps.ocp.endofday.com/pipelines/all-namespaces + - name: git-semver + runAfter: + - set-check-pending + taskRef: + name: git-semver + params: + - name: gitrepositoryurl + value: $(params.git-repo-url) + - name: gitbranch + value: $(params.git-branch) + workspaces: + - name: repo + workspace: source + - name: gitauth + workspace: gitauth + - name: golangci-lint + runAfter: + - git-semver + taskRef: + name: golangci-lint + params: + - name: package + value: $(params.lint-package) + - name: context + value: $(params.lint-context) + - name: version + value: $(params.lint-version) + workspaces: + - name: source + workspace: source + - name: generate-imagetag + runAfter: + - golangci-lint + taskRef: + name: generate-image-tag + params: + - name: version + value: $(tasks.git-semver.results.version) + - name: image + value: $(params.image) + - name: s2i-build + runAfter: + - generate-imagetag + taskRef: + name: s2i-go-debug + kind: Task + params: + - name: TLSVERIFY + value: false + - name: BUILDER_IMAGE + value: $(params.s2i-builder-image) + - name: PATH_CONTEXT + value: $(params.lint-context) + - name: verbose + value: true + - name: IMAGE + value: $(tasks.generate-imagetag.results.imagetag) + - name: ENV_VARS + value: + - semver=$(tasks.git-semver.results.version) + workspaces: + - name: source + workspace: source + - name: dockerconfig + workspace: dockerconfig + - name: pass-pr-check + runAfter: ["generate-imagetag"] + taskRef: + name: gitea-set-status + params: + - name: SHA + value: $(params.git-commit-sha) + - name: GITEA_HOST_URL + value: git.endofday.com + - name: REPO_FULL_NAME + value: $(params.git-repo-full-name) + - name: GITEA_TOKEN_SECRET_NAME + value: $(params.git-token-secret-name) + - name: GITEA_TOKEN_SECRET_KEY + value: $(params.git-token-secret-key) + - name: DESCRIPTION + value: Tekton CI Pipeline + - name: STATE + value: success + - name: TARGET_URL + value: https://console-openshift-console.apps.ocp.endofday.com/pipelines + - name: create-git-release + runAfter: ["pass-pr-check"] + taskRef: + name: gitea-create-release + params: + - name: SHA + value: $(params.git-commit-sha) + - name: GITEA_HOST_URL + value: git.endofday.com + - name: REPO_FULL_NAME + value: $(params.git-repo-full-name) + - name: GITEA_TOKEN_SECRET_NAME + value: $(params.git-token-secret-name) + - name: GITEA_TOKEN_SECRET_KEY + value: $(params.git-token-secret-key) + - name: TAG + value: $(tasks.git-semver.results.version) + - name: TITLE + value: $(params.git-repo-full-name)-$(tasks.git-semver.results.version) + - name: perform-merge + runAfter: ["create-git-release"] + taskRef: + name: gitea-merge-pr + params: + - name: GITEA_HOST_URL + value: git.endofday.com + - name: REPO_FULL_NAME + value: $(params.git-repo-full-name) + - name: GITEA_TOKEN_SECRET_NAME + value: $(params.git-token-secret-name) + - name: GITEA_TOKEN_SECRET_KEY + value: $(params.git-token-secret-key) + - name: DESCRIPTION + value: Automatically merged by CI pipeline + - name: INDEX + value: $(params.git-pr-index) + - name: MERGETYPE + value: $(params.git-merge-type) + - name: DELETEBRANCH + value: $(params.git-merge-delete-branch) + - name: TARGET_URL + value: https://console-openshift-console.apps.ocp.endofday.com/pipelines + finally: + - name: fail-pr-check + when: + - input: $(tasks.status) + operator: in + values: + - Failed + taskRef: + name: gitea-set-status + params: + - name: SHA + value: $(params.git-commit-sha) + - name: GITEA_HOST_URL + value: git.endofday.com + - name: REPO_FULL_NAME + value: $(params.git-repo-full-name) + - name: GITEA_TOKEN_SECRET_NAME + value: $(params.git-token-secret-name) + - name: GITEA_TOKEN_SECRET_KEY + value: $(params.git-token-secret-key) + - name: DESCRIPTION + value: Tekton CI Pipeline + - name: STATE + value: failure + - name: TARGET_URL + value: https://console-openshift-console.apps.ocp.endofday.com/pipelines diff --git a/triggertemplate/e2e-test.yaml b/triggertemplate/e2e-test.yaml new file mode 100644 index 0000000..a5d9de5 --- /dev/null +++ b/triggertemplate/e2e-test.yaml @@ -0,0 +1,88 @@ +apiVersion: triggers.tekton.dev/v1beta1 +kind: TriggerTemplate +metadata: + name: 2e2test-template + namespace: goghvideo-cicd-pipeline +spec: + params: + - name: gitrepositoryurl + description: The git repository url + - name: gitfullreponame + description: The org and repo name + - name: gitreponame + description: The name of the repo + - name: gitbranch + description: Branch to act on + - name: gitcommitsha + description: The SHA head + - name: gitprindex + description: The pull request reference + resourcetemplates: + - apiVersion: tekton.dev/v1beta1 + kind: PipelineRun + metadata: + generateName: goghvideo-e2etest- + spec: + pipelineRef: + name: e2etest-buildtest + serviceAccountName: pipeline + params: + - name: git-repo-url + value: $(tt.params.gitrepositoryurl) + - name: git-repo-full-name + value: $(tt.params.gitfullreponame) + - name: git-branch + value: $(tt.params.gitbranch) + - name: git-commit-sha + value: $(tt.params.gitcommitsha) + - name: git-pr-index + value: $(tt.params.gitprindex) + - name: verbose + value: true + - name: lint-package + value: git.endofday.com/goghvideo/e2e-test + - name: lint-context + value: $(tt.params.gitreponame)/src + - name: image + value: quay01.ipa.endofday.com/goghvideo/e2e-test + - name: s2i-builder-image + value: quay01.ipa.endofday.com/goghvideo/golang-s2i-buildah:v1 + - name: git-token-secret-name + value: git-http-credentials + - name: git-token-secret-key + value: password + - name: git-merge-type + value: merge + - name: git-merge-delete-branch + value: True + - name: git-helm-url + value: git@git-ssh.ipa.endofday.com:goghvideo/helm.git + workspaces: + - name: source + volumeClaimTemplate: + spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi + storageClassName: nfs-client + - name: gitauth + secret: + secretName: git-http-credentials + - name: gitsshauth + secret: + secretName: git-credentials + - name: dockerconfig + secret: + secretName: goghvideo-container-registry-push + - name: helm + volumeClaimTemplate: + spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi + storageClassName: nfs-client +