{"id":16809,"date":"2019-07-24T19:31:11","date_gmt":"2019-07-24T10:31:11","guid":{"rendered":"http:\/\/www.skyarch.net\/blog\/?p=16809"},"modified":"2019-10-17T11:02:26","modified_gmt":"2019-10-17T02:02:26","slug":"tekton-pipelines-tekton-pipeline%e3%81%ae%e3%83%91%e3%82%a4%e3%83%97%e3%83%a9%e3%82%a4%e3%83%b3%e6%a9%9f%e8%83%bd%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%88%e3%81%86","status":"publish","type":"post","link":"https:\/\/www.skyarch.net\/blog\/tekton-pipelines-tekton-pipeline%e3%81%ae%e3%83%91%e3%82%a4%e3%83%97%e3%83%a9%e3%82%a4%e3%83%b3%e6%a9%9f%e8%83%bd%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%88%e3%81%86\/","title":{"rendered":"[Tekton Pipelines] Tekton Pipeline\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u307f\u3088\u3046"},"content":{"rendered":"<p><a title=\"https:\/\/github.com\/tektoncd\/pipeline\" href=\"https:\/\/github.com\/tektoncd\/pipeline\">Tekton Pipelines<\/a>\u306f\u3001Kuernetes\u4e0a\u3067\u5b9f\u884c\u3059\u308bCI\/CD\u5f62\u5f0f\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3059\u3002Kubernetes Native\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3068\u3057\u3066\u958b\u767a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 Tekton\u306f<a title=\"https:\/\/cd.foundation\/\" href=\"https:\/\/cd.foundation\/\">The Continuous Delivery Foundation(CDF)<\/a>\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3068\u3057\u3066\u63a1\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3067\u306f\u3001Tekton Pipelines\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068Task\u306e\u5b9f\u884c\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u672c\u8a18\u4e8b\u3067\u306f\u8907\u6570\u306eTask\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u5b9f\u884c\u9806\u756a\u3092\u5236\u5fa1\u3059\u308bPipeline\u306e\u5b9f\u884c\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n<h2 id=\"%E5%AF%BE%E8%B1%A1%E8%AA%AD%E8%80%85\">\u5bfe\u8c61\u8aad\u8005<\/h2>\n<ul>\n<li>Kubernetes-native\u306aCI\/CD\u30c4\u30fc\u30eb\u3092\u63a2\u3057\u3066\u3044\u308b\u4eba<\/li>\n<li>Cloud Delivery Foundation(CDF)\u306b\u8208\u5473\u304c\u3042\u308b\u4eba<\/li>\n<li>Cloud Native\u306e\u601d\u60f3\u306b\u8208\u5473\u304c\u3042\u308b\u4eba<\/li>\n<\/ul>\n<h2 id=\"%E3%82%82%E3%81%8F%E3%81%98\">\u3082\u304f\u3058<\/h2>\n<ol>\n<li><a href=\"#1\">\u691c\u8a3c\u74b0\u5883<\/a><\/li>\n<li><a href=\"#2\">\u691c\u8a3c\u524d\u306e\u6e96\u5099<\/a><\/li>\n<li><a href=\"#3\">\u691c\u8a3c\u306e\u306a\u304c\u308c<\/a><\/li>\n<li><a href=\"#4\">PipelineResource\u306e\u5b9a\u7fa9<\/a><\/li>\n<li><a href=\"#5\">Task\u306e\u5b9a\u7fa9<\/a><\/li>\n<li><a href=\"#6\">Pipeline\u306e\u5b9a\u7fa9<\/a><\/li>\n<li><a href=\"#7\">Docker Hub\u8a8d\u8a3c\u60c5\u5831\u306e\u4f5c\u6210<\/a><\/li>\n<li><a href=\"#8\">ServiceAccount\u306e\u5b9a\u7fa9<\/a><\/li>\n<li><a href=\"#9\">PipelineRun\u306e\u5b9a\u7fa9<\/a><\/li>\n<li><a href=\"#10\">Pipeline\u306e\u5b9f\u884c<\/a><\/li>\n<li><a href=\"#11\">\u5b9f\u884c\u7d50\u679c\u306e\u78ba\u8a8d<\/a><\/li>\n<li><a href=\"#12\">\u3055\u3044\u3054\u306b<\/a><\/li>\n<\/ol>\n<h2 id=\"1\">\u691c\u8a3c\u74b0\u5883<\/h2>\n<p>GKE\u74b0\u5883\u3067\u691c\u8a3c\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u691c\u8a3c\u306b\u5229\u7528\u3057\u305fKubernetes\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304a\u3088\u3073\u30b5\u30fc\u30d0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-meta\">$<\/span><span class=\"bash\"> kubectl version --short<\/span>\nClient Version: v1.14.1\nServer Version: v1.12.8-gke.10\n<\/pre>\n<h2 id=\"2\">\u691c\u8a3c\u524d\u306e\u6e96\u5099<\/h2>\n<p>\u4ee5\u964d\u306e\u5b9f\u884c\u4f8b\u306f\u3001Kubernetes\u30af\u30e9\u30b9\u30bf\u4e0a\u306bTekton Pipelines\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u306e\u74b0\u5883\u3067\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059\u3002Kubernetes\u30af\u30e9\u30b9\u30bf\u306e\u69cb\u7bc9\u3068Tekton Pipelines\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5\u306f\u3001<a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2 id=\"3\">\u691c\u8a3c\u306e\u306a\u304c\u308c<\/h2>\n<p>\u4eca\u56de\u306e\u5b9f\u884c\u4f8b\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u51e6\u7406\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n<ol>\n<li>Git Hub\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30bd\u30fc\u30b9\u3092\u30af\u30ed\u30fc\u30f3<\/li>\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30bd\u30fc\u30b9\u3092\u542b\u3081\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9<\/li>\n<li>\u4f5c\u6210\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5<\/li>\n<li>\u4f5c\u6210\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092Kubernetes\u4e0a\u306b\u30c7\u30d7\u30ed\u30a4<\/li>\n<\/ol>\n<p>1.\uff5e3.\u306e\u51e6\u7406\u306f\u3001<a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3067\u4f5c\u6210\u3057\u305f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5229\u7528\u3057\u307e\u3059\u3002\u51e6\u7406\u306e\u8a73\u7d30\u306f<a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<h2 id=\"4\">PipelineResource\u306e\u5b9a\u7fa9<\/h2>\n<p>Git Hub\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u304a\u3088\u3073Docker Hub\u306e\u30ec\u30b8\u30b9\u30c8\u30ea\u3092\u6307\u5b9a\u3057\u305fPipelineResource\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n<blockquote><p><a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3068\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u3092\u5229\u7528\u3057\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u5185\u5bb9\u306e\u8aac\u660e\u306f\u3001<a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p><\/blockquote>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># gitResource.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">tekton.dev\/v1alpha1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">PipelineResource<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">easydoggie-git<\/span>\n<span class=\"hljs-attr\">  namespace:<\/span> <span class=\"hljs-string\">default<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  type:<\/span> <span class=\"hljs-string\">git<\/span>\n<span class=\"hljs-attr\">  params:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">url<\/span>\n<span class=\"hljs-attr\">      value:<\/span> <span class=\"hljs-attr\">https:\/\/github.com\/sumomo-99\/TektonSample.git<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">revision<\/span>\n<span class=\"hljs-attr\">      value:<\/span> <span class=\"hljs-string\">master<\/span>\n<\/pre>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># imageResource.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">tekton.dev\/v1alpha1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">PipelineResource<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">easydoggie-test-image<\/span>\n<span class=\"hljs-attr\">  namespace:<\/span> <span class=\"hljs-string\">default<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  type:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">  params:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">url<\/span>\n<span class=\"hljs-attr\">      value:<\/span> <span class=\"hljs-string\">easydoggie\/testapp<\/span>\n<\/pre>\n<h2 id=\"5\">Task\u306e\u5b9a\u7fa9<\/h2>\n<p><a title=\"xxx\" href=\"#3\">\u51e6\u7406\u306e\u6d41\u308c<\/a>\u306b\u5f93\u3063\u3066Task\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n<p>1.\uff5e3.\u306e\u51e6\u7406\u306f\u3001<a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3067\u4f5c\u6210\u3057\u305fTask\u3092\u5229\u7528\u3057\u307e\u3059\u3002<\/p>\n<blockquote>\n<ol>\n<li>Git Hub\u304b\u3089\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30bd\u30fc\u30b9\u3092\u30af\u30ed\u30fc\u30f3<\/li>\n<li>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30bd\u30fc\u30b9\u3092\u542b\u3081\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9<\/li>\n<li>\u4f5c\u6210\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5<\/li>\n<\/ol>\n<\/blockquote>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># task.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">tekton.dev\/v1alpha1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">Task<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">test-doker-image<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  inputs:<\/span>\n<span class=\"hljs-attr\">    resources:<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">app<\/span>\n<span class=\"hljs-attr\">        type:<\/span> <span class=\"hljs-string\">git<\/span>\n<span class=\"hljs-attr\">    params:<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">dockerfile<\/span>\n<span class=\"hljs-attr\">        default:<\/span> <span class=\"hljs-string\">\/workspace\/app\/Dockerfile<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">context<\/span>\n<span class=\"hljs-attr\">        default:<\/span> <span class=\"hljs-string\">\/workspace\/app<\/span>\n<span class=\"hljs-attr\">  outputs:<\/span>\n<span class=\"hljs-attr\">    resources:<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">builtImage<\/span>\n<span class=\"hljs-attr\">        type:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">  steps:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">build-and-push<\/span>\n<span class=\"hljs-attr\">      image:<\/span> <span class=\"hljs-string\">gcr.io\/kaniko-project\/executor<\/span>\n<span class=\"hljs-attr\">      command:<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">\/kaniko\/executor<\/span>\n<span class=\"hljs-attr\">      args:<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-bullet\">--dockerfile=${inputs.params.dockerfile}<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-bullet\">--destination=${outputs.resources.builtImage.url}<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-bullet\">--context=${inputs.params.context}<\/span>\n<\/pre>\n<p>\u4eca\u56de\u306f\u8ffd\u52a0\u30674.\u306eTask\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<blockquote>\n<ol start=\"4\">\n<li>\u4f5c\u6210\u3057\u305fDocker\u30a4\u30e1\u30fc\u30b8\u3092Kubernetes\u4e0a\u306b\u30c7\u30d7\u30ed\u30a4<\/li>\n<\/ol>\n<\/blockquote>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># task1.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">tekton.dev\/v1alpha1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">Task<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">test-deploy<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  inputs:<\/span>\n<span class=\"hljs-attr\">    resources:<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">source<\/span>\n<span class=\"hljs-attr\">        type:<\/span> <span class=\"hljs-string\">git<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">        type:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">    params:<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">manifestPath<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">yqArg<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">yamlPathToImage<\/span>\n<span class=\"hljs-attr\">  steps:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">replace-image<\/span>\n<span class=\"hljs-attr\">      image:<\/span> <span class=\"hljs-string\">mikefarah\/yq<\/span>\n<span class=\"hljs-attr\">      command:<\/span> <span class=\"hljs-string\">[\"yq\"]<\/span>\n<span class=\"hljs-attr\">      args:<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">w<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-bullet\">-i<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">${inputs.params.yqArg}<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">${inputs.params.manifestPath}<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">${inputs.params.yamlPathToImage}<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">${inputs.resources.image.url}<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">run-kubectl<\/span>\n<span class=\"hljs-attr\">      image:<\/span> <span class=\"hljs-string\">bitnami\/kubectl<\/span>\n<span class=\"hljs-attr\">      command:<\/span> <span class=\"hljs-string\">[\"kubectl\"]<\/span>\n<span class=\"hljs-attr\">      args:<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">apply<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-bullet\">-f<\/span>\n<span class=\"hljs-bullet\">        -<\/span> <span class=\"hljs-string\">${inputs.params.manifestPath}<\/span>\n<\/pre>\n<p>\u3053\u306eTask\u3067\u306f\u3001\u306f\u3058\u3081\u306b\u30d3\u30eb\u30c9\u3057\u305f\u30a4\u30e1\u30fc\u30b8\u306e\u30bf\u30b0\u3067\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u66f8\u304d\u63db\u3048\u3092\u884c\u3044\u307e\u3059\u3002\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb(yaml)\u306e\u66f8\u304d\u63db\u3048\u306b\u3001Yaml\u306e\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30d1\u30fc\u30b9\u30c4\u30fc\u30eb\u3067\u3042\u308b<code>yq<\/code>\u3092\u5229\u7528\u3057\u307e\u3059\u3002<code>-i<\/code>\u30aa\u30d7\u30b7\u30e7\u30f3(in-place)\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u76f4\u63a5\u306b\u66f8\u304d\u63db\u3048\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<br \/>\n\u6b21\u306b\u3001\u66f8\u304d\u63db\u3048\u3092\u884c\u3063\u305f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092<code>kubectl apply<\/code>\u30b3\u30de\u30f3\u30c9\u3067\u9069\u7528\u3059\u308b\u3053\u3068\u3067\u3001Kubernetes\u3078\u306e\u30c7\u30d7\u30ed\u30a4\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<h2 id=\"6\">Pipeline\u306e\u5b9a\u7fa9<\/h2>\n<p>Task\u3092\u307e\u3068\u3081\u3066\u9806\u756a\u3092\u5236\u5fa1\u3059\u308bPipeline\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># pipeline.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">tekton.dev\/v1alpha1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">Pipeline<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">test-pipeline<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  resources:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">gitSource<\/span>\n<span class=\"hljs-attr\">      type:<\/span> <span class=\"hljs-string\">git<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">dockerImage<\/span>\n<span class=\"hljs-attr\">      type:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">  tasks:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">build-image<\/span>\n<span class=\"hljs-attr\">      taskRef:<\/span>\n<span class=\"hljs-attr\">        name:<\/span> <span class=\"hljs-string\">test-doker-image<\/span>\n<span class=\"hljs-attr\">      resources:<\/span>\n<span class=\"hljs-attr\">        inputs:<\/span>\n<span class=\"hljs-attr\">          - name:<\/span> <span class=\"hljs-string\">app<\/span>\n<span class=\"hljs-attr\">            resource:<\/span> <span class=\"hljs-string\">gitSource<\/span>\n<span class=\"hljs-attr\">        outputs:<\/span>\n<span class=\"hljs-attr\">          - name:<\/span> <span class=\"hljs-string\">builtImage<\/span>\n<span class=\"hljs-attr\">            resource:<\/span> <span class=\"hljs-string\">dockerImage<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">deploy-kubernetes<\/span>\n<span class=\"hljs-attr\">      taskRef:<\/span>\n<span class=\"hljs-attr\">        name:<\/span> <span class=\"hljs-string\">test-deploy<\/span>\n<span class=\"hljs-attr\">      resources:<\/span>\n<span class=\"hljs-attr\">        inputs:<\/span>\n<span class=\"hljs-attr\">          - name:<\/span> <span class=\"hljs-string\">source<\/span>\n<span class=\"hljs-attr\">            resource:<\/span> <span class=\"hljs-string\">gitSource<\/span>\n<span class=\"hljs-attr\">          - name:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">            resource:<\/span> <span class=\"hljs-string\">dockerImage<\/span>\n<span class=\"hljs-attr\">            from:<\/span>\n<span class=\"hljs-bullet\">              -<\/span> <span class=\"hljs-string\">build-image<\/span>\n<span class=\"hljs-attr\">      params:<\/span>\n<span class=\"hljs-attr\">        - name:<\/span> <span class=\"hljs-string\">manifestPath<\/span>\n<span class=\"hljs-attr\">          value:<\/span> <span class=\"hljs-string\">\/workspace\/source\/deployment.yaml<\/span>\n<span class=\"hljs-attr\">        - name:<\/span> <span class=\"hljs-string\">yqArg<\/span>\n<span class=\"hljs-attr\">          value:<\/span> <span class=\"hljs-string\">\"-d0\"<\/span>\n<span class=\"hljs-attr\">        - name:<\/span> <span class=\"hljs-string\">yamlPathToImage<\/span>\n<span class=\"hljs-attr\">          value:<\/span> <span class=\"hljs-string\">\"spec.template.spec.containers[0].image\"<\/span>\n<\/pre>\n<p>\u5f8c\u7d9aTask\u306eInput\u306b\u5148\u884cTask\u306eOutput\u3092\u6e21\u3057\u305f\u3044\u5834\u5408\u306f\u3001<code>from<\/code>\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u53d7\u3051\u6e21\u3057\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4e0a\u8a18\u306ePipeline\u306e\u4f8b\u3067\u306f\u3001\u5148\u884cTask\u3067\u4f5c\u6210\u3057\u305f\u30d3\u30eb\u30c9\u30a4\u30e1\u30fc\u30b8\u306e\u30ea\u30bd\u30fc\u30b9\u60c5\u5831\u3092\u5f8c\u7d9aTask\u306eInput\u306b\u5f15\u304d\u6e21\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-attr\">  - name:<\/span> <span class=\"hljs-string\">image<\/span>\n<span class=\"hljs-attr\">    resource:<\/span> <span class=\"hljs-string\">dockerImage<\/span>\n<span class=\"hljs-attr\">    from:<\/span> <span class=\"hljs-comment\" style=\"color: #cc99ff\"># from\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u5148\u884cTask\u306eOutput\u3092\u6e21\u3059<\/span>\n<span class=\"hljs-bullet\">      -<\/span> <span class=\"hljs-string\">build-image<\/span>\n<\/pre>\n<p>\u5148\u884cTask\u306eOutput\u3068\u306e\u7d10\u3065\u3051\u304c\u5fc5\u8981\u306a\u3044\u5834\u5408\u306f\u3001<code>from<\/code>\u306e\u4ee3\u308f\u308a\u306b<code>runAfter<\/code>\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u5229\u7528\u3057\u307e\u3059\u3002\u307e\u305fTask\u306e\u5b9f\u884c\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306e\u518d\u5b9f\u884c\u56de\u6570\u3092<code>retries<\/code>\u30d5\u30a3\u30fc\u30eb\u30c9\u3067\u6307\u5b9a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>\u30d5\u30a3\u30fc\u30eb\u30c9\u540d<\/th>\n<th>\u8aac\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>from<\/td>\n<td>\u5148\u884cTask\u306eOutput\u3092Input\u306b\u5229\u7528\u3059\u308b\u5f8c\u7d9aTask\u306b\u8a2d\u5b9a\u3059\u308b<\/td>\n<\/tr>\n<tr>\n<td>runAfter<\/td>\n<td>\u5148\u884cTask\u306eOutput\u3068\u306e\u7d10\u3065\u3051\u304c\u5fc5\u8981\u306a\u3044\u5f8c\u7d9aTask\u306b\u8a2d\u5b9a\u3059\u308b<\/td>\n<\/tr>\n<tr>\n<td>retries<\/td>\n<td>Task\u306e\u5b9f\u884c\u306b\u5931\u6557\u3057\u305f\u3068\u304d\u306e\u518d\u5b9f\u884c\u56de\u6570<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><code>params<\/code>\u306b\u306fTask\u306b\u5f15\u304d\u6e21\u3059\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u7528\u610f\u3057\u305f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u914d\u7f6e\u5834\u6240\u3084image\u306e\u6307\u5b9a\u4f4d\u7f6e\u306b\u5f93\u3063\u3066\u3001\u8a2d\u5b9a\u3092\u66f8\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-attr\">  params:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">manifestPath<\/span> <span class=\"hljs-comment\" style=\"color: #cc99ff\">#Git\u304b\u3089clone\u3055\u308c\u305f\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9<\/span>\n<span class=\"hljs-attr\">      value:<\/span> <span class=\"hljs-string\">\/workspace\/source\/deployment.yaml<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">yqArg<\/span> <span class=\"hljs-comment\" style=\"color: #cc99ff\">#yq\u30b3\u30de\u30f3\u30c9\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3002\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306b\u8907\u6570\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u66f8\u304d\u63db\u3048\u308b\u30ea\u30bd\u30fc\u30b9\u306e\u4f4d\u7f6e\u3092\u5909\u3048\u3066\u304f\u3060\u3055\u3044\u30020\u304c\u57fa\u6e96\u3067\u30c7\u30d5\u30a9\u30eb\u30c8\u306f0\u3067\u3059\u3002<\/span>\n<span class=\"hljs-attr\">      value:<\/span> <span class=\"hljs-string\">\"-d0\"<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">yamlPathToImage<\/span> <span class=\"hljs-comment\" style=\"color: #cc99ff\">#\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb(yaml)\u306e\u30b3\u30f3\u30c6\u30ca\u30a4\u30e1\u30fc\u30b8\u306e\u30d1\u30b9<\/span>\n<span class=\"hljs-attr\">      value:<\/span> <span class=\"hljs-string\">\"spec.template.spec.containers[0].image\"<\/span>\n<\/pre>\n<p>\u4eca\u56de\u306e\u5b9f\u884c\u4f8b\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u7528\u610f\u3057\u307e\u3057\u305f\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-comment\">#deployment.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">apps\/v1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">Deployment<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">testapp-deployment<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  replicas:<\/span> <span class=\"hljs-number\">1\n  selector:\n    matchLabels:\n      app: easydoggie<\/span>\n<span class=\"hljs-attr\">  template:<\/span>\n<span class=\"hljs-attr\">    metadata:<\/span>\n<span class=\"hljs-attr\">      labels:<\/span>\n<span class=\"hljs-attr\">        app:<\/span> <span class=\"hljs-string\">easydoggie<\/span>\n<span class=\"hljs-attr\">    spec:<\/span>\n<span class=\"hljs-attr\">      containers:<\/span>\n<span class=\"hljs-attr\">      - name:<\/span> <span class=\"hljs-string\">testapp<\/span>\n<span class=\"hljs-attr\">        image:<\/span> <span class=\"hljs-string\">easydoggie\/testapp:latest<\/span>\n<span class=\"hljs-attr\">        ports:<\/span>\n<span class=\"hljs-attr\">        - containerPort:<\/span> <span class=\"hljs-number\">80<\/span>\n<\/pre>\n<p>Task\u304c\u5b9f\u884c\u3055\u308c\u308b\u3053\u3068\u3067\u3001<code>easydoggie\/testapp:latest<\/code>\u306e\u30a4\u30e1\u30fc\u30b8\u540d\u306e\u66f8\u304d\u63db\u3048\u304c\u884c\u308f\u308c\u307e\u3059\u3002<\/p>\n<h2 id=\"7\">Docker Hub\u8a8d\u8a3c\u60c5\u5831\u306e\u4f5c\u6210<\/h2>\n<p>Docker Hub\u3078\u30a4\u30e1\u30fc\u30b8\u3092\u30d7\u30c3\u30b7\u30e5\u3059\u308b\u305f\u3081\u306b\u3001Docker Hub\u306e\u8a8d\u8a3c\u60c5\u5831\u3092Kubernetes\u306eSecret\u306b\u5b9a\u7fa9\u3057\u307e\u3059\u3002<\/p>\n<blockquote><p><a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3068\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u3092\u5229\u7528\u3057\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u5185\u5bb9\u306e\u8aac\u660e\u306f\u3001<a title=\"xxx\" href=\"http:\/\/www.skyarch.net\/blog\/?p=16774\">\u524d\u56de\u306e\u8a18\u4e8b<\/a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p><\/blockquote>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># secret.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">v1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">Secret<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">basic-user-pass<\/span>\n<span class=\"hljs-attr\">  annotations:<\/span>\n    <span class=\"hljs-string\">tekton.dev\/docker-0:<\/span> <span class=\"hljs-attr\">https:\/\/index.docker.io\/v1\/<\/span>\n<span class=\"hljs-attr\">type:<\/span> <span class=\"hljs-string\">kubernetes.io\/basic-auth<\/span>\n<span class=\"hljs-attr\">stringData:<\/span>\n<span class=\"hljs-attr\">  username:<\/span> <span class=\"hljs-string\">&lt;username&gt;<\/span>\n<span class=\"hljs-attr\">  password:<\/span> <span class=\"hljs-string\">&lt;password&gt;<\/span>\n<\/pre>\n<h2 id=\"8\">ServiceAccount\u306e\u5b9a\u7fa9<\/h2>\n<p>\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u5b9f\u884c\u3059\u308b\u30a2\u30ab\u30a6\u30f3\u30c8(build-bot)\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u5148\u307b\u3069\u4f5c\u6210\u3057\u305fSecrets\u3092\u7d10\u3065\u3051\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># serviceaccount.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">v1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">ServiceAccount<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">build-bot<\/span>\n<span class=\"hljs-attr\">secrets:<\/span>\n<span class=\"hljs-attr\">  - name:<\/span> <span class=\"hljs-string\">basic-user-pass<\/span>\n<\/pre>\n<p>\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3067Kunernetes\u306b\u30c7\u30d7\u30ed\u30a4\u3092\u5b9f\u884c\u3059\u308b\u306e\u3067\u3001<code>cluster-admin<\/code>\u306e\u6a29\u9650\u3092\u4e0e\u3048\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># buildAccount.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">rbac.authorization.k8s.io\/v1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">ClusterRoleBinding<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">build-cluster-admin<\/span>\n<span class=\"hljs-attr\">roleRef:<\/span>\n<span class=\"hljs-attr\">  apiGroup:<\/span> <span class=\"hljs-string\">rbac.authorization.k8s.io<\/span>\n<span class=\"hljs-attr\">  kind:<\/span> <span class=\"hljs-string\">ClusterRole<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">cluster-admin<\/span>\n<span class=\"hljs-attr\">subjects:<\/span>\n<span class=\"hljs-attr\">- kind:<\/span> <span class=\"hljs-string\">ServiceAccount<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">build-bot<\/span>\n<span class=\"hljs-attr\">  namespace:<\/span> <span class=\"hljs-string\">default<\/span>\n<\/pre>\n<h2 id=\"9\">PipelineRun\u306e\u5b9a\u7fa9<\/h2>\n<p>PipelineRun\u3067<code>PipelineResources<\/code>\u3068\u3057\u3066\u5b9a\u7fa9\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u3092Pipeline\u306eInput\u3068Output\u306b\u7d10\u3065\u3051\u307e\u3059\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-comment\"># pipelinerun.yaml<\/span>\n<span class=\"hljs-attr\">apiVersion:<\/span> <span class=\"hljs-string\">tekton.dev\/v1alpha1<\/span>\n<span class=\"hljs-attr\">kind:<\/span> <span class=\"hljs-string\">PipelineRun<\/span>\n<span class=\"hljs-attr\">metadata:<\/span>\n<span class=\"hljs-attr\">  name:<\/span> <span class=\"hljs-string\">test-pipelinerun<\/span>\n<span class=\"hljs-attr\">spec:<\/span>\n<span class=\"hljs-attr\">  serviceAccount:<\/span> <span class=\"hljs-string\">build-bot<\/span>\n<span class=\"hljs-attr\">  pipelineRef:<\/span>\n<span class=\"hljs-attr\">    name:<\/span> <span class=\"hljs-string\">test-pipeline<\/span>\n<span class=\"hljs-attr\">  resources:<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">gitSource<\/span>\n<span class=\"hljs-attr\">      resourceRef:<\/span>\n<span class=\"hljs-attr\">        name:<\/span> <span class=\"hljs-string\">easydoggie-git<\/span>\n<span class=\"hljs-attr\">    - name:<\/span> <span class=\"hljs-string\">dockerImage<\/span>\n<span class=\"hljs-attr\">      resourceRef:<\/span>\n<span class=\"hljs-attr\">        name:<\/span> <span class=\"hljs-string\">easydoggie-test-image<\/span>\n<\/pre>\n<h2 id=\"10\">Pipeline\u306e\u5b9f\u884c<\/h2>\n<p>\u4ee5\u4e0a\u3067\u3059\u3079\u3066\u306eKubernetes\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002\u30de\u30cb\u30d5\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092<code>kubectl apply<\/code>\u30b3\u30de\u30f3\u30c9\u3067\u9069\u7528\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-meta\">$<\/span><span class=\"bash\"> kubectl apply -f gitResource.yaml -f imageResource.yaml -f task.yaml -f task1.yaml -f secret.yaml -f serviceaccount.yaml -f buildAccount.yaml -f pipeline.yaml -f pipelinerun.yaml<\/span>\npipelineresource.tekton.dev\/easydoggie-git created\npipelineresource.tekton.dev\/easydoggie-test-image created\ntask.tekton.dev\/test-doker-image created\ntask.tekton.dev\/test-deploy created\nsecret\/basic-user-pass created\nserviceaccount\/build-bot created\npipeline.tekton.dev\/test-pipeline created\npipelinerun.tekton.dev\/test-pipelinerun created\n<\/pre>\n<h2 id=\"11\">\u5b9f\u884c\u7d50\u679c\u306e\u78ba\u8a8d<\/h2>\n<pre class=\"hljs\"><span class=\"hljs-meta\">$<\/span><span class=\"bash\"> kubectl get pods<\/span>\nNAME                                                  READY   STATUS      RESTARTS   AGE\ntest-pipelinerun-build-image-9d5r5-pod-84ab40         0\/3     Completed   0          43s\ntest-pipelinerun-deploy-kubernetes-q2jfj-pod-4456e7   0\/3     Completed   0          16s\ntestapp-deployment-cdcf6bdb8-5b2s9                    1\/1     Running     0          10s\n<\/pre>\n<p>\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306b\u8a2d\u5b9a\u3057\u305f2\u3064\u306e\u30bf\u30b9\u30af\u304c\u5b9f\u884c\u3055\u308c\u3001\u30c7\u30d7\u30ed\u30a4\u3055\u308c\u305f\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u307e\u3057\u305f\uff01<br \/>\n<code>PipelineRun<\/code>\u306e\u5b9f\u884c\u7d50\u679c\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3067\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u203bPipelineRun\u306e\u540d\u524d\u306f(\u4e0b\u8a18\u306e\u4f8b\u3067\u306f<code>test-pipelinesrun<\/code>)\u3001\u78ba\u8a8d\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u306b\u5408\u308f\u305b\u3066\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"hljs\"><span class=\"hljs-meta\">$<\/span><span class=\"bash\"> kubectl get pipelineruns\/<span class=\"hljs-built_in\">test<\/span>-pipelinerun -o yaml<\/span>\n<\/pre>\n<p>\u30bf\u30b9\u30af\u3054\u3068\u306e\u5b9f\u884c\u6642\u9593\u3084\u30a8\u30e9\u30fc\u306e\u767a\u751f\u500b\u6240\u3092\u8abf\u3079\u308b\u5834\u5408\u306a\u3069\u306b\u5229\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<h2 id=\"12\">\u3055\u3044\u3054\u306b<\/h2>\n<p>\u672c\u8a18\u4e8b\u3067\u306fKubernetes-native\u306aCI\/CD\u30c4\u30fc\u30eb\u3067\u3042\u308b\u3001Tekton Pipelines\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u5b9f\u884c\u4f8b\u3092\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002\u524d\u56de\u7d39\u4ecb\u3057\u305fTask\u306e\u5b9f\u884c\u4f8b\u3092\u7406\u89e3\u3067\u304d\u308c\u3070\u3001\u4eca\u56de\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u4ed5\u7d44\u307f\u306f\u7c21\u5358\u306b\u7406\u89e3\u3067\u304d\u305f\u306e\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\u3002<br \/>\n\u524d\u56de\u304a\u3088\u3073\u4eca\u56de\u306e\u8a18\u4e8b\u306fCLI\u3067\u30bf\u30b9\u30af\u3001\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u5b9f\u884c\u3068\u78ba\u8a8d\u3092\u884c\u3044\u307e\u3057\u305f\u3002\u6b21\u56de\u306fTekton\u306eWeb\u30d9\u30fc\u30b9UI\u3067\u3042\u308b\u3001Tekton Dashboard\u306e\u7d39\u4ecb\u3092\u884c\u3046\u4e88\u5b9a\u3067\u3059\u3002<\/p>\n<div id=\"attachment_17346\" style=\"width: 508px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.skyfantasylab.work\/\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17346\" class=\"wp-image-17346 size-full\" src=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512.png\" alt=\"\u30b9\u30ab\u30a4\u30a2\u30fc\u30c1 \u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\u7814\u7a76\u5ba4\" width=\"498\" height=\"498\" srcset=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512.png 498w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512-150x150.png 150w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/09\/SFL-logo-white-512-300x300.png 300w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/a><p id=\"caption-attachment-17346\" class=\"wp-caption-text\">\u30b9\u30ab\u30a4\u30a2\u30fc\u30c1 \u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\u7814\u7a76\u5ba4<\/p><\/div>\n<a href=\"https:\/\/github.com\/easydoggie\/EasyDoggie\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-16635\" src=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/logo4-1024x487.png\" alt=\"EasyDoggie\" width=\"728\" height=\"346\" srcset=\"https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/logo4-1024x487.png 1024w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/logo4-300x143.png 300w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/logo4-768x365.png 768w, https:\/\/www.skyarch.net\/blog\/wp-content\/uploads\/2019\/06\/logo4-728x346.png 728w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/a>\n","protected":false},"excerpt":{"rendered":"<p>Tekton Pipelines\u306f\u3001Kuernetes\u4e0a\u3067\u5b9f\u884c\u3059\u308bCI\/CD\u5f62\u5f0f\u306e\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u30c4\u30fc\u30eb\u3067\u3059\u3002Kubernetes Native\u306a\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u3068\u3057\u3066\u958b\u767a\u3055\u308c\u3066\u3044\u307e\u3059\u3002 Tekton\u306fThe Continuo&#8230;<\/p>\n","protected":false},"author":1,"featured_media":16810,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"ja","_original_post":"16809","footnotes":""},"categories":[518,83,190],"tags":[731,384,394,723],"class_list":{"0":"post-16809","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ci-cd","8":"category-devops","9":"category-gcp","10":"tag-cdf","11":"tag-ci-cd","12":"tag-kubernetes","13":"tag-tekton","14":"ja"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/16809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/comments?post=16809"}],"version-history":[{"count":7,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/16809\/revisions"}],"predecessor-version":[{"id":17355,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/posts\/16809\/revisions\/17355"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/media\/16810"}],"wp:attachment":[{"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/media?parent=16809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/categories?post=16809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyarch.net\/blog\/wp-json\/wp\/v2\/tags?post=16809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}