From bb573bce9376dc224d06b55fe8ac7afb704b8500 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 13 May 2024 18:16:59 +0000 Subject: [PATCH] experimental/task-containers: Auto-update tekton tasks resources\n\nURL: https://github.com/openshift-pipelines/task-containers\nIgnoredVersions: v0.1.0 --- .../tasks/task-buildah/0.3.1/README.md | 76 +++++++ .../task-buildah/0.3.1/task-buildah.yaml | 171 ++++++++++++++++ .../tasks/task-s2i-dotnet/0.3.1/README.md | 83 ++++++++ .../0.3.1/task-s2i-dotnet.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-go/0.3.1/README.md | 83 ++++++++ .../tasks/task-s2i-go/0.3.1/task-s2i-go.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-java/0.3.1/README.md | 83 ++++++++ .../task-s2i-java/0.3.1/task-s2i-java.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-nodejs/0.3.1/README.md | 83 ++++++++ .../0.3.1/task-s2i-nodejs.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-perl/0.3.1/README.md | 83 ++++++++ .../task-s2i-perl/0.3.1/task-s2i-perl.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-php/0.3.1/README.md | 83 ++++++++ .../task-s2i-php/0.3.1/task-s2i-php.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-python/0.3.1/README.md | 83 ++++++++ .../0.3.1/task-s2i-python.yaml | 192 ++++++++++++++++++ .../tasks/task-s2i-ruby/0.3.1/README.md | 83 ++++++++ .../task-s2i-ruby/0.3.1/task-s2i-ruby.yaml | 192 ++++++++++++++++++ .../tasks/task-skopeo-copy/0.3.1/README.md | 60 ++++++ .../0.3.1/task-skopeo-copy.yaml | 125 ++++++++++++ 20 files changed, 2632 insertions(+) create mode 100644 experimental/tasks/task-buildah/0.3.1/README.md create mode 100644 experimental/tasks/task-buildah/0.3.1/task-buildah.yaml create mode 100644 experimental/tasks/task-s2i-dotnet/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-dotnet/0.3.1/task-s2i-dotnet.yaml create mode 100644 experimental/tasks/task-s2i-go/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-go/0.3.1/task-s2i-go.yaml create mode 100644 experimental/tasks/task-s2i-java/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-java/0.3.1/task-s2i-java.yaml create mode 100644 experimental/tasks/task-s2i-nodejs/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-nodejs/0.3.1/task-s2i-nodejs.yaml create mode 100644 experimental/tasks/task-s2i-perl/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-perl/0.3.1/task-s2i-perl.yaml create mode 100644 experimental/tasks/task-s2i-php/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-php/0.3.1/task-s2i-php.yaml create mode 100644 experimental/tasks/task-s2i-python/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-python/0.3.1/task-s2i-python.yaml create mode 100644 experimental/tasks/task-s2i-ruby/0.3.1/README.md create mode 100644 experimental/tasks/task-s2i-ruby/0.3.1/task-s2i-ruby.yaml create mode 100644 experimental/tasks/task-skopeo-copy/0.3.1/README.md create mode 100644 experimental/tasks/task-skopeo-copy/0.3.1/task-skopeo-copy.yaml diff --git a/experimental/tasks/task-buildah/0.3.1/README.md b/experimental/tasks/task-buildah/0.3.1/README.md new file mode 100644 index 00000000..8c0a41f0 --- /dev/null +++ b/experimental/tasks/task-buildah/0.3.1/README.md @@ -0,0 +1,76 @@ +`Buildah` Tekton Task +----------------------- + +# Abstract + +The `buildah` Task is meant to build [OCI][OCI] container images without the requirement of container runtime daemon like Docker daemon using [Buildah][Buildah], the Task results contain the image name and the SHA256 image digest. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: PipelineRun +metadata: {} +spec: + pipelineRef: + name: task-buildah + params: + - name: IMAGE + value: your-image-name + - name: TLS_VERIFY + value: true + - name: VERBOSE + value: false + workspaces: + - name: source + persistentVolumeClaim: + claimName: your-pvc-name +``` +You'll need to replace `your-image-name` with the actual name of the image you want to build, and `your-pvc-name` with the name of the PersistentVolumeClaim where your source code is stored. +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspace + +| Name | Optional | Description | +| :------------ | :------------------------: | :--------------------------- | +| `source` | `false` | Container build context, like for instnace a application source code followed by a `Containerfile`. | + + +## Params + +| Param | Type | Default | Description | +| :------------ | :------------------------: | :--------------------------- | :------------------------- | +| `IMAGE` | `string` | (required) | Fully qualified source container image name, including tag, to be built by buildah. | +| `CONTAINERFILE_PATH` | `string` | `Containerfile` | Path to the `Containerfile` (or `Dockerfile`) relative to the `source` workspace. | +| `TLS_VERIFY` | `string` | `true` | Sets the TLS verification flags, `true` is recommended. | +| `VERBOSE` | `string` | `false` | Shows a more verbose (debug) output. | +| `SUBDIRECTORY` | `string` | `.` | Relative subdirectory to the `source` Workspace for the build-context. | +| `STORAGE_DRIVER` | `string` | `overlay` | Set buildah storage driver to reflect the currrent cluster node's settings. | +| `BUILD_EXTRA_ARGS` | `string` | `` | Extra parameters passed for the build command when building images. | +| `PUSH_EXTRA_ARGS` | `string` | `` | Extra parameters passed for the push command when pushing images. | +| `SKIP_PUSH` | `string` | `false` | Skip pushing the image to the container registry. | + + +## Results + +| Result | Description | +| :------------ | :------------------------- | +| `IMAGE_URL` | Fully qualified image name. | +| `IMAGE_DIGEST` | SHA256 digest of the image just built. | + +[tektonPipelineAuth]: https://tekton.dev/docs/pipelines/auth/#configuring-docker-authentication-for-docker +[Buildah]: https://github.com/containers/buildah +[OCI]: https://opencontainers.org/ + diff --git a/experimental/tasks/task-buildah/0.3.1/task-buildah.yaml b/experimental/tasks/task-buildah/0.3.1/task-buildah.yaml new file mode 100644 index 00000000..66909a8e --- /dev/null +++ b/experimental/tasks/task-buildah/0.3.1/task-buildah.yaml @@ -0,0 +1,171 @@ +--- +# Source: task-containers/templates/task-buildah.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: buildah + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Buildah task builds source into a container image and + then pushes it to a container registry. + + workspaces: + - name: source + optional: false + description: | + Container build context, like for instnace a application source code + followed by a `Dockerfile`. + - name: dockerconfig + description: >- + An optional workspace that allows providing a .docker/config.json file + for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json + or .dockerconfigjson. + optional: true + - name: rhel-entitlement + description: >- + An optional workspace that allows providing the entitlement keys + for Buildah to access subscription. The mounted workspace contains + entitlement.pem and entitlement-key.pem. + optional: true + mountPath: /tmp/entitlement + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by buildah. + - name: DOCKERFILE + type: string + default: ./Dockerfile + description: | + Path to the `Dockerfile` (or `Containerfile`) relative to the `source` workspace. + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_DOCKERFILE + value: "$(params.DOCKERFILE)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: WORKSPACES_RHEL_ENTITLEMENT_BOUND + value: "$(workspaces.rhel-entitlement.bound)" + - name: WORKSPACES_RHEL_ENTITLEMENT_PATH + value: "$(workspaces.rhel-entitlement.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /workspace/source + command: + - /scripts/buildah-bud.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + volumes: + - name: scripts-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-dotnet/0.3.1/README.md b/experimental/tasks/task-s2i-dotnet/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-dotnet/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-dotnet/0.3.1/task-s2i-dotnet.yaml b/experimental/tasks/task-s2i-dotnet/0.3.1/task-s2i-dotnet.yaml new file mode 100644 index 00000000..8cec86ae --- /dev/null +++ b/experimental/tasks/task-s2i-dotnet/0.3.1/task-s2i-dotnet.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-dotnet.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-dotnet + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's dotnet builder-image + "registry.access.redhat.com/ubi8/dotnet-60:6.0-48". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi8/dotnet-60:6.0-48 + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-go/0.3.1/README.md b/experimental/tasks/task-s2i-go/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-go/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-go/0.3.1/task-s2i-go.yaml b/experimental/tasks/task-s2i-go/0.3.1/task-s2i-go.yaml new file mode 100644 index 00000000..b2f339cc --- /dev/null +++ b/experimental/tasks/task-s2i-go/0.3.1/task-s2i-go.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-go.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-go + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's Golang builder-image + "registry.access.redhat.com/ubi8/go-toolset:1.20.12-5.1713833129". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi8/go-toolset:1.20.12-5.1713833129 + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-java/0.3.1/README.md b/experimental/tasks/task-s2i-java/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-java/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-java/0.3.1/task-s2i-java.yaml b/experimental/tasks/task-s2i-java/0.3.1/task-s2i-java.yaml new file mode 100644 index 00000000..199b21bf --- /dev/null +++ b/experimental/tasks/task-s2i-java/0.3.1/task-s2i-java.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-java.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-java + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's Java builder-image + "registry.access.redhat.com/ubi8/openjdk-11:latest". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi8/openjdk-11:latest + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-nodejs/0.3.1/README.md b/experimental/tasks/task-s2i-nodejs/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-nodejs/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-nodejs/0.3.1/task-s2i-nodejs.yaml b/experimental/tasks/task-s2i-nodejs/0.3.1/task-s2i-nodejs.yaml new file mode 100644 index 00000000..862acc4f --- /dev/null +++ b/experimental/tasks/task-s2i-nodejs/0.3.1/task-s2i-nodejs.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-nodejs.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-nodejs + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's Nodejs builder-image + "registry.access.redhat.com/ubi8/nodejs-18:latest". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi8/nodejs-18:latest + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-perl/0.3.1/README.md b/experimental/tasks/task-s2i-perl/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-perl/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-perl/0.3.1/task-s2i-perl.yaml b/experimental/tasks/task-s2i-perl/0.3.1/task-s2i-perl.yaml new file mode 100644 index 00000000..0c64a21a --- /dev/null +++ b/experimental/tasks/task-s2i-perl/0.3.1/task-s2i-perl.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-perl.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-perl + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's Perl builder-image + "registry.access.redhat.com/ubi9/perl-532:1-145". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi9/perl-532:1-145 + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-php/0.3.1/README.md b/experimental/tasks/task-s2i-php/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-php/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-php/0.3.1/task-s2i-php.yaml b/experimental/tasks/task-s2i-php/0.3.1/task-s2i-php.yaml new file mode 100644 index 00000000..fb9780bd --- /dev/null +++ b/experimental/tasks/task-s2i-php/0.3.1/task-s2i-php.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-php.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-php + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's php builder-image + "registry.access.redhat.com/ubi9/php-81:1-54". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi9/php-81:1-54 + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-python/0.3.1/README.md b/experimental/tasks/task-s2i-python/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-python/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-python/0.3.1/task-s2i-python.yaml b/experimental/tasks/task-s2i-python/0.3.1/task-s2i-python.yaml new file mode 100644 index 00000000..4a17aa76 --- /dev/null +++ b/experimental/tasks/task-s2i-python/0.3.1/task-s2i-python.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-python.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-python + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's Python builder-image + "registry.access.redhat.com/ubi8/python-39:latest". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi8/python-39:latest + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-s2i-ruby/0.3.1/README.md b/experimental/tasks/task-s2i-ruby/0.3.1/README.md new file mode 100644 index 00000000..b86765b3 --- /dev/null +++ b/experimental/tasks/task-s2i-ruby/0.3.1/README.md @@ -0,0 +1,83 @@ +Source-to-Image Tekton Tasks (`s2i`) +------------------------------------ + +# Abstract + +Describes the Tekton Tasks supporting Source-to-Image for various ecosystems. + +# `s2i` Builder Images + +This section we explain each language ecosystem comes with a predefined set of builder images, supported by Red Hat. + +The `s2i` Task helps in building reproducible container images from source code i.e. task for supporting s2i functionality. + +The s2i Task has been customized with builder images specific to various languages and have been named appropriately as follows: + +| Task Name | Builder Image Used | +| ---------- | ---------------------------------------------------------------------- | +| s2i-python | http://registry.access.redhat.com/ubi8/python-39:latest | +| s2i-go | http://registry.access.redhat.com/ubi8/go-toolset:1.19.10-3 | +| s2i-java | http://registry.access.redhat.com/ubi8/openjdk-11:latest | +| s2i-dotnet | http://registry.access.redhat.com/ubi8/dotnet-60:6.0-37.20230802191230 | +| s2i-php | http://registry.access.redhat.com/ubi9/php-81:1-29 | +| s2i-nodejs | http://registry.access.redhat.com/ubi8/nodejs-18:latest | +| s2i-perl | http://registry.access.redhat.com/ubi9/perl-532:1-91 | +| s2i-ruby | http://registry.access.redhat.com/ubi9/ruby-31:1-50 | + +In case, the above builder images associated with the languages aren’t satisfactory for your source code, you can change it using appropriate parameter. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: s2i-python + params: + - name: IMAGE + value: registry.registry.svc.cluster.local:32222/task-containers/task-s2i-python:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Workspaces + +All of the s2i tasks use the `source` workspace which is meant to contain the Application source code, which acts as the build context for S2I workflow. + + +## Params + +| Param | Type | Default | Description | +| ----------------- | ------ | ------------------------ | ------------------------------------------------------------------------- | +| IMAGE | string | (required) | Fully qualified container image name to be built by s2i | +| IMAGE_SCRIPTS_URL | string | image:///usr/libexec/s2i | URL containing the default assemble and run scripts for the builder image | +| ENV_VARS | array | [] | Array containing string of Environment Variables as "KEY=VALUE” | +| SUBDIRECTORY | string | . | Relative subdirectory to the source Workspace for the build-context. | +| STORAGE_DRIVER | string | overlay | Set buildah storage driver to reflect the currrent cluster node's | +| settings. | +| BUILD_EXTRA_ARGS | string | | Extra parameters passed for the build command when building images. | +| PUSH_EXTRA_ARGS | string | | Extra parameters passed for the push command when pushing images. | +| SKIP_PUSH | string | false | Skip pushing the image to the container registry. | +| TLS_VERIFY | string | true | Sets the TLS verification flag, true is recommended. | +| VERBOSE | string | false | Turns on verbose logging, all commands executed will be printed out. | + +## Results + +| Result | Description | +| ------------ | ------------------------------- | +| IMAGE_URL | Fully qualified image name. | +| IMAGE_DIGEST | Digest of the image just built. | diff --git a/experimental/tasks/task-s2i-ruby/0.3.1/task-s2i-ruby.yaml b/experimental/tasks/task-s2i-ruby/0.3.1/task-s2i-ruby.yaml new file mode 100644 index 00000000..91dab8b9 --- /dev/null +++ b/experimental/tasks/task-s2i-ruby/0.3.1/task-s2i-ruby.yaml @@ -0,0 +1,192 @@ +--- +# Source: task-containers/templates/task-s2i-ruby.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: s2i-ruby + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Builds the source code using the s2i's Ruby builder-image + "registry.access.redhat.com/ubi9/ruby-31:1-102". + + + workspaces: + - name: source + optional: false + description: | + Application source code, the build context for S2I workflow. + - name: dockerconfig + optional: true + description: >- + An optional workspace that allows providing a .docker/config.json file for Buildah to access the container registry. + The file should be placed at the root of the Workspace with name config.json. + + params: + - name: IMAGE + type: string + description: | + Fully qualified container image name to be built by s2i. + - name: IMAGE_SCRIPTS_URL + type: string + default: image:///usr/libexec/s2i + description: | + Specify a URL containing the default assemble and run scripts for the builder image + - name: ENV_VARS + type: array + default: [] + description: | + Array containing string of Environment Variables as "KEY=VALUE" + - name: CONTEXT + type: string + default: "." + description: | + Path to the directory to use as context. + - name: STORAGE_DRIVER + type: string + default: vfs + description: | + Set buildah storage driver to reflect the currrent cluster node's + settings. + - name: FORMAT + description: The format of the built container, oci or docker + default: "oci" + - name: BUILD_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the build command when building images. + - name: PUSH_EXTRA_ARGS + type: string + default: "" + description: | + Extra parameters passed for the push command when pushing images. + - name: SKIP_PUSH + default: "false" + description: | + Skip pushing the image to the container registry. + - name: TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flag, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Turns on verbose logging, all commands executed will be printed out. + + results: + - name: IMAGE_URL + description: | + Fully qualified image name. + - name: IMAGE_DIGEST + description: | + Digest of the image just built. + + stepTemplate: + env: + + - name: PARAMS_IMAGE + value: "$(params.IMAGE)" + - name: PARAMS_IMAGE_SCRIPTS_URL + value: "$(params.IMAGE_SCRIPTS_URL)" + - name: PARAMS_CONTEXT + value: "$(params.CONTEXT)" + - name: PARAMS_FORMAT + value: "$(params.FORMAT)" + - name: PARAMS_STORAGE_DRIVER + value: "$(params.STORAGE_DRIVER)" + - name: PARAMS_BUILD_EXTRA_ARGS + value: "$(params.BUILD_EXTRA_ARGS)" + - name: PARAMS_PUSH_EXTRA_ARGS + value: "$(params.PUSH_EXTRA_ARGS)" + - name: PARAMS_SKIP_PUSH + value: "$(params.SKIP_PUSH)" + - name: PARAMS_TLS_VERIFY + value: "$(params.TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_SOURCE_BOUND + value: "$(workspaces.source.bound)" + - name: WORKSPACES_SOURCE_PATH + value: "$(workspaces.source.path)" + - name: WORKSPACES_DOCKERCONFIG_BOUND + value: "$(workspaces.dockerconfig.bound)" + - name: WORKSPACES_DOCKERCONFIG_PATH + value: "$(workspaces.dockerconfig.path)" + - name: RESULTS_IMAGE_URL_PATH + value: "$(results.IMAGE_URL.path)" + - name: RESULTS_IMAGE_DIGEST_PATH + value: "$(results.IMAGE_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgV3JhcHBlciBhcm91bmQgImJ1aWxkYWggYnVkIiB0byBidWlsZCBhbmQgcHVzaCBhIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiBhIERvY2tlcmZpbGUuCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvYnVpbGRhaC1jb21tb24uc2giCgpmdW5jdGlvbiBfYnVpbGRhaCgpIHsKICAgIGJ1aWxkYWggXAogICAgICAgIC0tc3RvcmFnZS1kcml2ZXI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSfSIgXAogICAgICAgIC0tdGxzLXZlcmlmeT0iJHtQQVJBTVNfVExTX1ZFUklGWX0iIFwKICAgICAgICAkeyp9Cn0KCiMKIyBQcmVwYXJlCiMKCiMgbWFraW5nIHN1cmUgdGhlIHJlcXVpcmVkIHdvcmtzcGFjZSAic291cmNlIiBpcyBib3VuZGVkLCB3aGljaCBtZWFucyBpdHMgdm9sdW1lIGlzIGN1cnJlbnRseSBtb3VudGVkCiMgYW5kIHJlYWR5IHRvIHVzZQpwaGFzZSAiSW5zcGVjdGluZyBzb3VyY2Ugd29ya3NwYWNlICcke1dPUktTUEFDRVNfU09VUkNFX1BBVEh9JyAoUFdEPScke1BXRH0nKSIKW1sgIiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkR9IiAhPSAidHJ1ZSIgXV0gJiYKICAgIGZhaWwgIldvcmtzcGFjZSAnc291cmNlJyBpcyBub3QgYm91bmRlZCIKCnBoYXNlICJBc3NlcnRpbmcgdGhlIGRvY2tlcmZpbGUvY29udGFpbmVyZmlsZSAnJHtET0NLRVJGSUxFX0ZVTEx9JyBleGlzdHMiCltbICEgLWYgIiR7RE9DS0VSRklMRV9GVUxMfSIgXV0gJiYKICAgIGZhaWwgIkRvY2tlcmZpbGUgbm90IGZvdW5kIGF0OiAnJHtET0NLRVJGSUxFX0ZVTEx9JyIKCnBoYXNlICJJbnNwZWN0aW5nIGNvbnRleHQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKW1sgISAtZCAiJHtQQVJBTVNfQ09OVEVYVH0iIF1dICYmCiAgICBmYWlsICJDT05URVhUIHBhcmFtIGlzIG5vdCBmb3VuZCBhdCAnJHtQQVJBTVNfQ09OVEVYVH0nLCBvbiBzb3VyY2Ugd29ya3NwYWNlIgoKIyBIYW5kbGUgb3B0aW9uYWwgZG9ja2VyY29uZmlnIHNlY3JldAppZiBbWyAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19CT1VORH0iID09ICJ0cnVlIiBdXTsgdGhlbgoKICAgICMgaWYgY29uZmlnLmpzb24gZXhpc3RzIGF0IHdvcmtzcGFjZSByb290LCB3ZSB1c2UgdGhhdAogICAgaWYgdGVzdCAtZiAiJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfS9jb25maWcuanNvbiI7IHRoZW4KICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJHtXT1JLU1BBQ0VTX0RPQ0tFUkNPTkZJR19QQVRIfSIKCiAgICAgICAgIyBlbHNlIHdlIGxvb2sgZm9yIC5kb2NrZXJjb25maWdqc29uIGF0IHRoZSByb290CiAgICBlbGlmIHRlc3QgLWYgIiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSH0vLmRvY2tlcmNvbmZpZ2pzb24iOyB0aGVuCiAgICAgICAgIyBlbnN1cmUgLmRvY2tlciBleGlzdCBiZWZvcmUgdGhlIGNvcHlpbmcgdGhlIGNvbnRlbnQKICAgICAgICBpZiBbICEgLWQgIiRIT01FLy5kb2NrZXIiIF07IHRoZW4KICAgICAgICAgICBta2RpciAtcCAiJEhPTUUvLmRvY2tlciIKICAgICAgICBmaQogICAgICAgIGNwICIke1dPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEh9Ly5kb2NrZXJjb25maWdqc29uIiAiJEhPTUUvLmRvY2tlci9jb25maWcuanNvbiIKICAgICAgICBleHBvcnQgRE9DS0VSX0NPTkZJRz0iJEhPTUUvLmRvY2tlciIKCiAgICAgICAgIyBuZWVkIHRvIGVycm9yIG91dCBpZiBuZWl0aGVyIGZpbGVzIGFyZSBwcmVzZW50CiAgICBlbHNlCiAgICAgICAgZWNobyAibmVpdGhlciAnY29uZmlnLmpzb24nIG5vciAnLmRvY2tlcmNvbmZpZ2pzb24nIGZvdW5kIGF0IHdvcmtzcGFjZSByb290IgogICAgICAgIGV4aXQgMQogICAgZmkKZmkKCkVOVElUTEVNRU5UX1ZPTFVNRT0iIgppZiBbWyAiJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkR9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIEVOVElUTEVNRU5UX1ZPTFVNRT0iLS12b2x1bWUgJHtXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfUEFUSH06L2V0Yy9wa2kvZW50aXRsZW1lbnQiCmZpCgojCiMgQnVpbGQKIwoKcGhhc2UgIkJ1aWxkaW5nICcke1BBUkFNU19JTUFHRX0nIGJhc2VkIG9uICcke0RPQ0tFUkZJTEVfRlVMTH0nIgoKW1sgLW4gIiR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IiBdXSAmJgogICAgcGhhc2UgIkV4dHJhICdidWlsZGFoIGJ1ZCcgYXJndW1lbnRzIGluZm9ybWVkOiAnJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHU30nIgoKX2J1aWxkYWggYnVkICR7UEFSQU1TX0JVSUxEX0VYVFJBX0FSR1N9IFwKICAgICRFTlRJVExFTUVOVF9WT0xVTUUgXAogICAgLS1uby1jYWNoZSBcCiAgICAtLWZpbGU9IiR7RE9DS0VSRklMRV9GVUxMfSIgXAogICAgLS10YWc9IiR7UEFSQU1TX0lNQUdFfSIgXAogICAgJHtQQVJBTVNfQ09OVEVYVH0KCmlmIFtbICIke1BBUkFNU19TS0lQX1BVU0h9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHBoYXNlICJTa2lwcGluZyBwdXNoaW5nICcke1BBUkFNU19JTUFHRX0nIHRvIHRoZSBjb250YWluZXIgcmVnaXN0cnkhIgogICAgZXhpdCAwCmZpCgojCiMgUHVzaAojCgpwaGFzZSAiUHVzaGluZyAnJHtQQVJBTVNfSU1BR0V9JyB0byB0aGUgY29udGFpbmVyIHJlZ2lzdHJ5IgoKW1sgLW4gIiR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30iIF1dICYmCiAgICBwaGFzZSAiRXh0cmEgJ2J1aWxkYWggYnVkJyBhcmd1bWVudHMgaW5mb3JtZWQ6ICcke1BBUkFNU19QVVNIX0VYVFJBX0FSR1N9JyIKCiMgdGVtcG9yYXJ5IGZpbGUgdG8gc3RvcmUgdGhlIGltYWdlIGRpZ2VzdCwgaW5mb3JtYXRpb24gb25seSBvYnRhaW5lZCBhZnRlciBwdXNoaW5nIHRoZSBpbWFnZSB0byB0aGUKIyBjb250YWluZXIgcmVnaXN0cnkKZGVjbGFyZSAtciBkaWdlc3RfZmlsZT0iL3RtcC9idWlsZGFoLWRpZ2VzdC50eHQiCgpfYnVpbGRhaCBwdXNoICR7UEFSQU1TX1BVU0hfRVhUUkFfQVJHU30gXAogICAgLS1kaWdlc3RmaWxlPSIke2RpZ2VzdF9maWxlfSIgXAogICAgJHtQQVJBTVNfSU1BR0V9IFwKICAgIGRvY2tlcjovLyR7UEFSQU1TX0lNQUdFfQoKIwojIFJlc3VsdHMKIwoKcGhhc2UgIkluc3BlY3RpbmcgZGlnZXN0IHJlcG9ydCAoJyR7ZGlnZXN0X2ZpbGV9JykiCgpbWyAhIC1yICIke2RpZ2VzdF9maWxlfSIgXV0gJiYKICAgIGZhaWwgIlVuYWJsZSB0byBmaW5kIGRpZ2VzdC1maWxlIGF0ICcke2RpZ2VzdF9maWxlfSciCgpkZWNsYXJlIC1yIGRpZ2VzdF9zdW09IiQoY2F0ICR7ZGlnZXN0X2ZpbGV9KSIKCltbIC16ICIke2RpZ2VzdF9zdW19IiBdXSAmJgogICAgZmFpbCAiRGlnZXN0IGZpbGUgJyR7ZGlnZXN0X2ZpbGV9JyBpcyBlbXB0eSEiCgpwaGFzZSAiU3VjY2Vzc2Z1bHkgYnVpbHQgY29udGFpbmVyIGltYWdlICcke1BBUkFNU19JTUFHRX0nICgnJHtkaWdlc3Rfc3VtfScpIgplY2hvIC1uICIke1BBUkFNU19JTUFHRX0iIHwgdGVlICR7UkVTVUxUU19JTUFHRV9VUkxfUEFUSH0KZWNobyAtbiAiJHtkaWdlc3Rfc3VtfSIgfCB0ZWUgJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIfQo=" |base64 -d >buildah-bud.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RPQ0tFUkZJTEU9IiR7UEFSQU1TX0RPQ0tFUkZJTEU6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19DT05URVhUPSIke1BBUkFNU19DT05URVhUOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU1RPUkFHRV9EUklWRVI9IiR7UEFSQU1TX1NUT1JBR0VfRFJJVkVSOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfQlVJTERfRVhUUkFfQVJHUz0iJHtQQVJBTVNfQlVJTERfRVhUUkFfQVJHUzotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1BVU0hfRVhUUkFfQVJHUz0iJHtQQVJBTVNfUFVTSF9FWFRSQV9BUkdTOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfU0tJUF9QVVNIPSIke1BBUkFNU19TS0lQX1BVU0g6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19UTFNfVkVSSUZZPSIke1BBUkFNU19UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfU09VUkNFX1BBVEg9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ9IiR7V09SS1NQQUNFU19TT1VSQ0VfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfRE9DS0VSQ09ORklHX1BBVEg9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfUEFUSDotfSIKZGVjbGFyZSAtcnggV09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ9IiR7V09SS1NQQUNFU19ET0NLRVJDT05GSUdfQk9VTkQ6LX0iCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIPSIke1dPUktTUEFDRVNfUkhFTF9FTlRJVExFTUVOVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX1JIRUxfRU5USVRMRU1FTlRfQk9VTkQ9IiR7V09SS1NQQUNFU19SSEVMX0VOVElUTEVNRU5UX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19JTUFHRV9ESUdFU1RfUEFUSD0iJHtSRVNVTFRTX0lNQUdFX0RJR0VTVF9QQVRIOi19IgpkZWNsYXJlIC1yeCBSRVNVTFRTX0lNQUdFX1VSTF9QQVRIPSIke1JFU1VMVFNfSU1BR0VfVVJMX1BBVEg6LX0iCgojCiMgRG9ja2VyZmlsZQojCgojIGV4cG9zaW5nIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlLCB3aGljaCBieSBkZWZhdWx0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgcHJpbWFyeQojIHdvcmtzcGFjZSwgdG8gcmVjZWl2ZSBhIGRpZmZlcmVudCBjb250YWluZXItZmlsZSBsb2NhdGlvbgpkZWNsYXJlIC1yIGRvY2tlcmZpbGVfb25fd3M9IiR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0vJHtQQVJBTVNfRE9DS0VSRklMRX0iCmRlY2xhcmUgLXggRE9DS0VSRklMRV9GVUxMPSIke0RPQ0tFUkZJTEVfRlVMTDotJHtkb2NrZXJmaWxlX29uX3dzfX0iCgojCiMgQXNzZXJ0aW5nIEVudmlyb25tZW50CiMKCltbIC16ICIke0RPQ0tFUkZJTEVfRlVMTH0iIF1dICYmCiAgICBmYWlsICJ1bmFibGUgdG8gZmluZCB0aGUgRG9ja2VyZmlsZSwgRE9DS0VSRklMRSBtYXkgaGF2ZSBhbiBpbmNvcnJlY3QgbG9jYXRpb24iCgpleHBvcnRlZF9vcl9mYWlsIFwKICAgIFdPUktTUEFDRVNfU09VUkNFX1BBVEggXAogICAgUEFSQU1TX0lNQUdFCgojCiMgVmVyYm9zZSBPdXRwdXQKIwoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIHNldCAteApmaQo=" |base64 -d >buildah-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + chmod +x buildah-*.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYnkgczJpIHRvIGFzc2VtYmxlIGEgbmV3IGNvbnRhaW5lciBpbWFnZSB1c2luZyBidWlsZGFoLgojCgpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1ldSAtbyBwaXBlZmFpbAoKZGVjbGFyZSAtciBjdXJfZGlyPSIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pIgoKc291cmNlICIke2N1cl9kaXJ9L2NvbW1vbi5zaCIKc291cmNlICIke2N1cl9kaXJ9L3MyaS1jb21tb24uc2giCgojIGxvYWRpbmcgYnVpbGRhaCBzZXR0aW5ncyBvdmVyd3JpdHRpbmcgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29udGFpbmVyIGZpbGUKZGVjbGFyZSAteCBET0NLRVJGSUxFX0ZVTEw9IiR7UzJJX0RPQ0tFUkZJTEV9Igpzb3VyY2UgIiR7Y3VyX2Rpcn0vYnVpbGRhaC1jb21tb24uc2giCgpwaGFzZSAiQnVpbGRpbmcgdGhlIERvY2tlcmZpbGUgJyR7RE9DS0VSRklMRV9GVUxMfScgd2l0aCBidWlsZGFoIgpleGVjICR7Y3VyX2Rpcn0vYnVpbGRhaC1idWQuc2gK" |base64 -d >s2i-build.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0YXJnZXQgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKSB0byBiZSBidWlsZCB3aXRoIHMyaSwgcmVkZWNsYXJpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdGhhbgojIGJ1aWxkYWggdGFzayB1c2VzCmRlY2xhcmUgLXggUEFSQU1TX0lNQUdFPSIke1BBUkFNU19JTUFHRTotfSIKIyBTcGVjaWZ5IGEgVVJMIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgYXNzZW1ibGUgYW5kIHJ1biBzY3JpcHRzIGZvciB0aGUgYnVpbGRlciBpbWFnZQpkZWNsYXJlIC1yeCBQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkw9IiR7UEFSQU1TX0lNQUdFX1NDUklQVFNfVVJMOi19IgoKIyB2b2x1bWUgbW91bnQgb3IgZGlyZWN0b3J5IHJlc3BvbnNpYmxlIGZvciBob2xkaW5nIGZpbGVzIAojIGxpa2UgZW52LCBEb2NrZXJmaWxlIGFuZCBhbnkgb3RoZXJzIG5lZWRlZCB0byBzdXBwb3J0IHMyaQpkZWNsYXJlIC1yeCBTMklfR0VORVJBVEVfRElSRUNUT1JZPSIke1MySV9HRU5FUkFURV9ESVJFQ1RPUlk6LS9zMmktZ2VuZXJhdGV9IgoKIyBmdWxsIHBhdGggdG8gdGhlIGNvbnRhaW5lciBmaWxlIGdlbmVyYXRlZCBieSBzMmkKZGVjbGFyZSAtcnggUzJJX0RPQ0tFUkZJTEU9IiR7UzJJX0RPQ0tFUkZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vRG9ja2VyZmlsZS5nZW59IgoKIyBmdWxsIHBhdGggdG8gdGhlIGVudiBmaWxlIHVzZWQgd2l0aCB0aGUgLS1lbnZpcm9ubWVudC1maWxlIHBhcmFtZXRlciBvZiBzMmkKZGVjbGFyZSAtcnggUzJJX0VOVklST05NRU5UX0ZJTEU9IiR7UzJJX0VOVklST05NRU5UX0ZJTEU6LSR7UzJJX0dFTkVSQVRFX0RJUkVDVE9SWX0vZW52fSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBXT1JLU1BBQ0VTX1NPVVJDRV9QQVRIIFwKICAgIFBBUkFNU19JTUFHRQoKIwojIFZlcmJvc2UgT3V0cHV0CiMKCmRlY2xhcmUgLXggUzJJX0xPR0xFVkVMPSIwIgoKaWYgW1sgIiR7UEFSQU1TX1ZFUkJPU0V9IiA9PSAidHJ1ZSIgXV07IHRoZW4KICAgIFMySV9MT0dMRVZFTD0iMiIKICAgIHNldCAteApmaQo=" |base64 -d >s2i-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVXNlcyBzMmkgdG8gZ2VuZXJhdGUgdGhlIHJlcGVzY3RpdmUgQ29udGFpbmVyZmlsZSBiYXNlZCBvbiB0aGUgaW5mb21yZWQgYnVpbGRlci4gVGhlIENvbnRhaW5lcmZpbGUKIyBpcyBzdG9yZWQgb24gYSB0ZW1wb3JhcnkgbG9jYXRpb24uCiMKCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLWV1IC1vIHBpcGVmYWlsCgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvY29tbW9uLnNoIgpzb3VyY2UgIiQoZGlybmFtZSAke0JBU0hfU09VUkNFWzBdfSkvczJpLWNvbW1vbi5zaCIKCiMgczJpIGJ1aWxkZXIgaW1hZ2UgbmFtZSAoZnVsbHkgcXVhbGlmaWVkKQpkZWNsYXJlIC1yeCBTMklfQlVJTERFUl9JTUFHRT0iJHtTMklfQlVJTERFUl9JTUFHRTotfSIKCiMgdGFrZXMgdGhlIHZhbHVlcyBpbiBhcmd1bWVudCBFTlZfVkFSUyBhbmQgY3JlYXRlcyBhbiBhcnJheSB1c2luZyB0aG9zZSB2YWx1ZXMKZGVjbGFyZSAtcmEgRU5WX1ZBUlM9KCR7QH0pCgojIHJlLXVzaW5nIHRoZSBzYW1lIHBhcmFtZXRlcnMgdGhhbiBidWlsZGFoLCBzMmkgbmVlZHMgYnVpbGRhaCBhYmlsaXRpZXMgdG8gY3JlYXRlIHRoZSBmaW5hbAojIGNvbnRhaW5lciBpbWFnZSBiYXNlZCBvbiB3aGF0IHMyaSBnZW5lcmF0ZXMKc291cmNlICIkKGRpcm5hbWUgJHtCQVNIX1NPVVJDRVswXX0pL2J1aWxkYWgtY29tbW9uLnNoIgoKIwojIFByZXBhcmUKIwoKIyBtYWtpbmcgc3VyZSB0aGUgcmVxdWlyZWQgd29ya3NwYWNlICJzb3VyY2UiIGlzIGJvdW5kZWQsIHdoaWNoIG1lYW5zIGl0cyB2b2x1bWUgaXMgY3VycmVudGx5IG1vdW50ZWQKIyBhbmQgcmVhZHkgdG8gdXNlCnBoYXNlICJJbnNwZWN0aW5nIHNvdXJjZSB3b3Jrc3BhY2UgJyR7V09SS1NQQUNFU19TT1VSQ0VfUEFUSH0nIChQV0Q9JyR7UFdEfScpIgpbWyAiJHtXT1JLU1BBQ0VTX1NPVVJDRV9CT1VORH0iICE9ICJ0cnVlIiBdXSAmJgogICAgZmFpbCAiV29ya3NwYWNlICdzb3VyY2UnIGlzIG5vdCBib3VuZGVkIgoKcGhhc2UgIkluc3BlY3RpbmcgY29udGV4dCAnJHtQQVJBTVNfQ09OVEVYVH0nIgpbWyAhIC1kICIke1BBUkFNU19DT05URVhUfSIgXV0gJiYKICAgIGZhaWwgIkFwcGxpY2F0aW9uIHNvdXJjZSBjb2RlIGRpcmVjdG9yeSBub3QgZm91bmQgYXQgJyR7UEFSQU1TX0NPTlRFWFR9JyIKCnBoYXNlICJBZGRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byAnJHtTMklfRU5WSVJPTk1FTlRfRklMRX0nIgoKIyBhZGQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IGFyZSBzZW50IGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgZnJvbSBFTlZfVkFSUyBwYXJhbWV0ZXIKdG91Y2ggIiR7UzJJX0VOVklST05NRU5UX0ZJTEV9IgppZiBbICR7I0VOVl9WQVJTW0BdfSAtZ3QgMCBdOyB0aGVuCiAgICBmb3IgZW52X3ZhciBpbiAiJHtFTlZfVkFSU1tAXX0iOyBkbwogICAgICAgIGVjaG8gIiR7ZW52X3Zhcn0iID4+ICIke1MySV9FTlZJUk9OTUVOVF9GSUxFfSIKICAgIGRvbmUKZmkKCiMKIyBTMkkgR2VuZXJhdGUKIwoKcGhhc2UgIkdlbmVyYXRpbmcgdGhlIERvY2tlcmZpbGUgZm9yIFMySSBidWlsZGVyIGltYWdlICcke1MySV9CVUlMREVSX0lNQUdFfSciCnMyaSAtLWxvZ2xldmVsICIke1MySV9MT0dMRVZFTH0iIFwKICAgIGJ1aWxkICIke1BBUkFNU19DT05URVhUfSIgIiR7UzJJX0JVSUxERVJfSU1BR0V9IiBcCiAgICAgICAgLS1pbWFnZS1zY3JpcHRzLXVybCAiJHtQQVJBTVNfSU1BR0VfU0NSSVBUU19VUkx9IiBcCiAgICAgICAgLS1hcy1kb2NrZXJmaWxlICIke1MySV9ET0NLRVJGSUxFfSIgXAogICAgICAgIC0tZW52aXJvbm1lbnQtZmlsZSAiJHtTMklfRU5WSVJPTk1FTlRfRklMRX0iCgpwaGFzZSAiSW5zcGVjdGluZyB0aGUgRG9ja2VyZmlsZSBnZW5lcmF0ZWQgYXQgJyR7UzJJX0RPQ0tFUkZJTEV9JyIKW1sgISAtZiAiJHtTMklfRE9DS0VSRklMRX0iIF1dICYmCiAgICBmYWlsICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBpcyBub3QgZm91bmQhIgoKc2V0ICt4CnBoYXNlICJHZW5lcmF0ZWQgRG9ja2VyZmlsZSBwYXlsb2FkIgplY2hvIC1lbiAiPj4+ICR7UzJJX0RPQ0tFUkZJTEV9XG4kKGNhdCAke1MySV9ET0NLRVJGSUxFfSlcbjw8PCBFT0ZcbiIK" |base64 -d >s2i-generate.sh + chmod +x s2i-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: s2i-generate + image: registry.access.redhat.com/source-to-image/source-to-image-rhel8:v1.3.9-6 + workingDir: $(workspaces.source.path) + env: + - name: S2I_BUILDER_IMAGE + value: registry.access.redhat.com/ubi9/ruby-31:1-102 + command: + - /scripts/s2i-generate.sh + args: + - "$(params.ENV_VARS[*])" + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + - name: s2i-build + image: registry.access.redhat.com/ubi8/buildah:8.9 + workingDir: /s2i-generate + command: + - /scripts/s2i-build.sh + securityContext: + capabilities: + add: ["SETFCAP"] + volumeMounts: + - name: scripts-dir + mountPath: /scripts + - name: s2i-generate-dir + mountPath: /s2i-generate + + volumes: + - name: scripts-dir + emptyDir: {} + - name: s2i-generate-dir + emptyDir: {} diff --git a/experimental/tasks/task-skopeo-copy/0.3.1/README.md b/experimental/tasks/task-skopeo-copy/0.3.1/README.md new file mode 100644 index 00000000..8e23003f --- /dev/null +++ b/experimental/tasks/task-skopeo-copy/0.3.1/README.md @@ -0,0 +1,60 @@ +Containers Tekton Tasks +----------------------- + +# Abstract + +Describes the Tekton Tasks supporting Skopeo-Copy + +# `skopeo-copy` Tekton Task + +The `skopeo-copy` Task is meant to replicate a container image from the `SOURCE_IMAGE_URL` registry to the `DESTINATION_IMAGE_URL` using [Skopeo][containersSkopeo], the Task results contain the SHA256 digests. + +# Usage + +Please, consider the usage example below: + +```yaml +--- +apiVersion: tekton.dev/v1beta1 +kind: TaskRun +metadata: {} +spec: + taskRef: + name: skopeo-copy + params: + - name: SOURCE_IMAGE_URL + value: docker://docker.io/busybox:latest + - name: DESTINATION_IMAGE_URL + value: docker://image-registry.openshift-image-registry.svc:5000/task-containers/busybox:latest +``` + +In case the Container Registry requires authentication, please consider the [Tekton Pipelines documentation][tektonPipelineAuth]. In a nutshell, you need to create a Kubernetes Secret describing the following attributes: + +```bash +kubectl create secret docker-registry imagestreams \ + --docker-server="image-registry.openshift-image-registry.svc:5000" \ + --docker-username="${REGISTRY_USERNAME}" \ + --docker-password="${REGISTRY_TOKEN}" +``` + +Then make sure the Secret is linked with the Service-Account running the `TaskRun`/`PipelineRun`. + +## Params + +| Param | Type | Default | Description | +| :------------ | :------------------------: | :--------------------------- | :------------------------- | +| `SOURCE_IMAGE_URL` | `string` | (required) | Fully qualified source container image name, including tag, to be copied into `DESTINATION_IMAGE_URL` param. | +| `DESTINATION_IMAGE_URL` | `string` | (required) | Fully qualified destination container image name, including tag. | +| `SRC_TLS_VERIFY` | `string` | `true` | Sets the TLS verification flags for the source registry, `true` is recommended. | +| `DEST_TLS_VERIFY` | `string` | `true` | Sets the TLS verification flags for the destination registry, `true` is recommended. | +| `VERBOSE` | `string` | `false` | Shows a more verbose (debug) output. | + +## Results + +| Result | Description | +| :------------ | :------------------------- | +| `SOURCE_DIGEST` | Source image SHA256 digest. | +| `DESTINATION_DIGEST` | Destination image SHA256 digest. | + +[tektonPipelineAuth]: https://tekton.dev/docs/pipelines/auth/#configuring-docker-authentication-for-docker +[containersSkopeo]: https://github.com/containers/skopeo diff --git a/experimental/tasks/task-skopeo-copy/0.3.1/task-skopeo-copy.yaml b/experimental/tasks/task-skopeo-copy/0.3.1/task-skopeo-copy.yaml new file mode 100644 index 00000000..344a8c84 --- /dev/null +++ b/experimental/tasks/task-skopeo-copy/0.3.1/task-skopeo-copy.yaml @@ -0,0 +1,125 @@ +--- +# Source: task-containers/templates/task-skopeo-copy.yaml +apiVersion: tekton.dev/v1 +kind: Task +metadata: + name: skopeo-copy + labels: + app.kubernetes.io/version: 0.3.1 + annotations: + tekton.dev/source: "https://github.com/openshift-pipelines/task-containers" + artifacthub.io/category: integration-delivery + artifacthub.io/maintainers: | + - name: OpenShift Pipeline task maintainers + email: pipelines-extcomm@redhat.com + artifacthub.io/provider: Red Hat + artifacthub.io/recommendations: | + - url: https://tekton.dev/ + tekton.dev/categories: containers + tekton.dev/pipelines.minVersion: 0.41.0 + tekton.dev/tags: containers +spec: + description: | + Skopeo is a command line tool for working with remote image registries. + Skopeo doesn’t require a daemon to be running while performing its operations. In particular, + the handy skopeo command called copy will ease the whole image copy operation. + The copy command will take care of copying the image from internal.registry to production.registry. + If your production registry requires credentials to login in order to push the image, skopeo can handle that as well. + After copying the source and destination images SHA256 digest is stored as results. + workspaces: + - name: images_url + optional: true + description: | + For storing image urls in case we have more than one image to copy. + params: + - name: SOURCE_IMAGE_URL + type: string + description: | + Fully qualified source container image name, including tag, to be copied + into `DESTINATION_IMAGE_URL` param. + - name: DESTINATION_IMAGE_URL + type: string + description: | + Fully qualified destination container image name, including tag. + - name: SRC_TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flags for the source registry, `true` is recommended. + - name: DEST_TLS_VERIFY + type: string + default: "true" + description: | + Sets the TLS verification flags for the destination registry, `true` is recommended. + - name: VERBOSE + type: string + default: "false" + description: | + Shows a more verbose (debug) output. + + results: + - name: SOURCE_DIGEST + type: string + description: | + Source image SHA256 digest. + - name: DESTINATION_DIGEST + type: string + description: | + Destination image SHA256 digest. + + volumes: + - name: scripts-dir + emptyDir: {} + + stepTemplate: + env: + + - name: PARAMS_SOURCE_IMAGE_URL + value: "$(params.SOURCE_IMAGE_URL)" + - name: PARAMS_DESTINATION_IMAGE_URL + value: "$(params.DESTINATION_IMAGE_URL)" + - name: PARAMS_SRC_TLS_VERIFY + value: "$(params.SRC_TLS_VERIFY)" + - name: PARAMS_DEST_TLS_VERIFY + value: "$(params.DEST_TLS_VERIFY)" + - name: PARAMS_VERBOSE + value: "$(params.VERBOSE)" + - name: WORKSPACES_IMAGES_URL_BOUND + value: "$(workspaces.images_url.bound)" + - name: WORKSPACES_IMAGES_URL_PATH + value: "$(workspaces.images_url.path)" + - name: RESULTS_SOURCE_DIGEST_PATH + value: "$(results.SOURCE_DIGEST.path)" + - name: RESULTS_DESTINATION_DIGEST_PATH + value: "$(results.DESTINATION_DIGEST.path)" + + steps: + - name: load-scripts + image: registry.access.redhat.com/ubi8-minimal:8.9 + workingDir: /scripts + script: | + set -e + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKIyB0ZWt0b24ncyBob21lIGRpcmVjdG9yeQpkZWNsYXJlIC1yeCBURUtUT05fSE9NRT0iJHtURUtUT05fSE9NRTotL3Rla3Rvbi9ob21lfSIKCiMKIyBGdW5jdGlvbnMKIwoKZnVuY3Rpb24gZmFpbCgpIHsKICAgIGVjaG8gIkVSUk9SOiAkeyp9IiAyPiYxCiAgICBleGl0IDEKfQoKZnVuY3Rpb24gcGhhc2UoKSB7CiAgICBlY2hvICItLS0+IFBoYXNlOiAkeyp9Li4uIgp9CgojIGFzc2VydCBsb2NhbCB2YXJpYWJsZXMgYXJlIGV4cG9yZXRlZCBvbiB0aGUgZW52aXJvbm1lbnQKZnVuY3Rpb24gZXhwb3J0ZWRfb3JfZmFpbCgpIHsKICAgIGRlY2xhcmUgLWEgX3JlcXVpcmVkX3ZhcnM9IiR7QH0iCgogICAgZm9yIHYgaW4gJHtfcmVxdWlyZWRfdmFyc1tAXX07IGRvCiAgICAgICAgW1sgLXogIiR7IXZ9IiBdXSAmJgogICAgICAgICAgICBmYWlsICInJHt2fScgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCEiCiAgICBkb25lCgogICAgcmV0dXJuIDAKfQo=" |base64 -d >common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKZGVjbGFyZSAtcnggUEFSQU1TX1NPVVJDRV9JTUFHRV9VUkw9IiR7UEFSQU1TX1NPVVJDRV9JTUFHRV9VUkw6LX0iCmRlY2xhcmUgLXJ4IFBBUkFNU19ERVNUSU5BVElPTl9JTUFHRV9VUkw9IiR7UEFSQU1TX0RFU1RJTkFUSU9OX0lNQUdFX1VSTDotfSIKZGVjbGFyZSAtcnggUEFSQU1TX1NSQ19UTFNfVkVSSUZZPSIke1BBUkFNU19TUkNfVExTX1ZFUklGWTotfSIKZGVjbGFyZSAtcnggUEFSQU1TX0RFU1RfVExTX1ZFUklGWT0iJHtQQVJBTVNfREVTVF9UTFNfVkVSSUZZOi19IgpkZWNsYXJlIC1yeCBQQVJBTVNfVkVSQk9TRT0iJHtQQVJBTVNfVkVSQk9TRTotfSIKCmRlY2xhcmUgLXJ4IFdPUktTUEFDRVNfSU1BR0VTX1VSTF9QQVRIPSIke1dPUktTUEFDRVNfSU1BR0VTX1VSTF9QQVRIOi19IgpkZWNsYXJlIC1yeCBXT1JLU1BBQ0VTX0lNQUdFU19VUkxfQk9VTkQ9IiR7V09SS1NQQUNFU19JTUFHRVNfVVJMX0JPVU5EOi19IgoKZGVjbGFyZSAtcnggUkVTVUxUU19TT1VSQ0VfRElHRVNUX1BBVEg9IiR7UkVTVUxUU19TT1VSQ0VfRElHRVNUX1BBVEg6LX0iCmRlY2xhcmUgLXJ4IFJFU1VMVFNfREVTVElOQVRJT05fRElHRVNUX1BBVEg9IiR7UkVTVUxUU19ERVNUSU5BVElPTl9ESUdFU1RfUEFUSDotfSIKCiMKIyBBc3NlcnRpbmcgRW52aXJvbm1lbnQKIwoKZXhwb3J0ZWRfb3JfZmFpbCBcCiAgICBQQVJBTVNfU09VUkNFX0lNQUdFX1VSTCBcCiAgICBQQVJBTVNfREVTVElOQVRJT05fSU1BR0VfVVJMIFwKICAgIFJFU1VMVFNfU09VUkNFX0RJR0VTVF9QQVRIIFwKICAgIFJFU1VMVFNfREVTVElOQVRJT05fRElHRVNUX1BBVEgKICAgICAKCiMKIyBTa29wZW8gQXV0aGVudGljYXRpb24KIwoKZGVjbGFyZSAteCBSRUdJU1RSWV9BVVRIX0ZJTEU9IiIKCmRvY2tlcl9jb25maWc9IiR7SE9NRX0vLmRvY2tlci9jb25maWcuanNvbiIKaWYgW1sgLWYgIiR7ZG9ja2VyX2NvbmZpZ30iIF1dOyB0aGVuCiAgICBwaGFzZSAiU2V0dGluZyBSRUdJU1RSWV9BVVRIX0ZJTEUgdG8gJyR7ZG9ja2VyX2NvbmZpZ30nIgogICAgUkVHSVNUUllfQVVUSF9GSUxFPSR7ZG9ja2VyX2NvbmZpZ30KZmkKCiMKIyBWZXJib3NlIE91dHB1dAojCgpkZWNsYXJlIC14IFNLT1BFT19ERUJVR19GTEFHPSIiCgppZiBbWyAiJHtQQVJBTVNfVkVSQk9TRX0iID09ICJ0cnVlIiBdXTsgdGhlbgogICAgU0tPUEVPX0RFQlVHX0ZMQUc9Ii0tZGVidWciCiAgICBzZXQgLXgKZmkK" |base64 -d >skopeo-common.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKc2hvcHQgLXMgaW5oZXJpdF9lcnJleGl0CnNldCAtZXUgLW8gcGlwZWZhaWwKCnNvdXJjZSAiJChkaXJuYW1lICIke0JBU0hfU09VUkNFWzBdfSIpL2NvbW1vbi5zaCIKc291cmNlICIkKGRpcm5hbWUgIiR7QkFTSF9TT1VSQ0VbMF19Iikvc2tvcGVvLWNvbW1vbi5zaCIKCnBoYXNlICJDb3B5aW5nICcke1BBUkFNU19TT1VSQ0VfSU1BR0VfVVJMfScgaW50byAnJHtQQVJBTVNfREVTVElOQVRJT05fSU1BR0VfVVJMfSciCgpzZXQgLXgKCmlmIFsgLW4gIiR7UEFSQU1TX1NPVVJDRV9JTUFHRV9VUkx9IiBdICYmIFsgLW4gIiR7UEFSQU1TX0RFU1RJTkFUSU9OX0lNQUdFX1VSTH0iIF07IHRoZW4KICAgIHNrb3BlbyBjb3B5ICIke1NLT1BFT19ERUJVR19GTEFHfSIgXAogICAgICAgIC0tc3JjLXRscy12ZXJpZnk9IiR7UEFSQU1TX1NSQ19UTFNfVkVSSUZZfSIgXAogICAgICAgIC0tZGVzdC10bHMtdmVyaWZ5PSIke1BBUkFNU19ERVNUX1RMU19WRVJJRll9IiBcCiAgICAgICAgIiR7UEFSQU1TX1NPVVJDRV9JTUFHRV9VUkx9IiBcCiAgICAgICAgIiR7UEFSQU1TX0RFU1RJTkFUSU9OX0lNQUdFX1VSTH0iCmVsc2UKICAgICMgRnVuY3Rpb24gdG8gY29weSBtdWx0aXBsZSBpbWFnZXMuCiAgICBjb3B5aW1hZ2VzKCkgewogICAgICAgIGZpbGVuYW1lPSIke1dPUktTUEFDRVNfSU1BR0VTX1VSTF9QQVRIfS91cmwudHh0IgogICAgICAgIHdoaWxlIElGUz0gcmVhZCAtciBsaW5lIHx8IFsgLW4gIiRsaW5lIiBdCiAgICAgICAgZG8KICAgICAgICAgICAgY21kPSIiCiAgICAgICAgICAgIGZvciB1cmwgaW4gJGxpbmUKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGNtZD0iJGNtZCAkdXJsIgogICAgICAgICAgICBkb25lCiAgICAgICAgICAgIHJlYWQgLXJhIFNPVVJDRSA8PDwiJHtjbWR9IgogICAgICAgICAgICBza29wZW8gY29weSAiJHtTT1VSQ0VbQF19IiAtLXNyYy10bHMtdmVyaWZ5PSIke1BBUkFNU19TUkNfVExTX1ZFUklGWX0iIC0tZGVzdC10bHMtdmVyaWZ5PSIke1BBUkFNU19ERVNUX1RMU19WRVJJRll9IgogICAgICAgICAgICBlY2hvICIkY21kIgogICAgICAgIGRvbmUgPCAiJGZpbGVuYW1lIgogICAgfQoKICAgIGNvcHlpbWFnZXMKZmkK" |base64 -d >skopeo-copy.sh + printf '%s' "IyEvdXNyL2Jpbi9lbnYgYmFzaAoKc2hvcHQgLXMgaW5oZXJpdF9lcnJleGl0CnNldCAtZXUgLW8gcGlwZWZhaWwKCnNvdXJjZSAiJChkaXJuYW1lICR7QkFTSF9TT1VSQ0VbMF19KS9jb21tb24uc2giCnNvdXJjZSAiJChkaXJuYW1lICR7QkFTSF9TT1VSQ0VbMF19KS9za29wZW8tY29tbW9uLnNoIgoKZnVuY3Rpb24gc2tvcGVvX2luc3BlY3QoKSB7CiAgICBsb2NhbCBpbWFnZT0iJDEiCiAgICBsb2NhbCB0bHNfdmVyaWZ5PSIkMiIKICAgIHNrb3BlbyBpbnNwZWN0ICR7U0tPUEVPX0RFQlVHX0ZMQUd9IFwKICAgICAgICAtLXRscy12ZXJpZnk9IiR7dGxzX3ZlcmlmeX0iIFwKICAgICAgICAtLWZvcm1hdD0ne3sgLkRpZ2VzdCB9fScgXAogICAgICAgICIke2ltYWdlfSIKfQoKcGhhc2UgIkV4dHJhY3RpbmcgJyR7UEFSQU1TX1NPVVJDRV9JTUFHRV9VUkx9JyBzb3VyY2UgaW1hZ2UgZGlnZXN0Igpzb3VyY2VfZGlnZXN0PSIkKHNrb3Blb19pbnNwZWN0ICIke1BBUkFNU19TT1VSQ0VfSU1BR0VfVVJMfSIgIiR7UEFSQU1TX1NSQ19UTFNfVkVSSUZZfSIpIgpwaGFzZSAiU291cmNlIGltYWdlIGRpZ2VzdCAnJHtzb3VyY2VfZGlnZXN0fSciCgpwaGFzZSAiRXh0cmFjdGluZyAnJHtQQVJBTVNfREVTVElOQVRJT05fSU1BR0VfVVJMfScgZGVzdGluYXRpb24gaW1hZ2UgZGlnZXN0IgpkZXN0aW5hdGlvbl9kaWdlc3Q9IiQoc2tvcGVvX2luc3BlY3QgIiR7UEFSQU1TX0RFU1RJTkFUSU9OX0lNQUdFX1VSTH0iICIke1BBUkFNU19ERVNUX1RMU19WRVJJRll9IikiCnBoYXNlICJEZXN0aW5hdGlvbiBpbWFnZSBkaWdlc3QgJyR7ZGVzdGluYXRpb25fZGlnZXN0fSciCgpwcmludGYgIiVzIiAiJHtzb3VyY2VfZGlnZXN0fSIgPiAiJHtSRVNVTFRTX1NPVVJDRV9ESUdFU1RfUEFUSH0iCnByaW50ZiAiJXMiICIke2Rlc3RpbmF0aW9uX2RpZ2VzdH0iID4gIiR7UkVTVUxUU19ERVNUSU5BVElPTl9ESUdFU1RfUEFUSH0iCg==" |base64 -d >skopeo-results.sh + chmod +x skopeo-*.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: skopeo-copy + image: registry.access.redhat.com/ubi8/skopeo:8.9 + command: + - /scripts/skopeo-copy.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts + + - name: skopeo-results + image: registry.access.redhat.com/ubi8/skopeo:8.9 + command: + - /scripts/skopeo-results.sh + volumeMounts: + - name: scripts-dir + mountPath: /scripts