100 lines
3.1 KiB
YAML
100 lines
3.1 KiB
YAML
apiVersion: tekton.dev/v1
|
|
kind: Task
|
|
metadata:
|
|
name: git-clone-checkout
|
|
namespace: tekton-pipelines
|
|
spec:
|
|
workspaces:
|
|
- name: output
|
|
- name: ssh-directory
|
|
optional: true
|
|
- name: basic-auth
|
|
optional: true
|
|
- name: ssl-ca-directory
|
|
optional: true
|
|
params:
|
|
- name: repo-url
|
|
type: string
|
|
- name: revision
|
|
type: string
|
|
default: ""
|
|
- name: verbose
|
|
type: string
|
|
default: "true"
|
|
- name: gitInitImage
|
|
type: string
|
|
default: "alpine/git:latest"
|
|
- name: userHome
|
|
type: string
|
|
default: "/home/git"
|
|
results:
|
|
- name: commit
|
|
- name: url
|
|
- name: committer-date
|
|
steps:
|
|
|
|
- name: clone-checkout
|
|
image: "$(params.gitInitImage)"
|
|
env:
|
|
- name: HOME
|
|
value: "$(params.userHome)"
|
|
- name: PARAM_URL
|
|
value: $(params.repo-url)
|
|
- name: PARAM_REVISION
|
|
value: $(params.revision)
|
|
- name: PARAM_VERBOSE
|
|
value: $(params.verbose)
|
|
- name: PARAM_USER_HOME
|
|
value: $(params.userHome)
|
|
- name: WORKSPACE_OUTPUT_PATH
|
|
value: $(workspaces.output.path)
|
|
- 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)
|
|
- name: WORKSPACE_SSL_CA_DIRECTORY_BOUND
|
|
value: $(workspaces.ssl-ca-directory.bound)
|
|
- name: WORKSPACE_SSL_CA_DIRECTORY_PATH
|
|
value: $(workspaces.ssl-ca-directory.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
|
|
|
|
if [ "${WORKSPACE_SSL_CA_DIRECTORY_BOUND}" = "true" ]; then
|
|
export GIT_SSL_CAPATH="${WORKSPACE_SSL_CA_DIRECTORY_PATH}"
|
|
fi
|
|
|
|
git config --global --add safe.directory "${WORKSPACE_OUTPUT_PATH}"
|
|
cd "${WORKSPACE_OUTPUT_PATH}"
|
|
|
|
git clone "${PARAM_URL}" .
|
|
git checkout "${PARAM_REVISION}"
|
|
|
|
RESULT_SHA="$(git rev-parse HEAD)"
|
|
RESULT_COMMITTER_DATE="$(git log -1 --pretty=%ct)"
|
|
|
|
printf "%s" "${RESULT_COMMITTER_DATE}" > "$(results.committer-date.path)"
|
|
printf "%s" "${RESULT_SHA}" > "$(results.commit.path)"
|
|
printf "%s" "${PARAM_URL}" > "$(results.url.path)"
|