This commit is contained in:
병준 박 2025-04-26 06:31:43 +00:00
parent f621d183c0
commit fdbf405d2c
14 changed files with 147 additions and 109 deletions

View File

@ -14,6 +14,12 @@ spec:
default: ""
description: context directory
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: url
type: string
description: The Git repository URL to clone.
@ -122,7 +128,7 @@ spec:
cd /workspace/base/$(params.context)
CLONE_DIR="source"
CLONE_DIR="$(params.source)"
if [ -z "$CLONE_DIR" ]; then
CLONE_DIR="."
fi

View File

@ -0,0 +1,59 @@
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: git-commit-push
spec:
description: |
This task clones a Git repository and checks out a specified branch if it exists.
Supports SSH, basic-auth, custom CA certs, sparse checkout, submodules, shallow clone, and proxy settings.
The commit SHA, committer date, and fetched URL are exposed as Task results.
params:
- name: context
type: string
default: ""
description: context directory
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: remote
type: string
description: Specifies the name of the remote repository (e.g., origin).
default: "origin"
- name: branch
type: string
description: Specifies the name of the local branch to push.
default: "main"
- name: commitMessage
type: string
default: "chore: commpit projects"
description: commit message
workspaces:
- name: base
description: The workspace where the repository will be cloned.
steps:
- name: clone
image: alpine/git:latest
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home
script: |
#!/bin/sh
set -eu
git add .
git commit -m "$(params.commitMessage)" || exit 0
git push origin HEAD:main

View File

@ -1,90 +0,0 @@
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: git-replace-multi
annotations:
tekton.dev/pipelines.minVersion: "0.19.0"
tekton.dev/categories: GitOps
tekton.dev/tags: git, devops
tekton.dev/displayName: "replace multiple files/dirs in git repository"
tekton.dev/platforms: "linux/amd64"
spec:
description: |
Replaces multiple files or directories in a Git repository, committing and pushing the changes.
params:
- name: repositoryUrl
type: string
description: Source repository URL
- name: branch
type: string
default: main
description: Git branch to push to
- name: targetPaths
type: array
description: List of target paths in the repo (file or directory, e.g. dir/ or file)
- name: sourcePaths
type: array
description: List of source paths in the workspace (file or directory, e.g. dir/ or file)
- name: commitMessage
type: string
default: "chore(gitops): replace multiple files or dirs"
description: Commit message
workspaces:
- name: base
- name: tmp
steps:
- name: clone-repository
image: alpine/git:latest
script: |
#!/bin/sh
set -e
REPO_URL="$(params.repositoryUrl)"
BRANCH="$(params.branch)"
WORKSPACE_PATH="$(workspaces.tmp.path)"
git clone --branch "${BRANCH}" "${REPO_URL}" "${WORKSPACE_PATH}/repo"
cd "${WORKSPACE_PATH}/repo"
- name: sync-files
image: alpine:3.18
script: |
#!/bin/sh
set -e
TARGET_PATHS=($(params.targetPaths[*]))
SOURCE_PATHS=($(params.sourcePaths[*]))
BASE_PATH="$(workspaces.base.path)/source"
REPO_PATH="$(workspaces.tmp.path)/repo"
COUNT=${#TARGET_PATHS[@]}
if [ $COUNT -ne ${#SOURCE_PATHS[@]} ]; then
echo "targetPaths와 sourcePaths의 길이가 다릅니다."
exit 1
fi
for i in $(seq 0 $(($COUNT - 1))); do
TARGET="${REPO_PATH}/${TARGET_PATHS[$i]}"
SOURCE="${BASE_PATH}/${SOURCE_PATHS[$i]}"
[ -e "${TARGET}" ] && rm -rf "${TARGET}" || true
mkdir -p $(dirname "${TARGET}")
cp -r "${SOURCE}" "${TARGET}"
done
- name: commit-and-push
image: alpine/git:latest
script: |
#!/bin/sh
set -e
cd "$(workspaces.tmp.path)/repo"
git config --global user.name "tekton-bot"
git config --global user.email "tekton@example.com"
git add .
git commit -m "$(params.commitMessage)" || exit 0
git push origin HEAD:"$(params.branch)"
volumes:
- name: tmp
emptyDir: {}

View File

@ -9,6 +9,12 @@ spec:
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: workspaceName
type: string
description: Nx workspace name to lint and test
@ -35,7 +41,7 @@ spec:
steps:
- name: lint-and-test
image: $(params.nodejsImageName)
workingDir: /workspace/base/$(params.context)/source/$(params.workspaceName)
workingDir: /workspace/base/$(params.context)/$(params.source)/$(params.workspaceName)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,13 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: workspaceName
type: string
description: Nx workspace project name to lint and test
@ -28,7 +35,7 @@ spec:
steps:
- name: verify-tag-version
image: $(params.nodejsImageName)
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,16 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: output
type: string
default: "output"
description: |
output directory (sub directory of context)
- name: packageNamePrefix
description: Rust crate name prefix
@ -42,12 +52,10 @@ spec:
steps:
- name: generate-code
image: openapitools/openapi-generator-cli:v7.4.0
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home
# command:
# - openapi-generator-cli
args:
- generate
- -i
@ -55,8 +63,8 @@ spec:
- -g
- $(params.generator)
- -o
- "/workspace/base/$(params.context)/output/$(params.packageNamePrefix)$(params.specDomain)-$(params.version)-$(params.generator)"
- --additional-properties=packageName=$(params.packageNamePrefix)$(params.context)
- "/workspace/base/$(params.context)/$(params.output)"
- --additional-properties=packageName=$(params.packageNamePrefix)$(params.specDomain)
- --additional-properties=packageVersion=$(params.version)
- --additional-properties=publish=true
- --additional-properties=disableValidator=false
@ -66,5 +74,5 @@ spec:
image: alpine:latest
script: |
#!/bin/sh
OUTPUT="/workspace/base/$(params.context)/output/$(params.packageNamePrefix)$(params.specDomain)-$(params.version)-$(params.generator)"
OUTPUT="/workspace/base/$(params.context)/$(params.output)"
echo -n "${OUTPUT}" > $(results.output.path)

View File

@ -8,6 +8,13 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: ref
type: string
description: Full Git ref string (e.g., refs/tags/v0.2.0)
@ -22,7 +29,7 @@ spec:
steps:
- name: verify-version
image: mikefarah/yq:4.24.2
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,11 @@ spec:
type: string
default: ""
description: home directory
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: pythonImageName
type: string
@ -25,7 +30,7 @@ spec:
steps:
- name: build-package
image: $(params.pythonImageName)
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home
@ -62,7 +67,7 @@ spec:
fi
echo "📂 Checking built artifacts..."
BUILD_PATH="/workspace/base/$(params.context)/source/dist"
BUILD_PATH="/workspace/base/$(params.context)/$(params.source)/dist"
echo -n "$BUILD_PATH" > /tekton/results/build-artifact-path
if [ -d "$BUILD_PATH" ] && [ -n "$(ls -A "$BUILD_PATH")" ]; then

View File

@ -8,6 +8,11 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: pythonImageName
type: string
@ -37,7 +42,7 @@ spec:
steps:
- name: run-pylint
image: $(params.pythonImageName)
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,11 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: pythonImageName
type: string
@ -21,7 +26,7 @@ spec:
steps:
- name: install-dependencies
image: $(params.pythonImageName)
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,11 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: ref
type: string
@ -29,7 +34,7 @@ spec:
steps:
- name: verify-tag
image: $(params.pythonImageName)
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
script: |
#!/usr/bin/env bash
set -e

View File

@ -17,6 +17,11 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: version
type: string
@ -42,7 +47,7 @@ spec:
steps:
- name: install-deps
image: node:18-alpine
workingDir: /workspace/base/$(params.context)/source/$(params.workspaceName)
workingDir: /workspace/base/$(params.context)/$(params.source)/$(params.workspaceName)
env:
- name: HOME
value: /workspace/base/$(params.context)/home
@ -57,7 +62,7 @@ spec:
- name: import-projects
image: node:18-alpine
workingDir: /workspace/base/$(params.context)/source/$(params.workspaceName)
workingDir: /workspace/base/$(params.context)/$(params.source)/$(params.workspaceName)
env:
- name: HOME
value: /workspace/base/$(params.context)/home
@ -107,7 +112,7 @@ spec:
- name: git-commit
image: alpine/git:latest
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,11 @@ spec:
type: string
description: context directory
default: ""
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: keys
type: string
@ -23,7 +28,7 @@ spec:
steps:
- name: extract
image: python:3.11-slim
workingDir: /workspace/base/$(params.context)/source
workingDir: /workspace/base/$(params.context)/$(params.source)
env:
- name: HOME
value: /workspace/base/$(params.context)/home

View File

@ -8,6 +8,11 @@ spec:
type: string
default: ""
description: "소스코드가 있는 하위 디렉토리 (없을 경우 '')"
- name: source
type: string
default: "source"
description: |
source directory (sub directory of context)
- name: sonarqubeUrl
type: string