diff --git a/deploy/deployment.yaml b/deploy/deployment.yaml index 6e1b7f4..52f73c4 100644 --- a/deploy/deployment.yaml +++ b/deploy/deployment.yaml @@ -18,7 +18,7 @@ spec: app: accounts spec: containers: - - image: us.icr.io/sn-labs-imranullahkh/accounts:1 + - image: IMAGE_NAME_HERE name: accounts resources: {} diff --git a/tekton/pipeline.yaml b/tekton/pipeline.yaml index 1c238b3..46aab37 100644 --- a/tekton/pipeline.yaml +++ b/tekton/pipeline.yaml @@ -1,9 +1,3 @@ -# -# This pipeline needs the following tasks from Tekton Hub -# - git-clone -# - flake8 -# ---- apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: @@ -14,6 +8,7 @@ spec: params: - name: repo-url - name: branch + - name: build-image default: main tasks: - name: init @@ -36,3 +31,49 @@ spec: value: $(params.branch) runAfter: - init + + - name: tests + workspaces: + - name: source + workspace: pipeline-workspace + taskRef: + name: nose + params: + - name: database_uri + value: "sqlite:///test.db" + - name: args + value: "-v --with-spec --spec-color" + runAfter: + - clone + + - name: build + workspaces: + - name: source + workspace: pipeline-workspace + taskRef: + name: buildah + kind: ClusterTask + params: + - name: IMAGE + value: "$(params.build-image)" + runAfter: + - tests + + - name: deploy + workspaces: + - name: manifest-dir + workspace: pipeline-workspace + taskRef: + name: openshift-client + kind: ClusterTask + params: + - name: SCRIPT + value: | + echo "Updating manifest..." + sed -i "s|IMAGE_NAME_HERE|$(params.build-image)|g" deploy/deployment.yaml + cat deploy/deployment.yaml + echo "Deploying to OpenShift..." + oc apply -f deploy/ + oc get pods -l app=accounts + runAfter: + - build diff --git a/tekton/tasks.yaml b/tekton/tasks.yaml index 25644df..4738861 100644 --- a/tekton/tasks.yaml +++ b/tekton/tasks.yaml @@ -1,4 +1,3 @@ ---- apiVersion: tekton.dev/v1beta1 kind: Task metadata: @@ -49,4 +48,38 @@ spec: # Delete files and directories starting with .. plus any other character rm -rf "${WORKSPACE_SOURCE_PATH}"/..?* fi +--- +apiVersion: tekton.dev/v1beta1 +kind: Task +metadata: + name: nose +spec: + description: This task will run nosetests on the provided input. + workspaces: + - name: source + params: + - name: args + description: Arguments to pass to nose + type: string + default: "-v" + - name: database_uri + description: Database connection string + type: string + default: "sqlite:///test.db" + steps: + - name: nosetests + image: python:3.9-slim + workingDir: $(workspaces.source.path) + env: + - name: DATABASE_URI + value: $(params.database_uri) + script: | + #!/bin/bash + set -e + + echo "***** Installing dependencies *****" + python -m pip install --upgrade pip wheel + pip install -qr requirements.txt + echo "***** Running nosetests with: $(params.args)" + nosetests $(params.args) diff --git a/tests/test_routes.py b/tests/test_routes.py index d0e068f..0f11b93 100644 --- a/tests/test_routes.py +++ b/tests/test_routes.py @@ -192,4 +192,5 @@ def test_cors_security(self): response = self.client.get('/', environ_overrides=HTTPS_ENVIRON) self.assertEqual(response.status_code, status.HTTP_200_OK) # Check for the CORS header - self.assertEqual(response.headers.get('Access-Control-Allow-Origin'), '*') \ No newline at end of file + self.assertEqual(response.headers.get('Access-Control-Allow-Origin'), '*') + \ No newline at end of file