OpenShift - Otomatisasi Bangun
Di OpenShift, kami memiliki beberapa metode untuk mengotomatiskan pipeline build. Untuk melakukannya, kita perlu membuat sumber daya BuildConfig untuk mendeskripsikan aliran build. Alur di BuildConfig dapat dibandingkan dengan definisi pekerjaan dalam definisi tugas Jenkins. Saat membuat aliran build, kita harus memilih strategi build.
File BuildConfig
Di OpenShift, BuildConfig adalah objek istirahat yang digunakan untuk menyambung ke API dan kemudian membuat instance baru.
kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "<Name of build config file>"
spec:
runPolicy: "Serial"
triggers:
-
type: "GitHub"
github:
secret: "<Secrete file name>"
- type: "Generic"
generic:
secret: "secret101"
-
type: "ImageChange"
source:
type: "<Source of code>"
git:
uri: "https://github.com/openshift/openshift-hello-world"
dockerfile: "FROM openshift/openshift-22-centos7\nUSER example"
strategy:
type: "Source"
sourceStrategy:
from:
kind: "ImageStreamTag"
name: "openshift-20-centos7:latest"
output:
to:
kind: "ImageStreamTag"
name: "origin-openshift-sample:latest"
postCommit:
script: "bundle exec rake test"
Di OpenShift, ada empat jenis strategi build.
- Strategi sumber-ke-gambar
- Strategi Docker
- Strategi kustom
- Strategi jalur pipa
Strategi Sumber-ke-gambar
Memungkinkan pembuatan gambar kontainer mulai dari kode sumber. Dalam aliran ini, kode sebenarnya diunduh terlebih dahulu di penampung dan kemudian dikompilasi di dalamnya. Kode yang dikompilasi akan diterapkan di dalam wadah yang sama dan gambar dibuat dari kode itu.
strategy:
type: "Source"
sourceStrategy:
from:
kind: "ImageStreamTag"
name: "builder-image:latest"
forcePull: true
Ada beberapa kebijakan strategi.
- Forcepull
- Bangunan Inkremental
- Bangunan Eksternal
Strategi Docker
Dalam aliran ini, OpenShift menggunakan Dockerfile untuk membangun image dan kemudian mengunggah gambar yang dibuat ke registri Docker.
strategy:
type: Docker
dockerStrategy:
from:
kind: "ImageStreamTag"
name: "ubuntu:latest"
Opsi file Docker dapat digunakan di banyak lokasi mulai dari jalur file, tanpa cache, dan gaya tarik.
- Dari gambar
- Jalur Dockerfile
- Tidak ada cache
- Tarik paksa
Strategi Kustom
Ini adalah salah satu dari berbagai jenis strategi build, di mana tidak ada paksaan sehingga output dari build tersebut adalah berupa gambar. Ini dapat dibandingkan dengan pekerjaan gaya bebas Jenkins. Dengan ini, kita dapat membuat Jar, rpm, dan paket lainnya.
strategy:
type: "Custom"
customStrategy:
from:
kind: "DockerImage"
name: "openshift/sti-image-builder"
Ini terdiri dari beberapa strategi membangun.
- Buka soket Docker
- Secrets
- Tarik paksa
Strategi Saluran Pipa
Strategi pipeline digunakan untuk membuat pipeline build kustom. Ini pada dasarnya digunakan untuk mengimplementasikan alur kerja di dalam pipa. Alur build ini menggunakan aliran pipeline build kustom menggunakan bahasa Groovy DSL. OpenShift akan membuat pekerjaan pipeline di Jenkins dan menjalankannya. Aliran pipa ini juga dapat digunakan di Jenkins. Dalam strategi ini, kami menggunakan Jenkinsfile dan menambahkannya dalam definisi buildconfig.
Strategy:
type: "JenkinsPipeline"
jenkinsPipelineStrategy:
jenkinsfile: "node('agent') {\nstage 'build'\nopenshiftBuild(buildConfig: 'OpenShift-build', showBuildLogs: 'true')\nstage 'deploy'\nopenshiftDeploy(deploymentConfig: 'backend')\n}"
Using build pipeline
kind: "BuildConfig"
apiVersion: "v1"
metadata:
name: "test-pipeline"
spec:
source:
type: "Git"
git:
uri: "https://github.com/openshift/openshift-hello-world"
strategy:
type: "JenkinsPipeline"
jenkinsPipelineStrategy:
jenkinsfilePath: <file path repository>