OpenShift 4 - DevSecOps Workshop (3) - 从PipelineResource、Task到一个简单的Pipeline
《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证
《OpenShift 4 - DevSecOps Workshop 系列视频 》
文章目录
- 创建Git类型的PipelineResource
- 了解 Maven 镜像
- 探索 Task 和 TaskRun
- 用 Pipeline 串起 Task、PipelineResource
本节创建一个只有一个任务的的Pipeline,完成位于Gitea上的应用代码编译。
创建Git类型的PipelineResource
- 可以用以下任意一种方法创建Git类型的PipelineResource对象,其中Git Repo地址为“${GIT_REPO}”,而“dso4”是该Repo的当前分支名。
第一种方法:
$ oc apply -f - << EOF
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:name: tasks-source-codenamespace: ${CICD}
spec:params:- name: urlvalue: ${GIT_REPO}- name: revisionvalue: dso4type: git
EOF
第二种方法:其中“https://<GITEA-SERVER>/user1/openshift-tasks.git/user1/openshift-tasks.git”是“${GIT_REPO}”的地址。
$ tkn resource create -n ${CICD}
? Enter a name for a pipeline resource : tasks-source-code
? Select a resource type to create : [Use arrows to move, type to filter]cloudEventcluster
> gitimagepullRequeststorage
? Select a resource type to create : git
? Enter a value for url : https://<GITEA-SERVER>/user1/openshift-tasks.git
? Enter a value for revision : dso4
- 查看创建的PipelineResource。
$ tkn resource list -n ${CICD} | grep tasks-source-code
tasks-source-code git url: https://gitea-server-devsecops.apps.cluster-39c8.39c8.sandbox139.opentlc.com/user1/openshift-tasks.git```
了解 Maven 镜像
- 执行命令,运行一个Maven镜像。
$ oc project ${CICD}
$ oc run mvn-builder --image=gcr.io/cloud-builders/mvn --rm -it --command -- /bin/bash
If you don't see a command prompt, try pressing enter.
bash-4.4$
- 查看镜像中Maven的版本。
bash-4.4$ mvn -version
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/share/maven
Java version: 16.0.2, vendor: Oracle Corporation, runtime: /usr/java/openjdk-16
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-305.10.2.el8_4.x86_64", arch: "amd64", family: "unix"
- 从Gitea中下载应用代码。注意:“https://<GIT_URL>”是Gitea Server的访问地址。
bash-4.4$ curl https://<GIT_URL>/user1/openshift-tasks/archive/dso4.tar.gz | tar xz -C /tmp
bash-4.4$ ls /tmp/openshift-tasks
README.md app-template.yaml configuration pipeline-bc.yaml pom.xml src
- 编译打包应用。注意,如果发现“maven-compiler-plugin:3.8.0”错误,这是由于Maven版本导致的。
bash-4.4$ mvn clean package -Dmaven.repo.local=/tmp/.m2 -f /tmp/openshift-tasks/pom.xml
。。。
[INFO] 18 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:55 min
[INFO] Finished at: 2020-07-20T23:15:57Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project jboss-tasks-rs: Compilation failure: Compilation failure:
[ERROR] /tmp/openshift-tasks/src/main/java/org/jboss/as/quickstarts/tasksrs/model/User.java:[31,33] package javax.xml.bind.annotation does not exist
。。。
- 退出Maven容器。
bash-4.4$ exit
- 下载运行“mvn:3.5.0-jdk-8”的容器,然后重新编译打包应用。
$ oc run mvn-builder --image=gcr.io/cloud-builders/mvn:3.5.0-jdk-8 --rm -it --command -- /bin/bash
If you don't see a command prompt, try pressing enter.
bash-4.4$ curl https://<GIT_URL>/user1/openshift-tasks/archive/dso4.tar.gz | tar xz -C /tmp
bash-4.4$ mvn clean package -Dmaven.repo.local=/tmp/.m2 -f /tmp/openshift-tasks/pom.xml
。。。
[INFO] Scanning for projects...
Downloading: https://maven.repository.redhat.com/ga/org/jboss/bom/jboss-eap-javaee7/7.0.1.GA/jboss-eap-javaee7-7.0.1.GA.pom
... snipped for brevity ...
[INFO] Building war: /tmp/openshift-tasks/target/openshift-tasks.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS------------------------------------------------------------------------
- 退出Maven容器。
bash-4.4$ exit
探索 Task 和 TaskRun
- 创建一个新的Task对象,Task将执行参数包括“clean package”的mvn命令。
$ oc create -f - << EOF
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:name: simple-mavennamespace: ${CICD}
spec:resources:inputs:- name: sourcetype: gitsteps:- name: mvn-goalsscript: |/usr/bin/mvn clean package -f \$(resources.inputs.source.path)/pom.xmlimage: gcr.io/cloud-builders/mvn:3.5.0-jdk-8
EOF
- 查看新创建Task的信息。
$ tkn task describe simple-maven -n ${CICD}
Name: simple-maven
Namespace: user1-cicd
OpenShift 4 - DevSecOps Workshop (3) - 从PipelineResource、Task到一个简单的Pipeline相关推荐
- OpenShift 4 - DevSecOps Workshop (5) - 为Pipeline增加测试Task
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (4) - 为 Task 增加参数和Workspace
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (15) - 利用OpenShift GitOps向多个目标部署应用
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (14) - 镜像合规扫描
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (13) - 将镜像推送到Quay,并进行漏洞扫描
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (11) - 通过Trigger启动Pipeline运行
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (10) - 向Stage环境部署应用镜像
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (9) - 向Dev环境部署应用镜像
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
- OpenShift 4 - DevSecOps Workshop (7) - 为Pipeline增加向Nexus制品库推送任务
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 <OpenShift 4 - DevSecOps Workshop 系列视频 & ...
最新文章
- 实现无线AP无缝漫游
- VirtualBox虚拟机中Ubuntu11.10安装Additions出现 读写错误的解决办法
- [SDOI2011]消耗战
- android gravity参数,Gravity - [ Android中文手册 ] - 在线原生手册 - php中文网
- leetcode 95 python
- 解决浏览器无法登陆pki问题,删除浏览器缓存
- ajax control toolkit vs2013,VS2008 .net framework 3.5使用Ajax Control Toolkit完整解决方案
- Java中volatile关键字实现原理
- HUAWEI HiAI 3.0 分布式,瑜伽、开车还能这么玩......
- JavaWeb 学习路线
- Google退出内地市场
- win7怎么用Win10计算机,win7升至win10的电脑,使用半年多后出现各种系统问题,重装还是升级一周年版?...
- 第7章第31节:四图排版:四张图片两两一组并行排列 [PowerPoint精美幻灯片实战教程]
- Matlab R2017b 自动驾驶工具箱学习笔记(2)_Tutorials_Visual Perception Using Monocular Camera
- git命令 统计某成员/全部人员的代码提交量
- spring实战学习(二)spEL表达式
- 怎么将翼型导入catia_catia与cfd的翼型设计
- 业务流程图怎么画?3步+8张案例,5分钟教你快速上手!
- 永磁同步电机矢量控制到无速度传感器控制学习教程(PMSM)(一)
- 后疫情时代,数据科学赋能旅游行业服务质量提升
热门文章
- 什么舱位_把“订舱位”说成book warehouse position,外企不会要你
- 路由包含#号导致的nginx_分布式实战:Nginx缓存之OpenResty部署
- kafka实现异步发送_深入理解Kafka的发送流程
- android 实现 效果代码,Android实现雷达View效果的示例代码
- 网站模型|可以帮助你以一种美丽、独特的方式展示你的网站设计。
- 设计界新人不用再苦找资源网站啦!一流导航神器收藏起来!
- php遍历文件制作删除,使用PHP遍历文件目录与清除目录中文件的实现详解
- 波特率与频率的换算公式?_高中物理公式总结表
- php sqlite视图,SQLite 视图
- 链式二叉树的C语言代码