{"id":10591,"date":"2024-09-24T10:30:20","date_gmt":"2024-09-24T08:30:20","guid":{"rendered":"https:\/\/wata.es\/?p=10591"},"modified":"2026-02-03T15:20:17","modified_gmt":"2026-02-03T14:20:17","slug":"como-gestionar-secretos-en-bitbucket-2","status":"publish","type":"post","link":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/","title":{"rendered":"C\u00f3mo gestionar secretos en Bitbucket"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Los datos sensibles, como contrase\u00f1as, tokens de API y credenciales de bases de datos, son fundamentales para el desarrollo y las pruebas de proyectos, pero nunca deber\u00edan guardarse en texto plano dentro del repositorio. En esta entrada, explicaremos c\u00f3mo en WATA Factory manejamos estos secretos usando las herramientas integradas de Bitbucket: variables de repositorio y variables de despliegue.<br><\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Para utilizar cualquiera de estas soluciones, solo necesitas permisos de escritura. Sin embargo, para configurar cualquier tipo de variable, es necesario tener permisos de administrador. Si necesitas m\u00e1s informaci\u00f3n t\u00e9cnica, puedes consultar <a href=\"https:\/\/support.atlassian.com\/bitbucket-cloud\/docs\/variables-and-secrets\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">este art\u00edculo.<\/a>  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cypress es uno de los frameworks de pruebas automatizadas que usamos habitualmente en WATA Factory, as\u00ed que usaremos un proyecto de Cypress como ejemplo, aunque este m\u00e9todo se puede aplicar a cualquier tecnolog\u00eda.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este proyecto, tenemos una referencia a un archivo credentials.ts dentro de cypress.config.ts. Si queremos ejecutar nuestras pruebas automatizadas en el pipeline, necesitar\u00edamos tener el archivo de credenciales en el repositorio, de lo contrario, el pipeline fallar\u00e1. Sabemos que esta no es una buena pr\u00e1ctica, as\u00ed que \u00bfc\u00f3mo lo solucionamos?  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde entran en juego las variables de repositorio. Con esta funcionalidad nativa de Bitbucket, podemos referenciar variables definidas en nuestros pipelines y usarlas cuando lo necesitemos. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n tiene solo cuatro pasos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crear la variable en Bitbucket.<\/li>\n\n\n\n<li>Crear un archivo temporal credentials.ts.<br><\/li>\n\n\n\n<li>Copiar el contenido de la variable en este archivo temporal.<\/li>\n\n\n\n<li>\u00a1LISTO! Nuestro proyecto ya tiene el archivo necesario con todos los secretos. <\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Variables de repositorio:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que nuestro archivo credentials.ts tiene la siguiente estructura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export const USERS = {\n    admin: {\n      username: 'admin',\n      password: 'adminPassword',\n    },\n    regularuser: {\n      username: 'justAnUser',\n      password: 'regularPassword',\n    },\n  };\n   \nexport const DB_CREDENTIALS = {\n    host: 'your-server.com',\n    user: 'dbUser',\n    password: 'anotherPassword',\n    database: 'my_sample_db',\n    port: 1234,\n  };\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y que nuestro archivo cypress.config.ts necesita importarlo para utilizar esas credenciales:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { DB_CREDENTIALS } from '.\/cypress\/properties\/credentials';\n\n\/\/my DB connection\nconst connections: Record&lt;string, any&gt; = {\n  atDashboard: {\n    host: DB_CREDENTIALS.host,\n    user: DB_CREDENTIALS.user,\n    password: DB_CREDENTIALS.password,\n    database: DB_CREDENTIALS.database,\n    port: DB_CREDENTIALS.port,\n  }\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las variables pueden contener incluso un archivo JSON completo si es necesario. Por lo tanto, copiamos el contenido de nuestro archivo credentials.ts, y nos dirigimos a \u00abConfiguraci\u00f3n del repositorio &gt; Variables de repositorio\u00bb en Bitbucket.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-1.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"193\" height=\"432\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-1.png\" alt=\"Men\u00fa de navegaci\u00f3n del repositorio Bitbucket que muestra opciones como C\u00f3digo fuente, Commits, Ramas y Solicitudes de extracci\u00f3n\" class=\"wp-image-10499\" style=\"width:162px;height:auto\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-1.png 193w, https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-1-134x300.png 134w\" sizes=\"auto, (max-width: 193px) 100vw, 193px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-1.png\" data-fancybox=\"wpcp-wp-img-10501\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-1-134x300.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-full is-resized\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-2.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"468\" height=\"321\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-2.png\" alt=\"P\u00e1gina de configuraci\u00f3n de variables de repositorio que muestra dos variables con sus valores\" class=\"wp-image-10502\" style=\"width:535px;height:auto\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-2.png 468w, https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-2-300x206.png 300w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-2.png\" data-fancybox=\"wpcp-wp-img-10504\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/Picture-2-300x206.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Solo necesitamos asignar un nombre a la variable, pegar el contenido del archivo y hacer clic en Agregar. Si prefieres que estas credenciales est\u00e9n cifradas y no se muestren en los registros de compilaci\u00f3n, puedes marcar la opci\u00f3n Seguro, pero ten en cuenta que ya no podr\u00e1s ver ni editar su contenido, solo podr\u00e1s asignar un nuevo valor o eliminar la variable. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez configurada la variable, solo debemos utilizar el s\u00edmbolo &#8216;$&#8217; para llamarla y redirigir la salida de echo usando el comando &#8216;&gt;&#8217; dentro de nuestro pipeline. En la ra\u00edz de tu proyecto, debe haber un archivo bitbucket-pipeline.yml: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: cypress\/base:20.11.0\n\ndefinitions:\n  steps:\n    - step: &amp;install-and-check\n        name: Installation and Static Analysis\n        caches:\n          - node\n        script:\n          - npm install\n        artifacts:\n          - node_modules\/**\n    - step: &amp;test\n        name: Run tests with coverage\n        caches:\n          - node\n        script:\n          - npm run test -- --coverage\n          - node_modules\/.bin\/cypress install --force\n          - echo $OUR_CREDENTIALS &gt; .\/cypress\/properties\/credentials.ts\n          - node_modules\/.bin\/cypress run --component --env coverage=true\n          - node_modules\/.bin\/cypress run --env PLUGIN_ENABLED=false\n          ...<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con este comando, creamos un archivo temporal con el contenido de nuestra variable. As\u00ed, el archivo de credenciales se elimina tras la ejecuci\u00f3n del pipeline. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo $VARIABLE &gt; .\/your\/path\/filename.ts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Variables de despliegue:<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En WATA Factory, para adaptarnos a las necesidades de nuestros clientes y ofrecer un servicio de calidad, necesitamos trabajar con diferentes entornos: desarrollo, producci\u00f3n y, por supuesto, uno dedicado a pruebas. Cada entorno puede requerir credenciales diferentes o configuraciones espec\u00edficas. Para resolver este desaf\u00edo, Bitbucket ofrece las variables de despliegue.  <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas variables funcionan de manera similar a las variables de repositorio, pero debes especificar en el pipeline a qu\u00e9 entorno te refieres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para crear una variable de despliegue:<br><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ve a \u00abConfiguraci\u00f3n del repositorio &gt; Despliegues\u00bb.<br><\/li>\n\n\n\n<li>Crea un nuevo entorno en la secci\u00f3n que desees (pruebas, staging o producci\u00f3n).<br><\/li>\n\n\n\n<li>A\u00f1ade una nueva variable como hicimos antes con las variables de repositorio.<br><\/li>\n\n\n\n<li>Especifica en el pipeline a qu\u00e9 entorno hace referencia:<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>image: cypress\/base:20.11.0\n\ndefinitions:\n  steps:\n    - step: &amp;install-and-check\n        name: Installation and Static Analysis\n        caches:\n          - node\n        script:\n          - npm install\n        artifacts:\n          - node_modules\/**\n    - step: &amp;test\n        name: Run tests with coverage\n        caches:\n          - node\n        script:\n          - npm run test -- --coverage\n          - node_modules\/.bin\/cypress install --force\n          - echo $CREDENTIALS &gt; .\/cypress\/properties\/credentials.ts\n          - node_modules\/.bin\/cypress run --component --env coverage=true\n          - node_modules\/.bin\/cypress run --env PLUGIN_ENABLED=false\n        artifacts:\n          - coverage\/**\n          - coverage-component\/**\n          - cypress-image-diff-html-report\/**\n          - cypress-image-diff-screenshots\/**\n    - step: &amp;sonar\n        name: SonarQube analysis\n        image: sonarsource\/sonar-scanner-cli:latest\n        script:\n          - sonar-scanner -Dsonar.projectKey=Gesa-Dashboard---Angular -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_SECRET -Dsonar.javascript.lcov.reportPaths=coverage\/lcov.info,coverage-component\/lcov.info\n    - step: &amp;deploy\n        name: Deploy\n        script:\n          - npm run build -- --base-href \/dashboard_ang\/ --output-hashing=all --aot --configuration=$DEPLOYMENT_PROFILE\n          - ssh $FTP_USERNAME@$FTP_HOST -p222 'mkdir -p ~\/public_html\/dashboard_ang'\n          - scp -P 222 -r dist\/new_angular_poc\/browser\/* $FTP_USERNAME@$FTP_HOST:~\/public_html\/dashboard_ang\/\n\npipelines:\n  branches:\n    develop:\n      - step:\n          &lt;&lt;: *install-and-check\n      - step:\n          deployment: automatictesting\n          &lt;&lt;: *test\n      - step:\n          &lt;&lt;: *sonar\n  custom:\n    deploy-company1-dev:\n      - step:\n          &lt;&lt;: *install-and-check\n      - step:\n          name: Deploy to Company 1\n          deployment: company1\n          &lt;&lt;: *deploy\n    deploy-at:\n      - step:\n          &lt;&lt;: *install-and-check\n      - step:\n          name: Deploy to AT\n          deployment: automatictesting\n          &lt;&lt;: *deploy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como puedes ver, en la secci\u00f3n de pipelines definimos el entorno y en qu\u00e9 paso se utilizar\u00e1. El nombre del paso se define m\u00e1s arriba. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un detalle importante: si nombras una variable de despliegue igual que una variable de repositorio, esta \u00faltima ser\u00e1 sobrescrita.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los datos sensibles, como contrase\u00f1as, tokens de API y credenciales de bases de datos, son fundamentales para el desarrollo y las pruebas de proyectos, pero nunca deber\u00edan guardarse en texto plano dentro del repositorio. En esta entrada, explicaremos c\u00f3mo en WATA Factory manejamos estos secretos usando las herramientas integradas de Bitbucket: variables de repositorio y [&hellip;]<\/p>\n","protected":false},"author":39,"featured_media":10512,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[89,183],"tags":[],"class_list":["post-10591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias","category-tecnologia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3mo gestionar secretos en Bitbucket - WATA Factory<\/title>\n<meta name=\"description\" content=\"Descubre c\u00f3mo WATA Factory gestiona estos secretos utilizando las funciones integradas de Bitbucket: variables de repositorio y de despliegue.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo gestionar secretos en Bitbucket - WATA Factory\" \/>\n<meta property=\"og:description\" content=\"Descubre c\u00f3mo WATA Factory gestiona estos secretos utilizando las funciones integradas de Bitbucket: variables de repositorio y de despliegue.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/\" \/>\n<meta property=\"og:site_name\" content=\"WATA Factory\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/watafactory\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-24T08:30:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-03T14:20:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/wata-illustrations--scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlos Castillo M\u00e1rquez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@watafactory\" \/>\n<meta name=\"twitter:site\" content=\"@watafactory\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlos Castillo M\u00e1rquez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/\"},\"author\":{\"name\":\"Carlos Castillo M\u00e1rquez\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/person\\\/5874c8611b13bad33d70704c0508d91f\"},\"headline\":\"C\u00f3mo gestionar secretos en Bitbucket\",\"datePublished\":\"2024-09-24T08:30:20+00:00\",\"dateModified\":\"2026-02-03T14:20:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/\"},\"wordCount\":635,\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/wata-illustrations--scaled.jpg\",\"articleSection\":[\"Noticias\",\"Tecnolog\u00eda\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/\",\"name\":\"C\u00f3mo gestionar secretos en Bitbucket - WATA Factory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/wata-illustrations--scaled.jpg\",\"datePublished\":\"2024-09-24T08:30:20+00:00\",\"dateModified\":\"2026-02-03T14:20:17+00:00\",\"description\":\"Descubre c\u00f3mo WATA Factory gestiona estos secretos utilizando las funciones integradas de Bitbucket: variables de repositorio y de despliegue.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/wata-illustrations--scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/wata-illustrations--scaled.jpg\",\"width\":2560,\"height\":1440,\"caption\":\"Mujer con dedo en los labios, gesto de silencio, documentos confidenciales\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/como-gestionar-secretos-en-bitbucket-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wata.es\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3mo gestionar secretos en Bitbucket\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wata.es\\\/#website\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"name\":\"WATA Factory\",\"description\":\"IT Consulting &amp; Outsourcing for your company\",\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wata.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\",\"name\":\"WATA Factory\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"width\":688,\"height\":176,\"caption\":\"WATA Factory\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/watafactory\\\/\",\"https:\\\/\\\/x.com\\\/watafactory\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/wata\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wata.es\\\/#\\\/schema\\\/person\\\/5874c8611b13bad33d70704c0508d91f\",\"name\":\"Carlos Castillo M\u00e1rquez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3bafc27b7caaa54e083f1b61cad8d8ca8a89ed6504b4a64a63223c7ea721428a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3bafc27b7caaa54e083f1b61cad8d8ca8a89ed6504b4a64a63223c7ea721428a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3bafc27b7caaa54e083f1b61cad8d8ca8a89ed6504b4a64a63223c7ea721428a?s=96&d=mm&r=g\",\"caption\":\"Carlos Castillo M\u00e1rquez\"},\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/author\\\/carlos-Castillo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo gestionar secretos en Bitbucket - WATA Factory","description":"Descubre c\u00f3mo WATA Factory gestiona estos secretos utilizando las funciones integradas de Bitbucket: variables de repositorio y de despliegue.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo gestionar secretos en Bitbucket - WATA Factory","og_description":"Descubre c\u00f3mo WATA Factory gestiona estos secretos utilizando las funciones integradas de Bitbucket: variables de repositorio y de despliegue.","og_url":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/","og_site_name":"WATA Factory","article_publisher":"https:\/\/www.facebook.com\/watafactory\/","article_published_time":"2024-09-24T08:30:20+00:00","article_modified_time":"2026-02-03T14:20:17+00:00","og_image":[{"width":2560,"height":1440,"url":"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/wata-illustrations--scaled.jpg","type":"image\/jpeg"}],"author":"Carlos Castillo M\u00e1rquez","twitter_card":"summary_large_image","twitter_creator":"@watafactory","twitter_site":"@watafactory","twitter_misc":{"Escrito por":"Carlos Castillo M\u00e1rquez","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#article","isPartOf":{"@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/"},"author":{"name":"Carlos Castillo M\u00e1rquez","@id":"https:\/\/wata.es\/#\/schema\/person\/5874c8611b13bad33d70704c0508d91f"},"headline":"C\u00f3mo gestionar secretos en Bitbucket","datePublished":"2024-09-24T08:30:20+00:00","dateModified":"2026-02-03T14:20:17+00:00","mainEntityOfPage":{"@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/"},"wordCount":635,"publisher":{"@id":"https:\/\/wata.es\/#organization"},"image":{"@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/wata-illustrations--scaled.jpg","articleSection":["Noticias","Tecnolog\u00eda"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/","url":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/","name":"C\u00f3mo gestionar secretos en Bitbucket - WATA Factory","isPartOf":{"@id":"https:\/\/wata.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#primaryimage"},"image":{"@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/wata-illustrations--scaled.jpg","datePublished":"2024-09-24T08:30:20+00:00","dateModified":"2026-02-03T14:20:17+00:00","description":"Descubre c\u00f3mo WATA Factory gestiona estos secretos utilizando las funciones integradas de Bitbucket: variables de repositorio y de despliegue.","breadcrumb":{"@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#primaryimage","url":"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/wata-illustrations--scaled.jpg","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2024\/04\/wata-illustrations--scaled.jpg","width":2560,"height":1440,"caption":"Mujer con dedo en los labios, gesto de silencio, documentos confidenciales"},{"@type":"BreadcrumbList","@id":"https:\/\/wata.es\/es\/como-gestionar-secretos-en-bitbucket-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wata.es\/es\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo gestionar secretos en Bitbucket"}]},{"@type":"WebSite","@id":"https:\/\/wata.es\/#website","url":"https:\/\/wata.es\/","name":"WATA Factory","description":"IT Consulting &amp; Outsourcing for your company","publisher":{"@id":"https:\/\/wata.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wata.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/wata.es\/#organization","name":"WATA Factory","url":"https:\/\/wata.es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/#\/schema\/logo\/image\/","url":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","width":688,"height":176,"caption":"WATA Factory"},"image":{"@id":"https:\/\/wata.es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/watafactory\/","https:\/\/x.com\/watafactory","https:\/\/www.linkedin.com\/company\/wata\/"]},{"@type":"Person","@id":"https:\/\/wata.es\/#\/schema\/person\/5874c8611b13bad33d70704c0508d91f","name":"Carlos Castillo M\u00e1rquez","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/3bafc27b7caaa54e083f1b61cad8d8ca8a89ed6504b4a64a63223c7ea721428a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3bafc27b7caaa54e083f1b61cad8d8ca8a89ed6504b4a64a63223c7ea721428a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3bafc27b7caaa54e083f1b61cad8d8ca8a89ed6504b4a64a63223c7ea721428a?s=96&d=mm&r=g","caption":"Carlos Castillo M\u00e1rquez"},"url":"https:\/\/wata.es\/es\/author\/carlos-Castillo\/"}]}},"_links":{"self":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/10591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/comments?post=10591"}],"version-history":[{"count":4,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/10591\/revisions"}],"predecessor-version":[{"id":15758,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/10591\/revisions\/15758"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/media\/10512"}],"wp:attachment":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/media?parent=10591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/categories?post=10591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/tags?post=10591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}