first commit
This commit is contained in:
commit
f7f7c98608
5
.devcontainer/Dockerfile
Normal file
5
.devcontainer/Dockerfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
FROM mcr.microsoft.com/devcontainers/base:ubuntu
|
||||||
|
|
||||||
|
RUN apt clean && apt update --fix-missing
|
||||||
|
RUN apt install -y pkg-config \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
73
.devcontainer/devcontainer.json
Normal file
73
.devcontainer/devcontainer.json
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
{
|
||||||
|
"name": "loafle.tekton-hub",
|
||||||
|
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
||||||
|
"dockerComposeFile": "docker-compose.yaml",
|
||||||
|
"service": "app",
|
||||||
|
"workspaceFolder": "/workspace",
|
||||||
|
"shutdownAction": "stopCompose",
|
||||||
|
"features": {
|
||||||
|
"ghcr.io/devcontainers/features/git:1": {},
|
||||||
|
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
|
||||||
|
},
|
||||||
|
// Configure tool-specific properties.
|
||||||
|
"customizations": {
|
||||||
|
// Configure properties specific to VS Code.
|
||||||
|
"vscode": {
|
||||||
|
"settings": {
|
||||||
|
"terminal.integrated.defaultProfile.linux": "zsh",
|
||||||
|
"terminal.integrated.profiles.linux": {
|
||||||
|
"zsh": {
|
||||||
|
"path": "/bin/zsh"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yaml.schemas": {
|
||||||
|
// ⚠️ Tekton은 참고용이며 완전한 스키마 아님 (자동완성 or lint는 제한적)
|
||||||
|
"https://raw.githubusercontent.com/tektoncd/catalog/main/task/task.yaml": [
|
||||||
|
"**/tasks/**/*.yaml"
|
||||||
|
],
|
||||||
|
"https://raw.githubusercontent.com/tektoncd/catalog/main/pipeline/pipeline.yaml": [
|
||||||
|
"**/pipelines/**/*.yaml"
|
||||||
|
],
|
||||||
|
"https://json.schemastore.org/kustomization.json": [
|
||||||
|
"**/kustomization.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"yaml.customTags": [
|
||||||
|
"!Ref",
|
||||||
|
"!Sub",
|
||||||
|
"!GetAtt",
|
||||||
|
"!Join",
|
||||||
|
"!If",
|
||||||
|
"!Equals",
|
||||||
|
"!Not",
|
||||||
|
"!And",
|
||||||
|
"!Or"
|
||||||
|
],
|
||||||
|
"yaml.format.enable": true,
|
||||||
|
"yaml.validate": true,
|
||||||
|
"editor.formatOnSave": true
|
||||||
|
},
|
||||||
|
"extensions": [
|
||||||
|
"eamodio.gitlens",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"ms-azuretools.vscode-docker",
|
||||||
|
"ms-kubernetes-tools.vscode-kubernetes-tools",
|
||||||
|
"redhat.vscode-tekton-pipelines",
|
||||||
|
"streetsidesoftware.code-spell-checker",
|
||||||
|
"tamasfe.even-better-toml"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
|
// "forwardPorts": [],
|
||||||
|
// Use 'postCreateCommand' to run commands after the container is created.
|
||||||
|
"postCreateCommand": "/bin/sh ./.devcontainer/postCreateCommand.sh",
|
||||||
|
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||||
|
// "remoteUser": "vscode"
|
||||||
|
"mounts": [
|
||||||
|
"source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,consistency=cached",
|
||||||
|
"source=${localEnv:HOME}/.config/pypoetry,target=/home/vscode/.config/pypoetry,type=bind,consistency=cached",
|
||||||
|
"source=${localEnv:HOME}/.ssh/id_rsa,target=/home/vscode/.ssh/id_rsa,type=bind,consistency=cached",
|
||||||
|
"source=${localEnv:HOME}/.kube/config,target=/home/vscode/.kube/config,type=bind,consistency=cached"
|
||||||
|
]
|
||||||
|
}
|
48
.devcontainer/docker-compose.yaml
Normal file
48
.devcontainer/docker-compose.yaml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
# Using a Dockerfile is optional, but included for completeness.
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
# [Optional] You can use build args to set options. e.g. 'VARIANT' below affects the image in the Dockerfile
|
||||||
|
# args:
|
||||||
|
# VARIANT: buster
|
||||||
|
# environment:
|
||||||
|
# PORT: 3000
|
||||||
|
# ports:
|
||||||
|
# - 3000:3000
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# This is where VS Code should expect to find your project's source code and the value of "workspaceFolder" in .devcontainer/devcontainer.json
|
||||||
|
- ..:/workspace:cached
|
||||||
|
|
||||||
|
# Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker-compose for details.
|
||||||
|
# - /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
|
||||||
|
# Overrides default command so things don't shut down after the process ends.
|
||||||
|
# command: /bin/sh -c "while sleep 1000; do :; done"
|
||||||
|
command: sleep infinity
|
||||||
|
|
||||||
|
# Runs app on the same network as the service container, allows "forwardPorts" in devcontainer.json function.
|
||||||
|
# network_mode: service:another-service
|
||||||
|
|
||||||
|
# Use "forwardPorts" in **devcontainer.json** to forward an app port locally.
|
||||||
|
# (Adding the "ports" property to this file will not forward from a Codespace.)
|
||||||
|
|
||||||
|
# Uncomment the next line to use a non-root user for all processes - See https://aka.ms/vscode-remote/containers/non-root for details.
|
||||||
|
# user: vscode
|
||||||
|
|
||||||
|
# Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust.
|
||||||
|
# cap_add:
|
||||||
|
# - SYS_PTRACE
|
||||||
|
# security_opt:
|
||||||
|
# - seccomp:unconfined
|
||||||
|
|
||||||
|
# You can include other services not opened by VS Code as well
|
||||||
|
# another-service:
|
||||||
|
# image: mongo:latest
|
||||||
|
# restart: unless-stopped
|
||||||
|
|
||||||
|
# As in the "app" service, use "forwardPorts" in **devcontainer.json** to forward an app port locally.
|
11
.devcontainer/postCreateCommand.sh
Normal file
11
.devcontainer/postCreateCommand.sh
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# sudo apt clean
|
||||||
|
# sudo apt update --fix-missing
|
||||||
|
|
||||||
|
# project dependency
|
||||||
|
cd /tmp
|
||||||
|
curl -LO https://github.com/tektoncd/cli/releases/download/v0.40.0/tkn_0.40.0_Linux_x86_64.tar.gz
|
||||||
|
sudo tar xvzf tkn_0.40.0_Linux_x86_64.tar.gz -C /usr/local/bin/ tkn
|
147
tasks/git/task.yaml
Normal file
147
tasks/git/task.yaml
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: git
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/version: "0.4"
|
||||||
|
annotations:
|
||||||
|
tekton.dev/pipelines.minVersion: "0.21.0"
|
||||||
|
tekton.dev/categories: Git
|
||||||
|
tekton.dev/tags: git
|
||||||
|
tekton.dev/displayName: "git"
|
||||||
|
tekton.dev/platforms: "linux/amd64,linux/s390x,linux/ppc64le"
|
||||||
|
spec:
|
||||||
|
description: >-
|
||||||
|
This task can be used to perform git operations.
|
||||||
|
|
||||||
|
Git command that needs to be run can be passed as a script to
|
||||||
|
the task. This task needs authentication to git in order to push
|
||||||
|
after the git operation.
|
||||||
|
|
||||||
|
workspaces:
|
||||||
|
- name: source
|
||||||
|
description: A workspace that contains the fetched git repository.
|
||||||
|
|
||||||
|
- name: input
|
||||||
|
optional: true
|
||||||
|
description: |
|
||||||
|
An optional workspace that contains the files that need to be added to git. You can
|
||||||
|
access the workspace from your script using `$(workspaces.input.path)`, for instance:
|
||||||
|
|
||||||
|
cp $(workspaces.input.path)/file_that_i_want .
|
||||||
|
git add file_that_i_want
|
||||||
|
# etc
|
||||||
|
|
||||||
|
- name: ssh-directory
|
||||||
|
optional: true
|
||||||
|
description: |
|
||||||
|
A .ssh directory with private key, known_hosts, config, etc. Copied to
|
||||||
|
the user's home before git commands are executed. Used to authenticate
|
||||||
|
with the git remote when performing the clone. Binding a Secret to this
|
||||||
|
Workspace is strongly recommended over other volume types.
|
||||||
|
|
||||||
|
- name: basic-auth
|
||||||
|
optional: true
|
||||||
|
description: |
|
||||||
|
A Workspace containing a .gitconfig and .git-credentials file. These
|
||||||
|
will be copied to the user's home before any git commands are run. Any
|
||||||
|
other files in this Workspace are ignored. It is strongly recommended
|
||||||
|
to use ssh-directory over basic-auth whenever possible and to bind a
|
||||||
|
Secret to this Workspace over other volume types.
|
||||||
|
params:
|
||||||
|
- name: BASE_IMAGE
|
||||||
|
description: |
|
||||||
|
The base image for the task.
|
||||||
|
type: string
|
||||||
|
# TODO: Deprecate use of root image.
|
||||||
|
default: cgr.dev/chainguard/git:root-2.39@sha256:7759f87050dd8bacabe61354d75ccd7f864d6b6f8ec42697db7159eccd491139
|
||||||
|
|
||||||
|
- name: GIT_USER_NAME
|
||||||
|
type: string
|
||||||
|
description: |
|
||||||
|
Git user name for performing git operation.
|
||||||
|
default: ""
|
||||||
|
|
||||||
|
- name: GIT_USER_EMAIL
|
||||||
|
type: string
|
||||||
|
description: |
|
||||||
|
Git user email for performing git operation.
|
||||||
|
default: ""
|
||||||
|
|
||||||
|
- name: GIT_SCRIPT
|
||||||
|
description: The git script to run.
|
||||||
|
type: string
|
||||||
|
default: |
|
||||||
|
git help
|
||||||
|
|
||||||
|
- name: USER_HOME
|
||||||
|
description: |
|
||||||
|
Absolute path to the user's home directory. Set this explicitly if you are running the image as a non-root user or have overridden
|
||||||
|
the gitInitImage param with an image containing custom user configuration.
|
||||||
|
type: string
|
||||||
|
default: "/root"
|
||||||
|
|
||||||
|
- name: VERBOSE
|
||||||
|
description: Log the commands that are executed during `git-clone`'s operation.
|
||||||
|
type: string
|
||||||
|
default: "true"
|
||||||
|
|
||||||
|
results:
|
||||||
|
- name: commit
|
||||||
|
description: The precise commit SHA after the git operation.
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: git
|
||||||
|
image: $(params.BASE_IMAGE)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
env:
|
||||||
|
- name: HOME
|
||||||
|
value: $(params.USER_HOME)
|
||||||
|
- name: PARAM_VERBOSE
|
||||||
|
value: $(params.VERBOSE)
|
||||||
|
- name: PARAM_USER_HOME
|
||||||
|
value: $(params.USER_HOME)
|
||||||
|
- name: WORKSPACE_SSH_DIRECTORY_BOUND
|
||||||
|
value: $(workspaces.ssh-directory.bound)
|
||||||
|
- name: WORKSPACE_SSH_DIRECTORY_PATH
|
||||||
|
value: $(workspaces.ssh-directory.path)
|
||||||
|
- name: WORKSPACE_BASIC_AUTH_DIRECTORY_BOUND
|
||||||
|
value: $(workspaces.basic-auth.bound)
|
||||||
|
- name: WORKSPACE_BASIC_AUTH_DIRECTORY_PATH
|
||||||
|
value: $(workspaces.basic-auth.path)
|
||||||
|
script: |
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ "${PARAM_VERBOSE}" = "true" ] ; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${WORKSPACE_BASIC_AUTH_DIRECTORY_BOUND}" = "true" ] ; then
|
||||||
|
cp "${WORKSPACE_BASIC_AUTH_DIRECTORY_PATH}/.git-credentials" "${PARAM_USER_HOME}/.git-credentials"
|
||||||
|
cp "${WORKSPACE_BASIC_AUTH_DIRECTORY_PATH}/.gitconfig" "${PARAM_USER_HOME}/.gitconfig"
|
||||||
|
chmod 400 "${PARAM_USER_HOME}/.git-credentials"
|
||||||
|
chmod 400 "${PARAM_USER_HOME}/.gitconfig"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${WORKSPACE_SSH_DIRECTORY_BOUND}" = "true" ] ; then
|
||||||
|
cp -R "${WORKSPACE_SSH_DIRECTORY_PATH}" "${PARAM_USER_HOME}"/.ssh
|
||||||
|
chmod 700 "${PARAM_USER_HOME}"/.ssh
|
||||||
|
chmod -R 400 "${PARAM_USER_HOME}"/.ssh/*
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setting up the config for the git.
|
||||||
|
git config --global user.email "$(params.GIT_USER_EMAIL)"
|
||||||
|
git config --global user.name "$(params.GIT_USER_NAME)"
|
||||||
|
|
||||||
|
eval '$(params.GIT_SCRIPT)'
|
||||||
|
|
||||||
|
RESULT_SHA="$(git rev-parse HEAD | tr -d '\n')"
|
||||||
|
EXIT_CODE="$?"
|
||||||
|
if [ "$EXIT_CODE" != 0 ]
|
||||||
|
then
|
||||||
|
exit $EXIT_CODE
|
||||||
|
fi
|
||||||
|
# Make sure we don't add a trailing newline to the result!
|
||||||
|
printf "%s" "$RESULT_SHA" > "$(results.commit.path)"
|
69
tasks/poetry/task.yaml
Normal file
69
tasks/poetry/task.yaml
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: poetry
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/version: "0.4"
|
||||||
|
annotations:
|
||||||
|
tekton.dev/pipelines.minVersion: "0.21.0"
|
||||||
|
tekton.dev/categories: Poetry
|
||||||
|
tekton.dev/tags: poetry
|
||||||
|
tekton.dev/displayName: "poetry"
|
||||||
|
tekton.dev/platforms: "linux/amd64,linux/s390x,linux/ppc64le"
|
||||||
|
spec:
|
||||||
|
description: >-
|
||||||
|
This task can be used to perform python poetry operations.
|
||||||
|
|
||||||
|
python poetry command that needs to be run can be passed as a script to
|
||||||
|
the task.
|
||||||
|
|
||||||
|
workspaces:
|
||||||
|
- name: source
|
||||||
|
description: A workspace that contains python source.
|
||||||
|
|
||||||
|
params:
|
||||||
|
- name: BASE_IMAGE
|
||||||
|
description: |
|
||||||
|
The base image for the task.
|
||||||
|
type: string
|
||||||
|
default: python:3.13.2-bullseye
|
||||||
|
|
||||||
|
- name: POETRY_VERSION
|
||||||
|
description: |
|
||||||
|
The base version of the poetry.
|
||||||
|
type: string
|
||||||
|
default: 2.1.2
|
||||||
|
|
||||||
|
- name: POETRY_SCRIPT
|
||||||
|
description: The poetry and python script to run.
|
||||||
|
type: string
|
||||||
|
default: |
|
||||||
|
poetry help
|
||||||
|
|
||||||
|
- name: VERBOSE
|
||||||
|
description: Log the commands that are executed during operation.
|
||||||
|
type: string
|
||||||
|
default: "true"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: poetry
|
||||||
|
image: $(params.BASE_IMAGE)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
env:
|
||||||
|
- name: POETRY_VERSION
|
||||||
|
value: $(params.POETRY_VERSION)
|
||||||
|
- name: PARAM_VERBOSE
|
||||||
|
value: $(params.VERBOSE)
|
||||||
|
script: |
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ "${PARAM_VERBOSE}" = "true" ] ; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
pipx install poetry==${POETRY_VERSION}
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
||||||
|
eval '$(params.POETRY_SCRIPT)'
|
91
tasks/pypi/task.yaml
Normal file
91
tasks/pypi/task.yaml
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: pypi
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/version: "0.2"
|
||||||
|
annotations:
|
||||||
|
tekton.dev/pipelines.minVersion: "0.12.1"
|
||||||
|
tekton.dev/categories: Publishing
|
||||||
|
tekton.dev/tags: build
|
||||||
|
tekton.dev/displayName: "pypi"
|
||||||
|
tekton.dev/platforms: "linux/amd64"
|
||||||
|
spec:
|
||||||
|
description: >-
|
||||||
|
This Task publishes Python packages to PyPI index using Twine utility module.
|
||||||
|
|
||||||
|
It provides build system independent uploads of source and binary distribution
|
||||||
|
artifacts for both new and existing projects.
|
||||||
|
|
||||||
|
params:
|
||||||
|
- name: TWINE_REPOSITORY_URL
|
||||||
|
description: The repository (package index) to upload the package to.
|
||||||
|
default: "https://upload.pypi.org/legacy/"
|
||||||
|
type: string
|
||||||
|
- name: SECRET_NAME
|
||||||
|
description: Name of the secret containing the username & password used to upload the package.
|
||||||
|
default: "pypi-secret"
|
||||||
|
type: string
|
||||||
|
- name: SECRET_USERNAME_KEY
|
||||||
|
description: Name of the secret key containing the username.
|
||||||
|
default: "username"
|
||||||
|
type: string
|
||||||
|
- name: SECRET_PASSWORD_KEY
|
||||||
|
description: Name of the secret key containing the password.
|
||||||
|
default: "password"
|
||||||
|
type: string
|
||||||
|
- name: PREBUILD_SCRIPT
|
||||||
|
description: Script to execute prior to running setup.py.
|
||||||
|
type: string
|
||||||
|
default: ''
|
||||||
|
- name: BUILDER_IMAGE
|
||||||
|
description: Image to use for building the package
|
||||||
|
type: string
|
||||||
|
default: 'python:3.9'
|
||||||
|
|
||||||
|
workspaces:
|
||||||
|
- name: source
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: build-package
|
||||||
|
image: $(params.BUILDER_IMAGE)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
script: |
|
||||||
|
$(params.PREBUILD_SCRIPT)
|
||||||
|
|
||||||
|
python setup.py sdist bdist_wheel
|
||||||
|
- name: upload-package
|
||||||
|
image: quay.io/thoth-station/twine:v0.0.2 #tag: v0.0.2
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
env:
|
||||||
|
- name: TWINE_REPOSITORY_URL
|
||||||
|
value: $(params.TWINE_REPOSITORY_URL)
|
||||||
|
- name: TWINE_USERNAME
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: $(params.SECRET_NAME)
|
||||||
|
key: $(params.SECRET_USERNAME_KEY)
|
||||||
|
- name: TWINE_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: $(params.SECRET_NAME)
|
||||||
|
key: $(params.SECRET_PASSWORD_KEY)
|
||||||
|
script: |
|
||||||
|
twine upload --disable-progress-bar dist/*
|
||||||
|
# Now write out all our results, stripping newlines.
|
||||||
|
# sdist files are .tar.gz's
|
||||||
|
sha256sum dist/*.tar.gz | tr -d '\n' | tee $(results.sdist_sha.path)
|
||||||
|
# bdist files are .whls's
|
||||||
|
sha256sum dist/*.whl | tr -d '\n' | tee $(results.bdist_sha.path)
|
||||||
|
python setup.py --name | tr -d '\n' | tee $(results.package_name.path)
|
||||||
|
python setup.py --version | tr -d '\n' | tee $(results.package_version.path)
|
||||||
|
results:
|
||||||
|
- name: sdist_sha
|
||||||
|
description: sha256 (and filename) of the sdist package
|
||||||
|
- name: bdist_sha
|
||||||
|
description: sha256 (and filename) of the bdist package
|
||||||
|
- name: package_name
|
||||||
|
description: name of the uploaded package
|
||||||
|
- name: package_version
|
||||||
|
description: version of the uploaded package
|
50
tasks/pytest/task.yaml
Normal file
50
tasks/pytest/task.yaml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
apiVersion: tekton.dev/v1beta1
|
||||||
|
kind: Task
|
||||||
|
metadata:
|
||||||
|
name: pytest
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/version: "0.2"
|
||||||
|
annotations:
|
||||||
|
tekton.dev/pipelines.minVersion: "0.56.1"
|
||||||
|
tekton.dev/displayName: "pytest"
|
||||||
|
tekton.dev/categories: Developer Tools
|
||||||
|
tekton.dev/tags: pytest
|
||||||
|
tekton.dev/platforms: "linux/amd64"
|
||||||
|
spec:
|
||||||
|
description: >-
|
||||||
|
These tasks make it possible to use pytest within your Tekton pipelines
|
||||||
|
|
||||||
|
pytest is a tool for testing configuration files using Open Policy Agent.
|
||||||
|
|
||||||
|
workspaces:
|
||||||
|
- name: source
|
||||||
|
params:
|
||||||
|
- name: BASE_IMAGE
|
||||||
|
description: |
|
||||||
|
The base image for the task.
|
||||||
|
type: string
|
||||||
|
default: python:3.13.2-bullseye
|
||||||
|
- name: VERBOSE
|
||||||
|
description: Log the commands that are executed during operation.
|
||||||
|
type: string
|
||||||
|
default: "true"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: pytest
|
||||||
|
image: $(params.BASE_IMAGE)
|
||||||
|
workingDir: $(workspaces.source.path)
|
||||||
|
env:
|
||||||
|
- name: PARAM_VERBOSE
|
||||||
|
value: $(params.VERBOSE)
|
||||||
|
script: |
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
if [ "${PARAM_VERBOSE}" = "true" ] ; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
pip install -U pytest
|
||||||
|
|
||||||
|
pytest
|
Loading…
x
Reference in New Issue
Block a user