1"use strict";(self.webpackChunkpixelpoint_website=self.webpackChunkpixelpoint_website||[]).push([[2876],{8786:function(e,t,n){n.r(t),n.d(t,{Head:function(){return v},default:function(){return w}});var o=n(8453),a=n(6540),r=n(4754);const s={annotations:r.hk,Code:r.Cy},i={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:void 0,showCopyButton:!0,themeName:"dark-plus"};function c(e){const t=Object.assign({p:"p",ul:"ul",li:"li",h2:"h2",a:"a",span:"span"},(0,o.RP)(),e.components);return s||p("CH",!1),s.Code||p("CH.Code",!0),a.createElement(a.Fragment,null,a.createElement("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="dark-plus"] { --ch-t-colorScheme: var(--ch-0);--ch-t-foreground: var(--shiki-token-embed);--ch-t-background: var(--shiki-background-editor);--ch-t-editor-background: var(--shiki-background-editor);--ch-t-editor-foreground: var(--shiki-token-embed);--ch-t-tab-activeBackground: var(--shiki-background-editor);--ch-t-tab-inactiveBackground: var(--shiki-background-editor);--ch-t-tab-border: var(--shiki-menu-background);--ch-t-tab-activeBorder: var(--shiki-background-editor);--ch-t-editorGroupHeader-tabsBackground: var(--shiki-background-header);--ch-t-input-foreground: var(--shiki-token-embed);--ch-t-sideBar-foreground: var(--shiki-token-embed); }'}}),"\n",a.createElement(t.p,null,"If you are building your side project or startup and want to avoid spending too much money on popular commercial solutions like Travic CI (which costs $69/month), you can use your own self-hosted Drone CI on your laptop, AWS free tier, or any other servers."),"\n",a.createElement(t.p,null,"Drone CI features:"),"\n",a.createElement(t.ul,null,"\n",a.createElement(t.li,null,"Multi-platform support"),"\n",a.createElement(t.li,null,"Yaml-based configuration"),"\n",a.createElement(t.li,null,"Multi pipelines and complex build step logic support"),"\n",a.createElement(t.li,null,"Docker based"),"\n",a.createElement(t.li,null,"Free"),"\n",a.createElement(t.li,null,"Github, Gitlab, Bitbucket support"),"\n"),"\n",a.createElement(t.p,null,"We will run Drone CI on a single host and using Github, but you could use a multimachine configuration or Kubernetes, and different VCS providers. Find more information here."),"\n",a.createElement(t.h2,{id:"get-the-host"},a.createElement(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#get-the-host"},a.createElement(t.span,{className:"icon icon-link"})),"Get the Host"),"\n",a.createElement(t.p,null,"For the purposes of this test, we use an AWS EC2 free tier instance, but you can use whatever you want. To use our approach, follow these steps:"),"\n",a.createElement(t.ul,null,"\n",a.createElement(t.li,null,"Go to the AWS page;"),"\n",a.createElement(t.li,null,"Add your SSH pub key to Key Pairs section on the EC2 page (to access your â instance via SSH);"),"\n",a.createElement(t.li,null,"Create a new Ubuntu 18.04 free tier instance on AWS;"),"\n",a.createElement(t.li,null,"Allow 80 and 443 ports for the Security Group of your instance; if itâs a fresh account, use launch-wizard-1, or find it in description of your EC2 instance."),"\n"),"\n",a.createElement(t.h2,{id:"install-docker"},a.createElement(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install-docker"},a.createElement(t.span,{className:"icon icon-link"})),"Install Docker"),"\n",a.createElement(t.p,null,"You only need Docker to start using Drone. Just follow the instructions here. Check that you installed everything right by running âdocker -vâ."),"\n",a.createElement(s.Code,{codeConfig:i,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"root@ip-172-31-23-205:~# ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"docker -v",props:{style:{color:"var(--shiki-token-string)"}}}]},{tokens:[{content:"Docker ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"version 18.09.3, build ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"774a1f4",props:{style:{color:"var(--shiki-token-constant)"}}}]}],lang:"bash"},annotations:[]}]}),"\n",a.createElement(t.h2,{id:"create-an-oauth-application"},a.createElement(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#create-an-oauth-application"},a.createElement(t.span,{className:"icon icon-link"})),"Create an OAuth Application"),"\n",a.createElement(t.p,null,"We use Github for examples, but you can also run it on Gitlab, Bitbucket, Gitea, and Gogs. More information here."),"\n",a.createElement(t.ul,null,"\n",a.createElement(t.li,null,"Go to ",a.createElement(t.a,{href:"https://github.com/settings/developers"},"github.com/settings/developers")," and sign in to your personal account, if you have one, or set up an account if you donât."),"\n",a.createElement(t.li,null,"Click ânew oAuth appâ."),"\n",a.createElement(t.li,null,"Fill out the form, as per the example below."),"\n"),"\n",a.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<figure class="gatsby-resp-image-figure" style="">\n <span\n class="gatsby-resp-image-wrapper"\n style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 696px; "\n >
1\n <span\n class="gatsby-resp-image-background-image"\n style="padding-bottom: 85.0574712643678%; position: relative; bottom: 0; left: 0; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAABYlAAAWJQFJUiTwAAAB8klEQVR42pVUy27UQBD0f3LjwIEzJ6Qc+CN+gRNCIMQtBMJm1/Z6bY/fHr/mVXRPNlFC2NXaUqnbHrvcPVU9gVIKbdui7yWGYYSUA8WB7nt/31Hsux7TNOGSK5BS4vrnDbbbHQ5phl0YISRsNnfY7kLc/PqN2z8bpLR2EeGyLMiyHEVZoihK6EUdlxycc48vcv4c+C+CmQi4kjDaE2JIalMbC6WNB68/YFHaQ9PzkxUqeqGqG9R1i6ZpfV5Wtc872jtjDKy1L3CScBxH7PcJYkIhBNyRQGvtgSdtX7iHyguxC2NPmhxS5KLwbRnjHtt8CnWuZUP71ZBt2B4ttViUNQSJ07Sdz6d58UVa657hdMvTiIjE4MqS5IAo3oO3gZXklt3allkUrqRqOgKLQiaXk1eblV1NyHs1jEwweJL7nCdEoqYf8PM1pN7YJZmaheAojpFH7R7zOkL+aHO39aZmtW9p5EJSvCE/smDWWe9FY7SPmvNzPtTKoMgq5AeqLK+QJoLmViCME4iygmhpNJsFKaOe0ZATGOwIPjxetmwVxFwhm2iW5xo5xUFNcEdzL9piVgTtfNR+JNmPCnxS/TvjwefiB15/fY83367w9vsHvPryDh+jT6g7QC4aa69g0jPyoYAYqL2hRCYFEfEBgbMGPkX4F4RwKdyp2nzEAAAAAElFTkSuQmCC\'); background-size: cover; display: block;"\n ></span>\n <picture>\n <source\n srcset="/static/38ddca31518b6ffab192dbdb2785e1b9/09400/drone1.webp 174w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/3266f/drone1.webp 348w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/657d2/drone1.webp 696w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/e644e/drone1.webp 1044w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/43c9e/drone1.webp 1362w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/webp"\n />\n <source\n srcset="/static/38ddca31518b6ffab192dbdb2785e1b9/88093/drone1.png 174w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/91d18/drone1.png 348w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/871fd/drone1.png 696w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/4e07d/drone1.png 1044w,\n/static/38ddca31518b6ffab192dbdb2785e1b9/a2c9b/drone1.png 1362w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/png"\n />\n <img\n class="gatsby-resp-image-image"\n src="/static/38ddca31518b6ffab192dbdb2785e1b9/871fd/drone1.png"\n alt="OAuth Application"\n title=""\n loading="lazy"\n decoding="async"\n style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"\n />\n </picture>\n </span>\n <figcaption class="gatsby-resp-image-figcaption">OAuth Application</figcaption>\n </figure>'}}),"\n",a.createElement(t.p,null,"You can use the IP of your server or assign a domain to it to correctly fill this form. If you do this, you can use the Client ID and Client Secret in the next steps."),"\n",a.createElement(t.h2,{id:"install-drone"},a.createElement(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install-drone"},a.createElement(t.span,{className:"icon icon-link"})),"Install Drone"),"\n",a.createElement(t.p,null,"This is very simple, just use the following:"),"\n",a.createElement(s.Code,{codeConfig:i,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"docker ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"pull drone/drone:",props:{style:{color:"var(--shiki-token-string)"}}},{content:"1",props:{style:{color:"var(--shiki-token-constant)"}}}]}],lang:"bash"},annotations:[]}]}),"\n",a.createElement(t.p,null,"Followed by:"),"\n",a.createElement(s.Code,{codeConfig:i,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"--volume",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"/var/run/docker.sock:/var/run/docker.sock ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --volume",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"/var/lib/drone:/data ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_GITHUB_SERVER=https://github.com ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_GITHUB_CLIENT_ID=",props:{style:{color:"var(--shiki-token-string)"}}},{content:"652d1he1a62b6336bf0 ",props:{style:{color:"var(--shiki-token-constant)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_GITHUB_CLIENT_SECRET=c8990176a4bfywe55ekj8c3cf6d0ffccb8e3a213e ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_RUNNER_CAPACITY=",props:{style:{color:"var(--shiki-token-string)"}}},{content:"2 ",props:{style:{color:"var(--shiki-token-constant)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_SERVER_HOST=drone1.pixelpoint.io ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_SERVER_PROTO=https ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_TLS_AUTOCERT=",props:{style:{color:"var(--shiki-token-string)"}}},{content:"true ",props:{style:{color:"var(--shiki-token-operator)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_USER_FILTER=lnikell ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --env",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"DRONE_USER_CREATE=username:lnikell,admin:",props:{style:{color:"var(--shiki-token-string)"}}},{content:"true ",props:{style:{color:"var(--shiki-token-operator)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --publish",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"80:",props:{style:{color:"var(--shiki-token-string)"}}},{content:"80 ",props:{style:{color:"var(--shiki-token-constant)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --publish",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"443:",props:{style:{color:"var(--shiki-token-string)"}}},{content:"443 ",props:{style:{color:"var(--shiki-token-constant)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --restart",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"always ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --detach",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"true ",props:{style:{color:"var(--shiki-token-operator)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" --name",props:{style:{color:"var(--shiki-color-text)"}}},{content:"=",props:{style:{color:"var(--shiki-token-keyword)"}}},{content:"drone ",props:{style:{color:"var(--shiki-token-string)"}}},{content:"\\",props:{style:{color:"#d7ba7d"}}}]},{tokens:[{content:" drone/drone:1",props:{style:{color:"var(--shiki-token-embed)"}}}]}],lang:"bash"},annotations:[]}]}),"\n",a.createElement(t.p,null,"Using this configuration, Drone generates SSL certificates with Letâs Encrypt, which then lets us use https for accessing the Drone UI. Your user account will have admin privileges (DRONE_USER_CREATE), which you should lose to lock access to the server for anyone else(DRONE_USER_FILTER). You can find explanations of other variables here."),"\n",a.createElement(t.p,null,"Your instance should now be up and running, simply log in and use it!"),"\n",a.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<figure class="gatsby-resp-image-figure" style="">\n <span\n class="gatsby-resp-image-wrapper"\n style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 696px; "\n >
1\n <span\n class="gatsby-resp-image-background-image"\n style="padding-bottom: 75.86206896551725%; position: relative; bottom: 0; left: 0; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAABgklEQVR42p2TzUrDQBSF80K6EkFEUMFuFKQI9gmsaBcq6Bv4jG4KFUqjLdo2TeY3mZnjnUyaVhFMHfhIFnfunHPPTNS5fcbOaQ9bJ1dEt+bg4gHHnSccXT7ikNhv32Pv/K5mu3Vd1263utg96+G0fYMofv/ES3+IwXCMt8kM8Xha8zYhxoER1f2Gr+u/xugPRojjD0TGOOi8gDEW1rqaTVZBe1Vu4LdFXGjM5hmSlGGWhO8iYzDWNsI6i1QUmGcFlC4QSZWDcQkhNaHoX5TfdbV/IbUBVwbaNxQyR5JxpEyACxVONra5QoLJAimvFHplvmHGCFKX0zxtVdgEVzVcUEO9sqwqy7pq6P5vmVOTaRVKsmClbWsq2w3wtSGU/HsoXKoyDKVzOOc2olaYL0NJQyhpFhI2GypczlDpHw29unC3ms/PEVwaLIRZhZJ5y0KWgRSFKdkkFEF2mazvIb2UhIVQqtfiD/DPqQlmGQpbCyVlEkwE/GD9IteNACG0n6MtQ/kCNTpvr/rkrzcAAAAASUVORK5CYII=\'); background-size: cover; display: block;"\n ></span>\n <picture>\n <source\n srcset="/static/e4f9d58203b0f79bec3c4bf65908bab3/09400/drone2.webp 174w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/3266f/drone2.webp 348w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/657d2/drone2.webp 696w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/e644e/drone2.webp 1044w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/8daba/drone2.webp 1392w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/7394c/drone2.webp 2022w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/webp"\n />\n <source\n srcset="/static/e4f9d58203b0f79bec3c4bf65908bab3/88093/drone2.png 174w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/91d18/drone2.png 348w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/871fd/drone2.png 696w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/4e07d/drone2.png 1044w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/aeb15/drone2.png 1392w,\n/static/e4f9d58203b0f79bec3c4bf65908bab3/3ce64/drone2.png 2022w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/png"\n />\n <img\n class="gatsby-resp-image-image"\n src="/static/e4f9d58203b0f79bec3c4bf65908bab3/871fd/drone2.png"\n alt="Instances"\n title=""\n loading="lazy"\n decoding="async"\n style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"\n />\n </picture>\n </span>\n <figcaption class="gatsby-resp-image-figcaption">Instances</figcaption>\n </figure>'}}),"\n",a.createElement(t.h2,{id:"define-your-pipeline"},a.createElement(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#define-your-pipeline"},a.createElement(t.span,{className:"icon icon-link"})),"Define Your Pipeline"),"\n",a.createElement(t.p,null,"Once you have your Drone CI instance ready, itâs time to activate the repository and create your pipeline. First, find the repository using the search bar and activate it."),"\n",a.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<figure class="gatsby-resp-image-figure" style="">\n <span\n class="gatsby-resp-image-wrapper"\n style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 696px; "\n >
1\n <span\n class="gatsby-resp-image-background-image"\n style="padding-bottom: 75.86206896551725%; position: relative; bottom: 0; left: 0; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAABb0lEQVR42tWTuU7DQBCG/UyQBhoERYQCEmk4pMADQBQoQCi8ASXwJhyihAeACgkkBChRyOUcxvH6XMf+2V3HSWyZhIKGkT57djXz76zHI+X2TzG3VsBsZhep1XxAJo+lrWMs75wgvV1EOlfE4uYRFtYPh6RW8ixnTzDDmM8eILtRgFSXFbyWOyhVu3gv1/DyVkG5KqPRUiLU5e5Uao02JMt20VYIFFWH2tPhOC4c2gd1p+ElImnERKnSROlTBq+Wrw3TgWmNMDixvWQoJJtVZNkUtsAFMSzhi0oHUBowvpcE15Eou15ovo+I8bXn+egQD20G9+Mx48YPjQjGLcz9aHl4rv0cN1UwFLKpj7snDTcPKm4fVdwz37C9SMzvBAfRxOrj/ErG2WVTvC+uZSh6P/HzDAXjDYjj+7yiEZOaI5rCWz0J3Qx+GY7wJ8QKQf74S/6BoKoZ+GIzTHQTPRIQTsukxB4xxJhqLI9rCJ+Y+AYSKWhvH4NrsAAAAABJRU5ErkJggg==\'); background-size: cover; display: block;"\n ></span>\n <picture>\n <source\n srcset="/static/2113f198cb6994d2f9417e6b02152ce4/09400/drone3.webp 174w,\n/static/2113f198cb6994d2f9417e6b02152ce4/3266f/drone3.webp 348w,\n/static/2113f198cb6994d2f9417e6b02152ce4/657d2/drone3.webp 696w,\n/static/2113f198cb6994d2f9417e6b02152ce4/e644e/drone3.webp 1044w,\n/static/2113f198cb6994d2f9417e6b02152ce4/8daba/drone3.webp 1392w,\n/static/2113f198cb6994d2f9417e6b02152ce4/7ca41/drone3.webp 2020w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/webp"\n />\n <source\n srcset="/static/2113f198cb6994d2f9417e6b02152ce4/88093/drone3.png 174w,\n/static/2113f198cb6994d2f9417e6b02152ce4/91d18/drone3.png 348w,\n/static/2113f198cb6994d2f9417e6b02152ce4/871fd/drone3.png 696w,\n/static/2113f198cb6994d2f9417e6b02152ce4/4e07d/drone3.png 1044w,\n/static/2113f198cb6994d2f9417e6b02152ce4/aeb15/drone3.png 1392w,\n/static/2113f198cb6994d2f9417e6b02152ce4/636bd/drone3.png 2020w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/png"\n />\n <img\n class="gatsby-resp-image-image"\n src="/static/2113f198cb6994d2f9417e6b02152ce4/871fd/drone3.png"\n alt="Pipeline"\n title=""\n loading="lazy"\n decoding="async"\n style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"\n />\n </picture>\n </span>\n <figcaption class="gatsby-resp-image-figcaption">Pipeline</figcaption>\n </figure>'}}),"\n",a.createElement(t.p,null,"On the settings page, you can change your project visibility settings, add secrets(sensitive information required for build steps) or add a cron job."),"\n",a.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<figure class="gatsby-resp-image-figure" style="">\n <span\n class="gatsby-resp-image-wrapper"\n style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 696px; "\n >
1\n <span\n class="gatsby-resp-image-background-image"\n style="padding-bottom: 75.86206896551725%; position: relative; bottom: 0; left: 0; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAABoklEQVR42qWT2S4EQRSG+4EsN24kLhBLwoWIxDwBggsk5g28hwfxDlxIhGSs02Ysbejpqequ9XdOaRMSw6CSr6vqdPVfZ+uosrGHkbl1DE6tYHh2LTA0s4axpR1MVqqYWN7FODG2uI3Rha0ufGZwejUwQIzMb2J+cR1RvfGEk/MH1K4fcHZex/HpJWpXDcTNBHEj6c43t4/fUmfie0RKWyQvAmkm0Sasc3DOEyjnEo9P+C9ge8QilzdNXBDxXYLHVoqOLCBz9Qc0Il4IUUCTp1IqtF46KJQJe0WzKtcf973ICxIU5E2aCQrLBb89oY2FIYKNBu9tuf5uaG04h+SBYXUVxPimrCPDJUrrkL+0LcL7/gTZXfpQKR2Mxlqw1+Quha4D/Y4gyPmSeRGwFFUjkaUgkIk85IUH2/iyvkLmg5wvLr2gSrGNw+e8ee4FGta6YOtLkMN+P8shtimH7oePewrywztDHtquIPehLyv+a0GRGxzWMjRbb1XkduGqc1H+JJikCtX9GAdH6VuunC9/Jf9rOH2RpP5qPafBK0OJ/w/cMa+JC2/sS1/zUQAAAABJRU5ErkJggg==\'); background-size: cover; display: block;"\n ></span>\n <picture>\n <source\n srcset="/static/8fe68c238a0542e6b4ef38a82cc5dcca/09400/drone4.webp 174w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/3266f/drone4.webp 348w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/657d2/drone4.webp 696w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/e644e/drone4.webp 1044w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/8daba/drone4.webp 1392w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/7ca41/drone4.webp 2020w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/webp"\n />\n <source\n srcset="/static/8fe68c238a0542e6b4ef38a82cc5dcca/88093/drone4.png 174w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/91d18/drone4.png 348w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/871fd/drone4.png 696w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/4e07d/drone4.png 1044w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/aeb15/drone4.png 1392w,\n/static/8fe68c238a0542e6b4ef38a82cc5dcca/636bd/drone4.png 2020w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/png"\n />\n <img\n class="gatsby-resp-image-image"\n src="/static/8fe68c238a0542e6b4ef38a82cc5dcca/871fd/drone4.png"\n alt="Settings"\n title=""\n loading="lazy"\n decoding="async"\n style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"\n />\n </picture>\n </span>\n <figcaption class="gatsby-resp-image-figcaption">Settings</figcaption>\n </figure>'}}),"\n",a.createElement(t.p,null,"Defining build steps and pipelines in Drone is a simple process. Just add to your repository .drone.yml file and use yaml syntax to describe the steps. Hereâs a simple example:"),"\n",a.createElement(s.Code,{codeConfig:i,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"kind: ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"pipeline",props:{style:{color:"var(--shiki-token-string)"}}}]},{tokens:[{content:"name: ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"defaultsteps:",props:{style:{color:"var(--shiki-token-string)"}}}]},{tokens:[{content:"- ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"name: frontend",props:{style:{color:"var(--shiki-token-string)"}}}]},{tokens:[{content:" image: ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"node",props:{style:{color:"var(--shiki-token-string)"}}}]},{tokens:[{content:" commands:",props:{style:{color:"var(--shiki-token-embed)"}}}]},{tokens:[{content:" - ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"npm ci",props:{style:{color:"var(--shiki-token-string)"}}}]},{tokens:[{content:" - ",props:{style:{color:"var(--shiki-token-embed)"}}},{content:"npm run test:unit",props:{style:{color:"var(--shiki-token-string)"}}}]}],lang:"bash"},annotations:[]}]}),"\n",a.createElement(t.p,null,"The example above is also available ",a.createElement(t.a,{href:"https://github.com/lnikell/hello-world/tree/master"},"here"),"\nNow, when you push to the repository, it will trigger a new build on Drone CI."),"\n",a.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<figure class="gatsby-resp-image-figure" style="">\n <span\n class="gatsby-resp-image-wrapper"\n style="position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 696px; "\n >
1\n <span\n class="gatsby-resp-image-background-image"\n style="padding-bottom: 73.5632183908046%; position: relative; bottom: 0; left: 0; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAABYlAAAWJQFJUiTwAAACkUlEQVR42pWTXUhTYRjHB91G9EVFkVqWuDRNQtLyY1NLJaNUtvxY6vxIQYgsMYqiICKILruo6CLICLoLNO1C0G76sgsvu4o+UOd23Dk73zub/573PZupFMzBb8+799357f88Z8fR1H8PZZ6rcHsH4T4/uFwrm4dwrvs26nvu8Frnv4Xaths43XETVc3XUE7XuOi7ScoIr/86HJKsgRESVQQEFcGwitmgguCiDFFSEKGztYRpn52JEZWvJarMIUoqHIYZg2XFsSgq+P5rAb/nBei0p5sWDDMKM2qtIEZ7FkLhCARR5hKB1qpm8jOGQzeiMAhR1TAXDCNAqJoO3TCh6QYUzaDPq1G0lfsmh3kYtpB+VdBkBEMCQosSfs6JkBQTS0tI6RWLx9cICUlns1So/RiiiRG8HnmPpy9H8ezVGJ4Mj+Lxi5G/DNs8ev4GoxOf+Ei4UKM307DwQwsjKEewFLdjzQZCKKjtw5bcemw93MDr5px6uxKbnGf5ekNGNTx9dxGLxWlEZjKhhQC1LERk6HqU36S5gICSxgE4K7qQd+oinO5OZCc4UNqO9OJW7D9xAdvzG9Fx5cFqoZ5IyWbJNpkwEBJR0nAZ2S4/ciq7uYjJGUyYUewjqY+nbxv4hzBJUjhPd7uUJSTRoYpuniatqBV7j7UgPVnXK2QJWaL86l6e1G7Vx2WMjPUKXfR45Vb1IPdkD6XsQmZidmlFLZx9x33YlteAdpqhlYqwqmUI+TW9KKzrx5GaPp42s6SN2rc5WNqBnQVedA4+TEG4YM8wi1rNKvdjd2ETdhR4sOuod5k9tLfReQatl+7/v+XkkyMrOiY/zGB8chrvpr7i7eQXjK1hfGoaIxMf8XnmG7+G/bH/APa4oGLTFD8qAAAAAElFTkSuQmCC\'); background-size: cover; display: block;"\n ></span>\n <picture>\n <source\n srcset="/static/61df491143b0b3f585d6542e2131509e/09400/drone5.webp 174w,\n/static/61df491143b0b3f585d6542e2131509e/3266f/drone5.webp 348w,\n/static/61df491143b0b3f585d6542e2131509e/657d2/drone5.webp 696w,\n/static/61df491143b0b3f585d6542e2131509e/e644e/drone5.webp 1044w,\n/static/61df491143b0b3f585d6542e2131509e/8daba/drone5.webp 1392w,\n/static/61df491143b0b3f585d6542e2131509e/83a93/drone5.webp 2016w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/webp"\n />\n <source\n srcset="/static/61df491143b0b3f585d6542e2131509e/88093/drone5.png 174w,\n/static/61df491143b0b3f585d6542e2131509e/91d18/drone5.png 348w,\n/static/61df491143b0b3f585d6542e2131509e/871fd/drone5.png 696w,\n/static/61df491143b0b3f585d6542e2131509e/4e07d/drone5.png 1044w,\n/static/61df491143b0b3f585d6542e2131509e/aeb15/drone5.png 1392w,\n/static/61df491143b0b3f585d6542e2131509e/29ed2/drone5.png 2016w"\n sizes="(max-width: 696px) 100vw, 696px"\n type="image/png"\n />\n <img\n class="gatsby-resp-image-image"\n src="/static/61df491143b0b3f585d6542e2131509e/871fd/drone5.png"\n alt="Drone CI"\n title=""\n loading="lazy"\n decoding="async"\n style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;"\n />\n </picture>\n </span>\n <figcaption class="gatsby-resp-image-figcaption">Drone CI</figcaption>\n </figure>'}}),"\n",a.createElement(t.p,null,"But you can do much more, depending of the complexity of your project. Here are few typical things that this process can be used for:"),"\n",a.createElement(t.ul,null,"\n",a.createElement(t.li,null,"Sending Slack notifications"),"\n",a.createElement(t.li,null,"Deploying to Kubernetes"),"\n",a.createElement(t.li,null,"Pushing images to a Docker registry"),"\n",a.createElement(t.li,null,"Running database or other service instances required for tests"),"\n",a.createElement(t.li,null,"Running multiple pipelines and using multiplatforms"),"\n"),"\n",a.createElement(t.p,null,"Drone is an everyday helper which greatly improves the stability, flexibility and ease when our team runs tests and deploys code. For more information about Drone CI, visit ",a.createElement(t.a,{href:"https://drone.io/"},"drone.io/")," and check out our story about how did we make Drone 1.0 better."))}var l=function(e){void 0===e&&(e={});const{wrapper:t}=Object.assign({},(0,o.RP)(),e.components);return t?a.createElement(t,e,a.createElement(c,e)):c(e)};function p(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var d=n(2532),b=n(1021),g=n(545),u=n(9072),h=n(3669),m=n(9063),f=n(352),k=n(84);const y=e=>{let{data:{mdx:{author:t,frontmatter:n,fields:{slug:o}},allMdx:{nodes:r}},location:s,pageContext:{videoCovers:i},children:c}=e;return a.createElement(m.A,{headerTheme:"black",headerShowThemeButton:!0},a.createElement("article",{className:"safe-paddings pt-32 sm:pt-24"},a.createElement("div",{className:"container"},a.createElement("div",{className:"relative mx-auto max-w-[696px] xl:mx-0 xl:flex xl:max-w-none xl:justify-center xl:space-x-20 lg:space-x-8 md:block md:space-x-0"},a.createElement("div",{className:"xl:max-w-[696px] lg:max-w-[626px] md:max-w-none"},a.createElement(g.A,Object.assign({},n,{slug:o})),a.createElement(b.A,{content:c,videoCovers:i})),a.createElement(u.A,{author:t,readMorePosts:r,socialShareUrl:s.href})))),a.createElement(h.A,{withTopMargin:!0}))};function w(e){return a.createElement(y,e,a.createElement(l,e))}const v=e=>{let{data:{mdx:{frontmatter:{title:t,summary:n,ogImage:o}}}}=e;const r=(0,d.d)(o);return a.createElement(f.A,k.A.blogPost({title:t,description:n,ogImage:r}))}}}]); 2//# sourceMappingURL=component---src-templates-blog-post-jsx-content-file-path-content-posts-2019-04-12-getting-started-with-open-source-drone-ci-index-md-2fa5a41438c33d54eff9.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.