Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Checkton workflow #1085

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/checkton.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Checkton
on:
pull_request:
branches: [main]

jobs:
lint:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# Differential Checkton requires full git history
fetch-depth: 0

- name: Run Checkton
id: checkton
uses: chmeliik/[email protected]
with:
fail-on-findings: false
find-copies-harder: true

- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ${{ steps.checkton.outputs.sarif }}
# Avoid clashing with ShellCheck
category: checkton
1 change: 1 addition & 0 deletions .tekton/pull-request.yaml → .tekton/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@
image: registry.redhat.io/openshift4/ose-cli:v4.12@sha256:0d21299d2adfa3cb74562c4dffbedd3b107fffac3a2a537f14770088abd4671f
script: |
#!/usr/bin/env bash
echo $HI

Check warning

Code scanning / shellcheck

SC2086 Warning

Double quote to prevent globbing and word splitting.
# Perform cleanup of resources created by gitops service
oc delete --ignore-not-found deployment --all -n $(params.e2e_test_namespace)
oc delete --ignore-not-found eventlisteners --all -n $(params.e2e_test_namespace)
Expand Down
4 changes: 3 additions & 1 deletion task/buildah/0.1/buildah.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@
args:
- $(params.BUILD_ARGS[*])
script: |
#!/bin/bash
set -e
if [ -n "${PARAM_BUILDER_IMAGE}" ]; then
echo "WARNING: provided deprecated BUILDER_IMAGE parameter has no effect."
fi
Expand Down Expand Up @@ -308,7 +310,7 @@

unshare -Uf $UNSHARE_ARGS --keep-caps -r --map-users 1,1,65536 --map-groups 1,1,65536 -w ${SOURCE_CODE_DIR}/$CONTEXT -- buildah build \
$VOLUME_MOUNTS \
"${BUILDAH_ARGS[@]}" \
${BUILDAH_ARGS[@]} \

Check failure

Code scanning / shellcheck

SC2068 Error

Double quote array expansions to avoid re-splitting elements.

Check warning

Code scanning / shellcheck

SC3054 Warning

In POSIX sh, array references are undefined.

Check failure

Code scanning / shellcheck

SC2068 Error

Double quote array expansions to avoid re-splitting elements.

Check failure

Code scanning / shellcheck

SC2068 Error

Double quote array expansions to avoid re-splitting elements.
"${LABELS[@]}" \
--tls-verify=$TLSVERIFY --no-cache \
--ulimit nofile=4096:4096 \
Expand Down
19 changes: 19 additions & 0 deletions task/prefetch-dependencies/0.2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# prefetch-dependencies task

Task that uses Cachi2 to prefetch build dependencies.
See docs at https://github.com/containerbuildsystem/cachi2#basic-usage.

## Parameters
|name|description|default value|required|
|---|---|---|---|
|input|Configures project packages that will have their dependencies prefetched.||true|
|dev-package-managers|Enable in-development package managers. WARNING: the behavior may change at any time without notice. Use at your own risk. |false|false|
|log-level|Set cachi2 log level (debug, info, warning, error)|info|false|
|caTrustConfigMapName|The name of the ConfigMap to read CA bundle data from.|trusted-ca|false|
|caTrustConfigMapKey|The name of the key in the ConfigMap that contains the CA bundle data.|ca-bundle.crt|false|

## Workspaces
|name|description|optional|
|---|---|---|
|source|Workspace with the source code, cachi2 artifacts will be stored on the workspace as well|false|
|git-basic-auth|A Workspace containing a .gitconfig and .git-credentials file or username and password. These will be copied to the user's home before any cachi2 commands are run. Any other files in this Workspace are ignored. It is strongly recommended to bind a Secret to this Workspace over other volume types. |true|
122 changes: 122 additions & 0 deletions task/prefetch-dependencies/0.2/prefetch-dependencies.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
apiVersion: tekton.dev/v1
kind: Task
metadata:
labels:
app.kubernetes.io/version: "0.1"
annotations:
tekton.dev/pipelines.minVersion: "0.12.1"
tekton.dev/tags: "image-build, hacbs"
name: prefetch-dependencies
spec:
description: |-
Task that uses Cachi2 to prefetch build dependencies.
See docs at https://github.com/containerbuildsystem/cachi2#basic-usage.
params:
- description: Configures project packages that will have their dependencies prefetched.
name: input
- description: >
Enable in-development package managers. WARNING: the behavior may change at any time without
notice. Use at your own risk.
name: dev-package-managers
default: "false"
- description: Set cachi2 log level (debug, info, warning, error)
name: log-level
default: "info"
- name: caTrustConfigMapName
type: string
description: The name of the ConfigMap to read CA bundle data from.
default: trusted-ca
- name: caTrustConfigMapKey
type: string
description: The name of the key in the ConfigMap that contains the CA bundle data.
default: ca-bundle.crt
steps:
- image: quay.io/redhat-appstudio/cachi2:0.7.0@sha256:1fc772aa3636fd0b43d62120d832e5913843e028e8cac42814b487c3a0a32bd8
# per https://kubernetes.io/docs/concepts/containers/images/#imagepullpolicy-defaulting
# the cluster will set imagePullPolicy to IfNotPresent
name: prefetch-dependencies
env:
- name: INPUT
value: $(params.input)
- name: DEV_PACKAGE_MANAGERS
value: $(params.dev-package-managers)
- name: LOG_LEVEL
value: $(params.log-level)
- name: WORKSPACE_GIT_AUTH_BOUND
value: $(workspaces.git-basic-auth.bound)
- name: WORKSPACE_GIT_AUTH_PATH
value: $(workspaces.git-basic-auth.path)
volumeMounts:
- name: trusted-ca
mountPath: /mnt/trusted-ca
readOnly: true
script: |
if [ -z ${INPUT} ]

Check warning

Code scanning / shellcheck

SC2086 Warning

Double quote to prevent globbing and word splitting.
then
# Confirm input was provided though it's likely the whole task would be skipped if it wasn't
echo "No prefetch will be performed because no input was provided for cachi2 fetch-deps"
exit 0
fi

if [ "$DEV_PACKAGE_MANAGERS" = "true" ]; then
dev_pacman_flag=--dev-package-managers
else
dev_pacman_flag=""
fi

# Copied from https://github.com/konflux-ci/build-definitions/blob/main/task/git-clone/0.1/git-clone.yaml
if [ "${WORKSPACE_GIT_AUTH_BOUND}" = "true" ] ; then
if [ -f "${WORKSPACE_GIT_AUTH_PATH}/.git-credentials" ] && [ -f "${WORKSPACE_GIT_AUTH_PATH}/.gitconfig" ]; then
cp "${WORKSPACE_GIT_AUTH_PATH}/.git-credentials" "${HOME}/.git-credentials"
cp "${WORKSPACE_GIT_AUTH_PATH}/.gitconfig" "${HOME}/.gitconfig"
# Compatibility with kubernetes.io/basic-auth secrets
elif [ -f "${WORKSPACE_GIT_AUTH_PATH}/username" ] && [ -f "${WORKSPACE_GIT_AUTH_PATH}/password" ]; then
HOSTNAME=$(cd "$(workspaces.source.path)/source" && git remote get-url origin | awk -F/ '{print $3}')
echo "https://$(cat ${WORKSPACE_GIT_AUTH_PATH}/username):$(cat ${WORKSPACE_GIT_AUTH_PATH}/password)@$HOSTNAME" > "${HOME}/.git-credentials"
echo -e "[credential \"https://$HOSTNAME\"]\n helper = store" > "${HOME}/.gitconfig"
else
echo "Unknown git-basic-auth workspace format"
exit 1
fi
chmod 400 "${HOME}/.git-credentials"
chmod 400 "${HOME}/.gitconfig"
fi

ca_bundle=/mnt/trusted-ca/ca-bundle.crt
if [ -f "$ca_bundle" ]; then
echo "INFO: Using mounted CA bundle: $ca_bundle"
cp -vf $ca_bundle /etc/pki/ca-trust/source/anchors
update-ca-trust
fi

cachi2 --log-level="$LOG_LEVEL" fetch-deps \
$dev_pacman_flag \
--source=$(workspaces.source.path)/source \
--output=$(workspaces.source.path)/cachi2/output \
"${INPUT}"

cachi2 --log-level="$LOG_LEVEL" generate-env $(workspaces.source.path)/cachi2/output \
--format env \
--for-output-dir=/cachi2/output \
--output $(workspaces.source.path)/cachi2/cachi2.env

cachi2 --log-level="$LOG_LEVEL" inject-files $(workspaces.source.path)/cachi2/output \
--for-output-dir=/cachi2/output
workspaces:
- name: source
description: Workspace with the source code, cachi2 artifacts will be stored on the workspace as well
- name: git-basic-auth
description: |
A Workspace containing a .gitconfig and .git-credentials file or username and password.
These will be copied to the user's home before any cachi2 commands are run. Any
other files in this Workspace are ignored. It is strongly recommended
to bind a Secret to this Workspace over other volume types.
optional: true
volumes:
- name: trusted-ca
configMap:
name: $(params.caTrustConfigMapName)
items:
- key: $(params.caTrustConfigMapKey)
path: ca-bundle.crt
optional: true
Loading