This commit is contained in:
병준 박 2025-04-16 04:18:30 +00:00
parent 2e1cdf0fea
commit fe358d4815
13 changed files with 73 additions and 136 deletions

View File

@ -20,14 +20,14 @@ spec:
The name of the folder in the shared workspace to delete.
If empty, no cleanup action will be performed.
workspaces:
- name: shared
- name: base
steps:
- name: cleanup-folder
image: ubuntu
script: |
#!/bin/bash
base="/workspace/shared/$(params.base)"
base="/workspace/base/$(params.base)"
if [ -d "${base}" ]; then
rm -rf "${base}"
echo "Deleted folder: ${base}"

View File

@ -20,27 +20,19 @@ spec:
A prefix for the working folder name.
The final folder name will include this prefix, a timestamp, and a random string.
results:
- name: base
- name: context
description: |
The unique folder name created in the shared workspace.
- name: home
description: |
The unique home folder name created in the shared workspace.
- name: workshop
description: |
The unique working folder name created in the shared workspace.
workspaces:
- name: shared
- name: base
steps:
- name: create-folder
image: ubuntu
script: |
#!/bin/bash
uniqueFolder="$(params.workingFolderPrefix)-$(date +%s)-$(head /dev/urandom | tr -dc a-z0-9 | head -c 6)"
mkdir -p /workspace/shared/${uniqueFolder}/workshop
mkdir -p /workspace/shared/${uniqueFolder}/home
chmod -R a+rwX /workspace/shared/${uniqueFolder}
echo "Created folder: ${uniqueFolder}/{workshop | home}"
echo -n "${uniqueFolder}" > $(results.base.path)
echo -n "${uniqueFolder}/workshop" > $(results.workshop.path)
echo -n "${uniqueFolder}/home" > $(results.home.path)
context="$(params.workingFolderPrefix)-$(date +%s)-$(head /dev/urandom | tr -dc a-z0-9 | head -c 6)"
mkdir -p /workspace/base/${context}/source
mkdir -p /workspace/base/${context}/home
chmod -R a+rwX /workspace/base/${context}
echo "Created folder: ${context}/{source | home}"
echo -n "${context}" > $(results.context.path)

View File

@ -4,15 +4,10 @@ metadata:
name: docker-registry
spec:
params:
- name: home
- name: context
type: string
default: ""
description: home directory
- name: workshop
type: string
default: ""
description: workshop within the repo where the source code is located
description: context directory
- name: imageName
type: string
@ -27,14 +22,14 @@ spec:
default: ./Dockerfile
description: Path to Dockerfile
- name: context
- name: dockerContext
type: string
default: .
description: Build context path (relative to workshop)
workspaces:
- name: shared
description: Source code workspace
- name: base
description: base workspace
results:
- name: imageUrl
@ -43,11 +38,6 @@ spec:
steps:
- name: prepare-docker
image: alpine:3.21.3
workingDir: /workspace/shared/$(params.workshop)
env:
- name: HOME
value: /workspace/shared/$(params.home)
script: |
#!/bin/sh
set -e
@ -58,17 +48,17 @@ spec:
- name: kaniko-build
image: gcr.io/kaniko-project/executor:v1.23.2
workingDir: $(workspaces.shared.path)/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
- name: DOCKER_CONFIG
value: /workspace/shared/$(params.home)/.docker
value: /workspace/base/$(params.context)/home/.docker
command:
- /kaniko/executor
args:
- --dockerfile=$(params.dockerfile)
- --context=$(params.context)
- --context=$(params.dockerContext)
- --destination=$(params.imageName):$(params.tag)
- --skip-tls-verify
- --verbosity=info

View File

@ -9,15 +9,10 @@ spec:
The commit SHA, committer date, and fetched URL are exposed as Task results.
params:
- name: home
- name: context
type: string
default: ""
description: home directory
- name: workshop
type: string
default: ""
description: workshop inside the `shared` Workspace to clone the repo into.
description: context directory
- name: url
type: string
@ -91,7 +86,7 @@ spec:
description: The image providing the git-init binary that this Task runs.
workspaces:
- name: shared
- name: base
description: The workspace where the repository will be cloned.
results:
@ -107,9 +102,9 @@ spec:
image: $(params.gitInitImage)
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
- name: SSL_CERT_FILE
value: /workspace/shared/$(params.home)/cert/$(params.crtFileName)"
value: /workspace/base/$(params.context)/home/cert/$(params.crtFileName)"
- name: HTTP_PROXY
value: $(params.httpProxy)
- name: HTTPS_PROXY
@ -125,9 +120,9 @@ spec:
git config --global http.sslVerify false
fi
cd /workspace/shared
cd /workspace/base
CLONE_DIR="$(params.workshop)"
CLONE_DIR="$(params.source)"
if [ -z "$CLONE_DIR" ]; then
CLONE_DIR="."
fi

View File

@ -14,10 +14,10 @@ spec:
to the corresponding GitOps repository derived from the application source repo.
params:
- name: home
- name: context
type: string
default: ""
description: home directory
description: context directory
- name: repositoryUrl
type: string
@ -42,7 +42,7 @@ spec:
description: Commit message
workspaces:
- name: shared
- name: base
steps:
- name: update-and-push
@ -50,7 +50,7 @@ spec:
workingDir: /workspace
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/bin/sh
set -e
@ -73,8 +73,6 @@ spec:
echo "🛠 Updating image.tag in $VALUES_PATH to $TAG"
yq e ".image.tag = \"$TAG\"" -i "$VALUES_PATH"
git config user.name "tekton-ci"
git config user.email "ci@example.com"
git add "$VALUES_PATH"
git commit -m "$(params.commitMessage)" || echo "No changes to commit."
git push origin "$BRANCH"

View File

@ -4,14 +4,9 @@ metadata:
name: nx-nodejs-analysis
spec:
params:
- name: home
- name: context
type: string
description: home directory
default: ""
- name: workshop
type: string
description: workshop within the repo where the source code is located
description: context directory
default: ""
- name: targetProject
@ -24,7 +19,7 @@ spec:
description: Node.js image (e.g., node:18-slim)
workspaces:
- name: shared
- name: base
description: Git-cloned source code with Nx monorepo
results:
@ -36,10 +31,10 @@ spec:
steps:
- name: lint-and-test
image: $(params.nodejsImageName)
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/usr/bin/env bash
set -e

View File

@ -4,13 +4,9 @@ metadata:
name: nx-nodejs-version
spec:
params:
- name: home
- name: context
type: string
description: home directory
default: ""
- name: workshop
type: string
description: workshop within the repo where the source code is located
description: context directory
default: ""
- name: ref
@ -21,7 +17,7 @@ spec:
default: "node:slim"
description: Node.js image (e.g., node:23-slim)
workspaces:
- name: shared
- name: base
description: Git-cloned source code
results:
- name: version
@ -29,10 +25,10 @@ spec:
steps:
- name: verify-tag-version
image: $(params.nodejsImageName)
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/usr/bin/env bash
set -e

View File

@ -4,23 +4,18 @@ metadata:
name: pybuild
spec:
params:
- name: home
- name: context
type: string
default: ""
description: home directory
- name: workshop
type: string
default: ""
description: workshop within the repo where the source code is located
- name: pythonImageName
type: string
default: "python:3.11-slim"
description: Python version to use
workspaces:
- name: shared
- name: base
description: Workspace containing the cloned Git repository
results:
@ -30,10 +25,10 @@ spec:
steps:
- name: build-package
image: $(params.pythonImageName)
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/usr/bin/env bash
set -e
@ -67,7 +62,7 @@ spec:
fi
echo "📂 Checking built artifacts..."
BUILD_PATH="/workspace/shared/$(params.workshop)/dist"
BUILD_PATH="/workspace/base/$(params.workshop)/dist"
echo -n "$BUILD_PATH" > /tekton/results/build-artifact-path
if [ -d "$BUILD_PATH" ] && [ -n "$(ls -A "$BUILD_PATH")" ]; then

View File

@ -4,14 +4,9 @@ metadata:
name: pylint
spec:
params:
- name: home
- name: context
type: string
description: home directory
default: ""
- name: workshop
type: string
description: workshop within the repo where the shared code is located
description: context directory
default: ""
- name: pythonImageName
@ -36,16 +31,16 @@ spec:
description: Exit code returned by pylint (0=clean, non-zero=issues)
workspaces:
- name: shared
- name: base
description: Workspace containing the cloned Git repository
steps:
- name: run-pylint
image: $(params.pythonImageName)
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/usr/bin/env bash
set -e
@ -70,7 +65,7 @@ spec:
echo "🧪 Running Pylint (JSON report)..."
set +e
REPORT_FILE="/workspace/shared/pylint-report.json"
REPORT_FILE="/workspace/base/pylint-report.json"
if [ -f pyproject.toml ]; then
poetry run pylint $(params.pylint-args) --output-format=json . > "$REPORT_FILE"

View File

@ -4,14 +4,9 @@ metadata:
name: pytest
spec:
params:
- name: home
- name: context
type: string
description: home directory
default: ""
- name: workshop
type: string
description: workshop within the workspace where the tests are located
description: context directory
default: ""
- name: pythonImageName
@ -20,16 +15,16 @@ spec:
default: "python:3.11-slim"
workspaces:
- name: shared
- name: base
description: Workspace containing the cloned Git repository from git-clone-checkout
steps:
- name: install-dependencies
image: $(params.pythonImageName)
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/usr/bin/env bash
set -e
@ -56,17 +51,17 @@ spec:
echo "🧪 Running tests..."
set +e
if [ -f pyproject.toml ]; then
poetry run pytest --verbose --junitxml=/workspace/shared/pytest-results.xml
poetry run pytest --verbose --junitxml=/workspace/base/pytest-results.xml
else
pytest --verbose --junitxml=/workspace/shared/pytest-results.xml
pytest --verbose --junitxml=/workspace/base/pytest-results.xml
fi
TEST_EXIT_CODE=$?
set -e
echo "📄 Checking test results..."
if [ -f /workspace/shared/pytest-results.xml ]; then
if [ -f /workspace/base/pytest-results.xml ]; then
echo "Test results:"
cat /workspace/shared/pytest-results.xml
cat /workspace/base/pytest-results.xml
else
echo "❌ No test results found"
exit 1

View File

@ -4,14 +4,9 @@ metadata:
name: pyversion
spec:
params:
- name: home
- name: context
type: string
description: home directory
default: ""
- name: workshop
type: string
description: workshop within the repo where the source code is located
description: context directory
default: ""
- name: ref
@ -24,7 +19,7 @@ spec:
default: "python:3.11-slim"
workspaces:
- name: shared
- name: base
description: shared code workspace (includes pyproject.toml)
results:
@ -34,7 +29,7 @@ spec:
steps:
- name: verify-tag
image: $(params.pythonImageName)
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
script: |
#!/usr/bin/env bash
set -e

View File

@ -4,14 +4,9 @@ metadata:
name: secret-home
spec:
params:
- name: home
- name: context
type: string
description: home directory
default: ""
- name: workshop
type: string
description: workshop directory
description: context directory
default: ""
- name: keys
@ -20,7 +15,7 @@ spec:
Comma-separated keys (e.g. ".gitconfig,.git-credentials")
workspaces:
- name: shared
- name: base
description: Workspace containing the cloned Git repository
- name: credentials
description: Secret data from workspace
@ -28,10 +23,10 @@ spec:
steps:
- name: extract
image: python:3.11-slim
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
env:
- name: HOME
value: /workspace/shared/$(params.home)
value: /workspace/base/$(params.context)/home
script: |
#!/usr/bin/env bash
set -e

View File

@ -4,14 +4,10 @@ metadata:
name: sonarqube-analysis
spec:
params:
- name: home
- name: context
type: string
default: ""
description: home directory
- name: workshop
type: string
default: ""
description: workshop within workspace containing the source (if any)
description: context directory
- name: sonarHostUrl
type: string
@ -23,7 +19,7 @@ spec:
description: SonarQube project key
workspaces:
- name: shared
- name: base
description: Workspace with shared code (e.g. from git-clone)
- name: sonar-auth
@ -33,7 +29,7 @@ spec:
steps:
- name: sonar-scan
image: sonarsource/sonar-scanner-cli:5
workingDir: /workspace/shared/$(params.workshop)
workingDir: /workspace/base/$(params.context)/source
script: |
#!/bin/sh
set -e