{"id":4065,"date":"2024-09-04T11:47:51","date_gmt":"2024-09-04T09:47:51","guid":{"rendered":"https:\/\/davidperezgar.com\/?p=4065"},"modified":"2024-09-04T11:47:57","modified_gmt":"2024-09-04T09:47:57","slug":"como-mantener-tus-dependencias-al-dia","status":"publish","type":"post","link":"https:\/\/davidperezgar.com\/es\/como-mantener-tus-dependencias-al-dia\/","title":{"rendered":"C\u00f3mo mantener tus dependencias al d\u00eda"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cuando programamos en PHP\/JS y utilizamos librer\u00edas como composer o npm, que son fundamentales en nuestro trabajo. Tenerlas actualizadas es fundamental por motivos de seguridad principalmente. Esto hace que nuestra programaci\u00f3n sea m\u00e1s segura y aunque dependa de terceros, tambi\u00e9n est\u00e9 actualizada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 es dependabot?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dependabot es una herramienta integrada en GitHub que ayuda a gestionar y mantener las dependencias de un proyecto de software de manera autom\u00e1tica. Se encarga de revisar regularmente los archivos de configuraci\u00f3n de dependencias, como los archivos <code>package.json<\/code> en proyectos de Node.js, composer.json para PHP, <code>pom.xml<\/code> en proyectos Java, <code>Gemfile<\/code> para Ruby, entre otros. Dependabot detecta si alguna de las dependencias est\u00e1 desactualizada o tiene vulnerabilidades de seguridad, y puede generar autom\u00e1ticamente pull requests (PRs) para actualizar esas dependencias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los Pull request nos permiten revisar el c\u00f3digo propuesto de mejora y aprobarlo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Caracter\u00edsticas principales de Dependabot:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Actualizaci\u00f3n de Dependencias<\/strong>: Dependabot revisa peri\u00f3dicamente las dependencias del proyecto y genera PRs autom\u00e1ticas con sugerencias para actualizar versiones que hayan cambiado. Esto nos permite mantener las bibliotecas y herramientas del proyecto actualizadas sin tener que hacerlo manualmente.<\/li>\n\n\n\n<li><strong>Parcheo de Vulnerabilidades de Seguridad<\/strong>: GitHub, a trav\u00e9s de su base de datos de vulnerabilidades, notifica a Dependabot cuando detecta una vulnerabilidad en alguna dependencia. Dependabot puede entonces generar una PR para actualizar esa dependencia a una versi\u00f3n segura.<\/li>\n\n\n\n<li><strong>Configuraci\u00f3n Flexible<\/strong>: Tenemos un archivo de configuraci\u00f3n de c\u00f3mo y cu\u00e1ndo se ejecuta Dependabot. Se pueden definir los intervalos de tiempo (diario, semanal, etc.), qu\u00e9 archivos debe monitorizar, y si debe crear PRs autom\u00e1ticas o simplemente notificar sobre actualizaciones.<\/li>\n\n\n\n<li><strong>Integraci\u00f3n con el flujo de trabajo de GitHub<\/strong>: Las PRs creadas por Dependabot se integran con los flujos de trabajo de CI\/CD existentes. Por ejemplo, las actualizaciones pueden ser probadas autom\u00e1ticamente mediante pruebas unitarias y otros mecanismos que ya tenga configurado el proyecto.<\/li>\n\n\n\n<li><strong>Compatibilidad con m\u00faltiples lenguajes<\/strong>: Dependabot es compatible con una amplia gama de lenguajes y gestores de dependencias, como Node.js, Python, Java, Ruby, PHP, Go, y m\u00e1s.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Flujo de trabajo t\u00edpico de Dependabot:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Dependabot escanea regularmente el archivo de dependencias del proyecto.<\/li>\n\n\n\n<li>Cuando encuentra una versi\u00f3n nueva de una dependencia (o si detecta una vulnerabilidad de seguridad), crea una PR autom\u00e1tica con la actualizaci\u00f3n correspondiente.<\/li>\n\n\n\n<li>Tenemos que revisar el PR, ver los cambios propuestos y decidir si aceptar la actualizaci\u00f3n.<\/li>\n\n\n\n<li>Si se acepta la PR, se integra al proyecto y las dependencias se actualizan.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">En resumen, <strong>Dependabot<\/strong> es una herramienta muy \u00fatil para mantener las dependencias de un proyecto actualizadas, reducir el riesgo de vulnerabilidades de seguridad, y minimizar el trabajo manual relacionado con la gesti\u00f3n de dependencias en proyectos de software.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfC\u00f3mo implementarlo?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Partiendo de que est\u00e1s desarrollando un <a href=\"https:\/\/close.technology\" target=\"_blank\" rel=\"noopener\">plugin para WordPress<\/a> o tambi\u00e9n te puede valer para PHP, te incluyo el archivo de configuraci\u00f3n que utilizo en mis repositorios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La configuraci\u00f3n de este <strong><em>dependabot<\/em><\/strong> est\u00e1 basado en el <a href=\"https:\/\/github.com\/WordPress\/plugin-check\/\" target=\"_blank\" rel=\"noopener\">Plugin Check Plugin de WordPress<\/a>, que te recomiendo bastante, y que le he a\u00f1adido un ajuste que me sirve bastante en mi flujo de trabajo. Por tanto, mi dependabot hace:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Revisa las dependencias de acciones de github, npm y composer.<\/li>\n\n\n\n<li>Lo revisa cada semana.<\/li>\n\n\n\n<li>Tiene un l\u00edmite de 10 PR.<\/li>\n\n\n\n<li>EL PR se realiza sobre la rama \"develop\" que es la que utilizo normalmente.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para ponerlo en marcha, s\u00f3lo ser\u00e1 necesario crear este archivo en la rama por defecto que tengas en GitHub, como <em>trunk<\/em>, <em>main<\/em>, o <em>master<\/em>.<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">.github\/dependabot.yml<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Con el siguiente contenido:<\/p>\n\n\n\n<div class=\"cbc-code-wrapper\"><div class=\"cbc-code-bar\"><button class=\"cbc-copy-button\">Copy<\/button><\/div><pre class=\"wp-block-code\"><code class=\"\">version: 2\nupdates:\n    - package-ecosystem: github-actions\n      directory: '\/'\n      schedule:\n          interval: weekly\n      open-pull-requests-limit: 10\n      target-branch: \"develop\"\n\n    - package-ecosystem: npm\n      directory: '\/'\n      schedule:\n          interval: weekly\n      open-pull-requests-limit: 10\n      target-branch: \"develop\"\n\n    - package-ecosystem: composer\n      directory: '\/'\n      schedule:\n          interval: weekly\n      open-pull-requests-limit: 10\n      target-branch: \"develop\"<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cuando programamos en PHP\/JS y utilizamos librer\u00edas como composer o npm, que son fundamentales en nuestro trabajo. Tenerlas actualizadas es fundamental por motivos de seguridad principalmente. Esto hace que nuestra programaci\u00f3n sea m\u00e1s segura y aunque dependa de terceros, tambi\u00e9n est\u00e9 actualizada. \u00bfQu\u00e9 es dependabot? Dependabot es una herramienta integrada en GitHub que ayuda a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":9,"footnotes":""},"categories":[550],"tags":[],"class_list":["post-4065","post","type-post","status-publish","format-standard","hentry","category-codigo"],"_links":{"self":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/comments?post=4065"}],"version-history":[{"count":1,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4065\/revisions"}],"predecessor-version":[{"id":5946,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4065\/revisions\/5946"}],"wp:attachment":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media?parent=4065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/categories?post=4065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/tags?post=4065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}