You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

274 lines
7.5 KiB

apiVersion: v1
kind: Namespace
metadata:
annotations:
argocd.argoproj.io/sync-wave: "0"
openshift.io/description: ""
openshift.io/display-name: ""
labels:
kubernetes.io/metadata.name: eshop-dev
name: eshop-dev
spec:
finalizers:
- kubernetes
---
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
annotations:
argocd.argoproj.io/sync-wave: "20"
name: eshop-web
namespace: eshop-dev
spec:
lookupPolicy:
local: false
---
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
annotations:
argocd.argoproj.io/sync-wave: "20"
name: eshop-api
namespace: eshop-dev
spec:
lookupPolicy:
local: false
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
annotations:
argocd.argoproj.io/sync-wave: "20"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
name: cosign-sign
namespace: eshop-dev
spec:
params:
- name: cosignKeyRef
type: string
- name: cosignKeyPassword
type: string
- name: image
type: string
steps:
- name: cosign
image: gcr.io/projectsigstore/cosign:v2.0.2
args:
- sign
- -y
- --tlog-upload=false
- --key=$(params.cosignKeyRef)
- $(params.image)
env:
- name: COSIGN_PASSWORD
value: "$(params.cosignKeyPassword)"
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
annotations:
argocd.argoproj.io/sync-wave: "20"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
name: roxctl-image-check
namespace: eshop-dev
spec:
params:
- description: >-
Secret containing the StackRox API token with CI permissions and the
address:port tuple for StackRox Central (example: rox.stackrox.io:443)
name: roxctlSecret
type: string
- description: Bypass Central's cache for the image and force a new pull from the Scanner
name: forcePull
type: string
default: "false"
- description: Image name (registry hostname + port + path)
name: imageName
type: string
- description: Image digest
name: imageDigest
type: string
results:
- description: Output of `roxctl image check`
name: check_output
steps:
- env:
- name: FORCE_PULL
value: $(params.forcePull)
- name: DIGEST
value: $(params.imageDigest)
- name: NAME
value: $(params.imageName)
- name: FORCE_PULL
value: $(params.forcePull)
- name: ROX_API_TOKEN
valueFrom:
secretKeyRef:
key: token
name: $(params.roxctlSecret)
- name: ROX_CENTRAL_ENDPOINT
valueFrom:
secretKeyRef:
key: endpoint
name: $(params.roxctlSecret)
image: quay.io/skopeo/stable:v1.5.2
name: roxctl-image-check
resources: {}
script: |
#!/bin/bash
set -Eeuo pipefail
curl -s -k -L -H "Authorization: Bearer $ROX_API_TOKEN" "https://$ROX_CENTRAL_ENDPOINT/api/cli/download/roxctl-linux" --output /tmp/roxctl > /dev/null
chmod +x /tmp/roxctl
extra_args=""
if [ "${FORCE_PULL:-}" == "true" ]; then
extra_args="$extra_args --force"
fi
/tmp/roxctl image check --insecure-skip-tls-verify -e "$ROX_CENTRAL_ENDPOINT" --image "$NAME@$DIGEST" --send-notifications $extra_args
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
annotations:
argocd.argoproj.io/sync-wave: "20"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
name: eshoponweb-ci
namespace: eshop-dev
spec:
params:
- default: 'https://github.com/eShopOnWeb-OpenShift/eShopOnWeb.git'
name: GIT_REPO
type: string
- default: main
name: GIT_REVISION
type: string
- name: IMAGE_NAME
type: string
- name: DOTNET_STARTUP_PROJECT
type: string
tasks:
- name: git-clone
params:
- name: url
value: $(params.GIT_REPO)
- name: revision
value: $(params.GIT_REVISION)
- name: subdirectory
value: ''
- name: deleteExisting
value: 'true'
taskRef:
kind: ClusterTask
name: git-clone
workspaces:
- name: output
workspace: workspace
- name: build
params:
- name: IMAGE
value: $(params.IMAGE_NAME)
- name: TLSVERIFY
value: 'false'
- name: PATH_CONTEXT
value: .
- name: VERSION
value: 7.0-ubi8
- name: ENV_VARS
value:
- DOTNET_STARTUP_PROJECT=$(params.DOTNET_STARTUP_PROJECT)
runAfter:
- git-clone
taskRef:
kind: ClusterTask
name: s2i-dotnet
workspaces:
- name: source
workspace: workspace
- name: roxctl-image-check
taskRef:
name: roxctl-image-check
runAfter:
- build
params:
- name: roxctlSecret
value: stackrox-cicd-token
- name: imageName
value: $(params.IMAGE_NAME)
- name: imageDigest
value: $(tasks.build.results.IMAGE_DIGEST)
- name: cosign-sign
params:
- name: cosignKeyRef
value: k8s://eshop-dev/code-signature
- name: cosignKeyPassword
value: dummy
- name: image
value: $(params.IMAGE_NAME)@$(tasks.build.results.IMAGE_DIGEST)
runAfter:
- roxctl-image-check
taskRef:
kind: Task
name: cosign-sign
workspaces:
- name: workspace
---
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
annotations:
argocd.argoproj.io/sync-wave: "20"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
name: eshoponweb-cd
namespace: eshop-dev
spec:
params:
- name: IMAGESTREAM_NAME
type: string
- name: DEV_NAMESPACE
type: string
default: eshop-dev
- name: TEST_NAMESPACE
type: string
default: eshop-test
- name: PROD_NAMESPACE
type: string
default: eshop-prod
- name: APPLICATION_NAME
type: string
- name: IMAGE_DIGEST
type: string
tasks:
- name: roxctl-image-check
taskRef:
name: roxctl-image-check
params:
- name: roxctlSecret
value: stackrox-cicd-token
- name: imageName
value: image-registry.openshift-image-registry.svc:5000/$(params.DEV_NAMESPACE)/$(params.IMAGESTREAM_NAME)
- name: imageDigest
value: $(params.IMAGE_DIGEST)
- name: forcePull
value: "true"
- name: deploy-in-test
params:
- name: SCRIPT
value: |
oc tag $(params.DEV_NAMESPACE)/$(params.IMAGESTREAM_NAME)@$(params.IMAGE_DIGEST) $(params.TEST_NAMESPACE)/$(params.IMAGESTREAM_NAME):latest
oc set image deploy/$(params.APPLICATION_NAME) -n $(params.TEST_NAMESPACE) $(params.APPLICATION_NAME)=image-registry.openshift-image-registry.svc:5000/$(params.TEST_NAMESPACE)/$(params.IMAGESTREAM_NAME)@$(params.IMAGE_DIGEST)
runAfter:
- roxctl-image-check
taskRef:
kind: ClusterTask
name: openshift-client
- name: deploy-in-prod
params:
- name: SCRIPT
value: |
oc tag $(params.DEV_NAMESPACE)/$(params.IMAGESTREAM_NAME)@$(params.IMAGE_DIGEST) $(params.PROD_NAMESPACE)/$(params.IMAGESTREAM_NAME):latest
oc set image deploy/$(params.APPLICATION_NAME) -n $(params.PROD_NAMESPACE) $(params.APPLICATION_NAME)=image-registry.openshift-image-registry.svc:5000/$(params.PROD_NAMESPACE)/$(params.IMAGESTREAM_NAME)@$(params.IMAGE_DIGEST)
runAfter:
- deploy-in-test
taskRef:
kind: ClusterTask
name: openshift-client
---