diff --git a/tasks/docker-registry/task.yaml b/tasks/docker-registry/task.yaml new file mode 100644 index 0000000..60acaec --- /dev/null +++ b/tasks/docker-registry/task.yaml @@ -0,0 +1,91 @@ +apiVersion: tekton.dev/v1beta1 +kind: Task +metadata: + name: docker-registry +spec: + params: + - name: subdirectory + type: string + description: Subdirectory within the repo where the source code is located + default: "" + + - name: imageName + description: Base image name with registry (e.g. registry.unbox-x.net/unbox-x-aisi-cron-app) + type: string + + - name: tag + description: Version tag to apply to the image (e.g. v0.2.0) + type: string + + - name: dockerfile + description: Path to Dockerfile + type: string + default: ./Dockerfile + + - name: context + description: Build context path + type: string + default: . + + workspaces: + - name: source + description: Source code workspace + + - name: docker-auth + description: Docker registry credentials (username + password) + + results: + - name: imageUrl + description: Final pushed image URL with tag (e.g. registry/app:v0.2.0) + + steps: + - name: build-and-push + image: alpine:3.18 + workingDir: /workspace/source + env: + - name: DOCKER_CONFIG + value: /tekton/home/.docker/ + script: | + #!/bin/sh + set -e + + if [ -n "$(params.subdirectory)" ]; then + cd "$(params.subdirectory)" + fi + + cd "$(params.context)" + + IMAGE="$(params.imageName):$(params.tag)" + echo "πŸ“¦ Using image: $IMAGE" + echo -n "$IMAGE" > /tekton/results/imageUrl + + echo "πŸ” Loading Docker credentials..." + USERNAME=$(cat /workspace/docker-auth/username) + PASSWORD=$(cat /workspace/docker-auth/password) + REGISTRY=$(echo "$IMAGE" | cut -d/ -f1) + + echo "πŸ“ Writing Docker config for $REGISTRY" + mkdir -p /tekton/home/.docker + cat > /tekton/home/.docker/config.json < /tekton/results/version