{"id":335,"date":"2023-08-16T15:01:01","date_gmt":"2023-08-16T15:01:01","guid":{"rendered":"https:\/\/d-mashina.net\/?p=335"},"modified":"2023-08-16T15:01:01","modified_gmt":"2023-08-16T15:01:01","slug":"gitea-in-drone-ci","status":"publish","type":"post","link":"https:\/\/d-mashina.net\/index.php\/2023\/08\/16\/gitea-in-drone-ci\/","title":{"rendered":"Gitea in Drone CI"},"content":{"rendered":"<p>Pred nekaj leti sem pri\u010del uporabljati Gitlab za build Docker imageov. Gitlab sem postavil v Docker kontejner in sem ga vsa ta leta pridno nadgrajeval. Buildane image pusham v Gitlab register in potem naprej v DockerHub, kjer jih ponudim javnosti. Te\u017eava Gitlaba je to, da je ogromen, narejen za skupine in tega ne potrebujem. Zato sem se \u017ee pred \u010dasom pri\u010del spogledovat z Gitea, ki je za moje potrebe povsem dovolj. Kon\u010dno mi je uspelo postaviti kontejner za Traefikom, ki slu\u017ei svojim namenom. Za nadaljevanje sem za CI izbral Drone.io, kjer sem uspe\u0161no kontejner povezal z Giteo.<\/p>\n<p>Torej na kratko: postavil sem Gitea, Drone Server in Drone Agenta na Docker hostu za Traefikom, ki zaklju\u010duje SSL. Uporabil sem slede\u010de:<\/p>\n<p>Gitea &#8211; (doma\u010d GIT stre\u017enik)<br \/>\nDrone Server &#8211; (stre\u017enik za web, repozitorije, secrtes, uporabnike, &#8230;)<br \/>\nDrone Agent &#8211; (worker za builde, jobe, &#8230;)<\/p>\n<p><strong>Te\u017eave<\/strong>: Drone.io in self-signed SSL certifikati za Traefik kontejnerjem (\u010depraj je SSL od LE, pridobljen ro\u010dno)<\/p>\n<p><strong>Odprava te\u017eav<\/strong>: dokler ne ugotovim, kako uredit self-signed sem promet med Drone.io in Gitea usmeril preko HTTP (ni varno ampak glede na to, da ni public in je v notranjem omre\u017eju ni nevarnosti &#8211; za public teh te\u017eav ne bi imel, saj bi uporabil Let&#8217;s Encrypt, za katerega je le to urejeno).<\/p>\n<p>To bo \u0161e kar nekaj dela &#8230;<\/p>\n<p>Yaml datoteka &#8211; tu je Gitea povezan \u0161e na Traefik, ampak lahko tudi brez tega:<\/p>\n<p style=\"padding-left: 40px;\">services:<br \/>\ngitea:<br \/>\nimage: gitea\/gitea:latest<br \/>\ncontainer_name: gitea<br \/>\nenvironment:<br \/>\n&#8211; USER_UID=UID_USERJA<br \/>\n&#8211; USER_GID=GID_USERJA<br \/>\n&#8211; SSH_DOMAIN=FQDN_stre\u017enika<br \/>\n&#8211; SSH_PORT=222<br \/>\n&#8211; SSH_LISTEN_PORT=22<br \/>\n&#8211; DOMAIN=FQDN_stre\u017enika<br \/>\n&#8211; ROOT_URL=https:\/\/FQDN_stre\u017enika<br \/>\n&#8211; APP_NAME=&#8221;GITea&#8221;<br \/>\n&#8211; RUN_MODE=prod<br \/>\n&#8211; DB_TYPE=postgres<br \/>\n&#8211; DB_HOST=gitea-db:5432<br \/>\n&#8211; DB_NAME=gitea<br \/>\n&#8211; DB_USER=postgres<br \/>\n&#8211; DB_PASSWD=postgres<br \/>\nrestart: always<br \/>\nnetworks:<br \/>\n&#8211; gitea<br \/>\n&#8211; proxy<br \/>\nvolumes:<br \/>\n&#8211; \/nfs\/docker\/gitea:\/data<br \/>\n&#8211; \/home\/git\/.ssh\/:\/data\/git\/.ssh<br \/>\n&#8211; \/etc\/timezone:\/etc\/timezone:ro<br \/>\n&#8211; \/etc\/localtime:\/etc\/localtime:ro<br \/>\nports:<br \/>\n&#8211; &#8220;3000:3000&#8221;<br \/>\n&#8211; &#8220;222:22&#8221;<\/p>\n<p style=\"padding-left: 40px;\">labels:<br \/>\n&#8211; &#8220;traefik.enable=true&#8221;<br \/>\n&#8211; ..<br \/>\n&#8211; ..<\/p>\n<p style=\"padding-left: 40px;\">gitea-db:<br \/>\nimage: postgres:alpine<br \/>\ncontainer_name: gitea-db<br \/>\nrestart: always<br \/>\nvolumes:<br \/>\n&#8211; \/nfs\/docker\/gitea-db:\/var\/lib\/postgresql\/data<br \/>\nenvironment:<br \/>\n&#8211; POSTGRES_USER=postgres<br \/>\n&#8211; POSTGRES_PASSWORD=postgres<br \/>\n&#8211; POSTGRES_DB=gitea<br \/>\nnetworks:<br \/>\n&#8211; gitea<\/p>\n<p style=\"padding-left: 40px;\">drone-server:<br \/>\nimage: drone\/drone:latest<br \/>\ncontainer_name: drone-server<br \/>\nports:<br \/>\n&#8211; 81:81<br \/>\n&#8211; 9000<br \/>\nvolumes:<br \/>\n&#8211; \/nfs\/docker\/drone:\/var\/lib\/drone\/<br \/>\nrestart: always<br \/>\ndepends_on:<br \/>\n&#8211; gitea<br \/>\nenvironment:<br \/>\n&#8211; DRONE_OPEN=true<br \/>\n&#8211; DRONE_GITEA=true<br \/>\n&#8211; DRONE_NETWORK=gitea<br \/>\n&#8211; DRONE_DEBUG=true<br \/>\n&#8211; DRONE_ADMIN=admin<br \/>\n&#8211; DRONE_USER_CREATE=username:admin,admin:true<br \/>\n&#8211; DRONE_SERVER_PORT=:81<br \/>\n&#8211; DRONE_DATABASE_DRIVER=postgres<br \/>\n&#8211; DRONE_DATABASE_DATASOURCE=postgres:\/\/postgres:postgres@gitea-db:5432\/postgres?sslmode=disable<br \/>\n&#8211; DRONE_GIT_ALWAYS_AUTH=true<br \/>\n&#8211; DRONE_RPC_SECRET=kreirajga<br \/>\n&#8211; DRONE_GITEA_CLIENT_ID=kreirajga<br \/>\n&#8211; DRONE_GITEA_SERVER=http:\/\/FQDN_stre\u017enika:3000<br \/>\n&#8211; DRONE_GITEA_CLIENT_SECRET=kreirajga<br \/>\n&#8211; DRONE_SERVER_HOST=FQDN_stre\u017enika:81<br \/>\n&#8211; DRONE_HOST=http:\/\/FQDN_stre\u017enika:81<br \/>\n&#8211; DRONE_SERVER_PROTO=http<br \/>\n&#8211; DRONE_TLS_AUTOCERT=false #- \u010de uporablja\u0161 LE daj na true<br \/>\n&#8211; DRONE_AGENTS_ENABLED=true<br \/>\nnetworks:<br \/>\n&#8211; gitea<\/p>\n<p style=\"padding-left: 40px;\">drone-agent:<br \/>\nimage: drone\/agent:latest<br \/>\ncontainer_name: drone-agent<br \/>\ncommand: agent<br \/>\nrestart: always<br \/>\ndepends_on:<br \/>\n&#8211; drone-server<br \/>\nvolumes:<br \/>\n&#8211; \/var\/run\/docker.sock:\/var\/run\/docker.sock<br \/>\n&#8211; \/root\/docker\/drone-agent:\/data<br \/>\nenvironment:<br \/>\n&#8211; DRONE_RPC_SERVER=http:\/\/FQDN_stre\u017enika:81<br \/>\n&#8211; DRONE_GITEA_CLIENT_SECRET=kreirajga<br \/>\n&#8211; DRONE_RPC_SECRET=kreirajga<br \/>\n&#8211; DRONE_RUNNER_CAPACITY=1<br \/>\n&#8211; DRONE_GITEA_CLIENT_ID=kreirajga<br \/>\n&#8211; DRONE_RUNNER_NETWORKS=gitea<br \/>\nnetworks:<br \/>\n&#8211; gitea<\/p>\n<p>Spremenljivke DRONE_GITEA_CLIENT_ID, DRONE_GITEA_CLIENT_SECRET dobimo v Gitea -&gt; Settings -&gt; Application in dodamo novo OAuth2 aplikacijo, za spremenljivko DRONE_RPC_SECRET si pa izmislimo sami.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pred nekaj leti sem pri\u010del uporabljati Gitlab za build Docker imageov. Gitlab sem postavil v Docker kontejner in sem ga vsa ta leta pridno nadgrajeval. Buildane image pusham [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111,110,10],"tags":[],"class_list":["post-335","post","type-post","status-publish","format-standard","hentry","category-cd-ci","category-git","category-linux"],"_links":{"self":[{"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/posts\/335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/comments?post=335"}],"version-history":[{"count":1,"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/posts\/335\/revisions"}],"predecessor-version":[{"id":336,"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/posts\/335\/revisions\/336"}],"wp:attachment":[{"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/media?parent=335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/categories?post=335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mashina.net\/index.php\/wp-json\/wp\/v2\/tags?post=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}