c24059e0fc
- Small fix on the parameter name (and comments), `BUILDER_IMAGE` and `S2I_IMAGE` were inverted. - Remove the `examples` folder and add an example inline. - Add a non-exhaustive list of s2i builder images that can be used with this task. Signed-off-by: Vincent Demeester <vdemeest@redhat.com> |
||
---|---|---|
.. | ||
Dockerfile | ||
README.md | ||
s2i.yaml |
Source-to-Image
Source-to-Image (S2I) is a toolkit and workflow for building reproducible container images from source code. S2I produces images by injecting source code into a base S2I container image and letting the container prepare that source code for execution. The base S2I container images contains the language runtime and build tools needed for building and running the source code.
Install the Task
kubectl apply -f https://raw.githubusercontent.com/tektoncd/catalog/master/s2i/s2i.yaml
Inputs
Parameters
- BUILDER_IMAGE: The location of the s2i builder image.
- PATH_CONTEXT: Source path from where s2i command need to be run (default: .).
- TLSVERIFY: Verify the TLS on the registry endpoint (for push/pull to a
non-TLS registry) (default:
true
)
Resources
- source: A
git
-typePipelineResource
specifying the location of the source to build.
Outputs
Resources
- image: An
image
-typePipelineResource
specify the image that should be built.
ServiceAccount
S2I builds an image and pushes it to the destination registry which is defined as a parameter. In order to properly authenticate to the remote container registry, it needs to have the proper credentials. The credentials can be provided through a service account. See Authentication for further details.
If you are running on OpenShift, you also need to allow the service account to run privileged containers because OpenShift does not allow containers run as privileged containers by default unless explicitly configured, due to security considerations.
Run the following in order to create a service account named
pipelines
on OpenShift and allow it to run privileged containers:
oc create serviceaccount pipeline
oc adm policy add-scc-to-user privileged -z pipeline
oc adm policy add-role-to-user edit -z pipeline
Usage
This TaskRun runs the Task to fetch a Git repo, and build and push a container image using s2i and a nodejs builder image.
apiVersion: tekton.dev/v1alpha1
kind: TaskRun
metadata:
name: s2i-nodejs-taskrun
spec:
# Use service account with git and image repo credentials
serviceAccount: pipeline
taskRef:
name: s2i
inputs:
params:
- name: BUILDER_IMAGE
value: docker.io/centos/nodejs-8-centos7
resources:
- name: source
resourceSpec:
type: git
params:
- name: url
value: https://github.com/sclorg/nodejs-ex
outputs:
resources:
- name: image
resourceSpec:
type: image
params:
- name: url
value: gcr.io/my-repo/nodejs-s2i-ex
Here is a non-exhaustive list of well maintained s2i builder image
(from sclorg
):
Note: all those images above are also available with RHEL as base
instead, just replace centos7
by rhel7
or rhel8