Build an os image on k8s.
This commit is contained in:
parent
d8fe7e598e
commit
c777b13c3d
|
|
@ -0,0 +1,9 @@
|
|||
FROM quay.io/centos/centos:stream9
|
||||
RUN dnf install -y 'dnf-command(copr)' && \
|
||||
dnf copr enable -y @osbuild/osbuild && \
|
||||
dnf install -y osbuild osbuild-tools osbuild-ostree make sudo
|
||||
RUN useradd -m -G wheel -s /bin/bash -u 1000 j7s && \
|
||||
bash -c 'echo "%wheel ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/container' && \
|
||||
chmod 0440 /etc/sudoers.d/container
|
||||
USER j7s
|
||||
ENTRYPOINT ["bash"]
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# A pipeline to build j7s-os images.
|
||||
# Steps:
|
||||
# Clone the j7s-os repo from gitea.
|
||||
# Call make <> in the repo.
|
||||
# Build and push a new deployment container.
|
||||
# Deply the deployment container as a service.
|
||||
---
|
||||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Pipeline
|
||||
metadata:
|
||||
name: j7s-os-pipeline
|
||||
spec:
|
||||
description: Build and deploy j7s-os images.
|
||||
params:
|
||||
- name: image-name
|
||||
type: string
|
||||
description: The name of the os image to build.
|
||||
workspaces:
|
||||
- name: shared-data
|
||||
description: Shared data.
|
||||
- name: git-credentials
|
||||
description: My ssh credentials
|
||||
tasks:
|
||||
- name: fetch-repo
|
||||
workspaces:
|
||||
- name: output
|
||||
workspace: shared-data
|
||||
- name: ssh-directory
|
||||
workspace: git-credentials
|
||||
params:
|
||||
- name: url
|
||||
value: ssh://git@git.jpace121.net:2222/jimmy/j7s-os.git
|
||||
- name: branch
|
||||
value: main
|
||||
taskRef:
|
||||
name: j7s-git-clone
|
||||
- name: call-make
|
||||
runAfter: ["fetch-repo"]
|
||||
workspaces:
|
||||
- name: source
|
||||
workspace: shared-data
|
||||
params:
|
||||
- name: image-name
|
||||
value: $(params.image-name)
|
||||
taskRef:
|
||||
name: j7s-os-image-build
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: tekton.dev/v1beta1
|
||||
kind: PipelineRun
|
||||
metadata:
|
||||
name: j7s-os-test
|
||||
spec:
|
||||
pipelineRef:
|
||||
name: j7s-os-pipeline
|
||||
workspaces:
|
||||
- name: shared-data
|
||||
volumeClaimTemplate:
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 3Gi
|
||||
- name: git-credentials
|
||||
secret:
|
||||
secretName: git-credentials
|
||||
params:
|
||||
- name: image-name
|
||||
value: cs9-qemu-minimal-ostree.x86_64.repo
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Task
|
||||
metadata:
|
||||
name: j7s-git-clone
|
||||
spec:
|
||||
workspaces:
|
||||
- name: output
|
||||
- name: ssh-directory
|
||||
params:
|
||||
- name: url
|
||||
- name: branch
|
||||
steps:
|
||||
- image: 192.168.1.128:8443/gitssh:latest
|
||||
script: |
|
||||
set -x
|
||||
cp -r $(workspaces.ssh-directory.path) ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
chmod -R 400 ~/.ssh/*
|
||||
|
||||
git clone --single-branch --branch $(params.branch) $(params.url) $(workspaces.output.path)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
apiVersion: tekton.dev/v1beta1
|
||||
kind: Task
|
||||
metadata:
|
||||
name: j7s-os-image-build
|
||||
spec:
|
||||
workspaces:
|
||||
- name: source
|
||||
params:
|
||||
- name: image-name
|
||||
steps:
|
||||
- image: 192.168.1.128:8443/j7s-image-build:latest
|
||||
securityContext:
|
||||
privileged: true
|
||||
script: |
|
||||
set -x
|
||||
sudo chown -R j7s:j7s $(workspaces.source.path)
|
||||
cd $(workspaces.source.path)
|
||||
make $(params.image-name)
|
||||
Loading…
Reference in New Issue