{"id":19299867,"url":"https://github.com/cloudogu/dogu-build-lib","last_synced_at":"2026-02-19T08:13:06.564Z","repository":{"id":45445968,"uuid":"160383644","full_name":"cloudogu/dogu-build-lib","owner":"cloudogu","description":"Jenkins Pipeline Shared library for Cloudogu EcoSystem Dogus.","archived":false,"fork":false,"pushed_at":"2026-02-04T07:47:16.000Z","size":600,"stargazers_count":2,"open_issues_count":9,"forks_count":1,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2026-02-04T19:35:28.272Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Groovy","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudogu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-12-04T16:03:56.000Z","updated_at":"2025-12-12T07:53:58.000Z","dependencies_parsed_at":"2024-06-04T12:53:07.580Z","dependency_job_id":"acc2f617-0490-40cb-804f-3abf8806d0a2","html_url":"https://github.com/cloudogu/dogu-build-lib","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/cloudogu/dogu-build-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudogu%2Fdogu-build-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudogu%2Fdogu-build-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudogu%2Fdogu-build-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudogu%2Fdogu-build-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudogu","download_url":"https://codeload.github.com/cloudogu/dogu-build-lib/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudogu%2Fdogu-build-lib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29608163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T06:47:36.664Z","status":"ssl_error","status_checked_at":"2026-02-19T06:45:47.551Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T23:13:00.917Z","updated_at":"2026-02-19T08:13:06.558Z","avatar_url":"https://github.com/cloudogu.png","language":"Groovy","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](resources/images/icon.png)\n\n[![GitHub license](https://img.shields.io/github/license/cloudogu/dogu-build-lib.svg)](https://github.com/cloudogu/dogu-build-lib/blob/master/LICENSE)\n\n# Dogu-build-lib\n\n## About\n\ndogu-build-lib is a shared library for [Jenkins pipelines](https://jenkins.io/doc/book/pipeline/). It adds functionality\nto interact with the [Cloudogu EcoSystem](https://github.com/cloudogu/ecosystem)\nand [Vagrant](https://www.vagrantup.com/) in general.\n\n## Get started\n\n- Install Plugin: [GitHub Groovy Libraries](https://wiki.jenkins.io/display/JENKINS/Pipeline+GitHub+Library+Plugin)\n- Use in any Jenkinsfile as follows:\n\n```groovy\n@Library('github.com/cloudogu/dogu-build-lib@\u003cCOMMIT-ID\u003e')\nimport com.cloudogu.ces.dogubuildlib.*\n```\n\n## Features\n\n- [Ecosystem](#Ecosystem)\n- [Vagrant](#Vagrant)\n- [Cypress](#Cypress)\n\n### Ecosystem\n\n#### Get Started\n\n```groovy\nEcosystem ecosystem = new EcoSystem(script, String gcloudCredentials, String sshCredentials)\n// eg.\nEcoSystem ecosystem = new EcoSystem(this, \"gcloud-ces-operations-internal-packer\", \"jenkins-gcloud-ces-operations-internal\")\n```\n\n#### Functions\n\n- changeNamespace(String namespace) | change dogu namespace\n- setVersion(String version) | define dogu version\n- provision(String mountPath, machineType = \"n1-standard-4\", int timeoutInMinutes = 5) | provision to a specific path\n- loginBackend(String credentialsId)  | login with credentials\n- setup(config = [:]) | setup a ces instance based on a setup.json\n- waitForDogu(String dogu) | wait until the dogu state is healthy\n- waitUntilAvailable(String doguName, int timeout) | wait until a dogu is ready for interaction\n- build(String doguPath) | build a dogu\n- verify(String doguPath) | execute the goss tests\n- push(String doguPath) | push dogu into registry\n- destroy() | remove the generated ces instance\n- collectLogs() | add logs as artifact to jenkins build\n- purgeDogu(String doguName, String parameters = \"\") | executes cesapp purge command\n- installDogu(String doguFullName) | executes cesapp install command\n- upgradeDogu(newDoguVersion = \"\") | tests the dogu upgrade\n- runYarnIntegrationTests() | runs yarn integration tests for the dogu\n- runMavenIntegrationTests() | runs maven integration tests for the dogu\n- upgradeFromPreviousRelease(String oldDoguVersionForUpgradeTest, String doguName, String namespace = \"official\") | upgrade dogu from previous version\n- restartDogu(String doguName, boolean waitUntilAvailable=true) | Restarts a dogu and by default waits until it is available again.\n- changeGlobalAdminGroup(String newAdminGroup) | Changes the global admin group to the given value.\n- copyDoguImageToJenkinsWorker(String doguPath) | Copies the built Dogu image from the CES machine to the Jenkins worker and imports it into Docker\n\n##### runCypressIntegrationTests():\n\n```groovy\n/**\n * Runs integration tests based on cypress. Is it necessary that the cypress integration test are inside a\n * relative path named `integrationTests` from the root.\n * @param version - The cypress image to use for running the integration tests. Default: \"cypress/included:7.1.0\".\n * @param enableVideoRecording - Determines whether cypress should record videos. Default: true.\n * @param enableScreenshotRecording - Determines whether cypress should record screenshots. Default: true.\n * @param timeoutInMinutes - Determines the complete timeout in minutes for the tests. Default: 15.\n * @param additionalDockerArgs - A list containing arguments that are given to docker.\n * @param additionalCypressArgs - A list containing argument that are given to cypress.\n */\nvoid runCypressIntegrationTests(String cypressImage = \"cypress/included:7.1.0\", boolean enableVideoRecording = true, boolean enableScreenshotRecording = true, int timeoutInMinutes = 15, ArrayList\u003cString\u003e additionalDockerArgs = [], ArrayList\u003cString\u003e additionalCypressArgs = []) {\n}\n```\n\n### Vagrant\n\n#### Get Started\n\n```groovy\nVagrant vm = new Vagrant(script, gcloudCredentials, sshCredentials)\n```\n\n#### Functions\n\n- installPlugins(String plugin) | install additional vagrant plugins\n- scp(String source, String target) | copy files to remote machine\n- sync() | sync host and remote\n- up() | start vm\n- ssh() | connect to vm\n- getExternalIP() | get ip for connection\n- sshOut(String command) | execute command on vm\n- destroy() | remove vm with all data\n\n### Multinode-Ecosystem\n\nIn order to test dogus via integration test on a multinode system, the Ecosystem-Subclass MultinodeEcoystem can be used.\nSince some functions behave differently in the multinode environment, the provision(...) method is omitted in the MultinodeEcosystem.\nCalling provision(..) on a MultinodeEcosystem will raise an error\n\n#### Setup-Configuration\nTo use the setup for a new coder cluster \n```groovy\nmultinodeEcosystem.setup(config)\n```\n\nSome parameters can be passed to the System.\n\n- additionalDogus                  # List of dogus to install in ces\n- additionalComponents             # List of components to install in ces\n- adminUsername                    # admin login username\n- adminPassword                    # admin password \n- adminGroup                       # name of the ces-admingroup\n- clustername                      # name of an existing cluster (optional)\n- versionEcosystemCore             # Version of ecosystem-core  e.g. 1.2.3 (optional)\n- versionK8SComponentOperatorCrd   # Version of k8s-component-operator-crd  e.g. 1.2.3 (optional)\n- versionK8SBlueprintOperatorCrd   # Version of k8s-blueprint-operator-crd  e.g. 1.2.3  (optional)\n- enableBackup                     # enable Backup-Component-Stack (default: false)\n- enableMonitoring                 # enable Monitoring-Component-Stack (default: false)\n\n### Cypress\n\n#### Get Started\n\n```groovy\nCypress cy = new Cypress(script, LinkedHashMap\u003cObject, Object\u003e config)\n```\n\n#### The Configuration and their default values\n\n```\n# Name of the image to use for the integration tests.\ncypressImage         : \"cypress/included:7.1.0\",\n\n# Determines whether videos should be recorded\nenableVideo: true,\n\n# Determines whether scrshots should be taken when a test fails\nenableScreenshots: true,\n\n# Determines the timeout for the integration tests stage in jenkins\ntimeoutInMinutes: 15,\n\n# Additional docker argument\nadditionalDockerArgs: \"\",\n\n# Additional cypress argument\nadditionalCypressArgs: \"\"\n```\n\n#### Functions\n\n- runIntegrationtests(EcoSystem ecoSystem) | Runs the integration tests\n- archiveVideosAndScreenshots() | Archives the artifacts after the run has finished.\n- preTestWork() | Should be executed before running the tests. Cleans the video, report, and screenshot folders.\n- upgradeCypressConfiguration() | Updates the cypress.json with the currently set admin group.\n\n### Samples\n\n#### Sample Pipeline Script\n\nThis example shows the usage of Ecosystem, lintDockerfile and shellcheck (based on cloudogu/ldap jenkinsfile)\n\n```groovy\n#!groovy\n@Library(['github.com/cloudogu/ces-build-lib@c622273', 'github.com/cloudogu/dogu-build-lib@f8cca7c9b101ed0bcdde8df556c13711d4cfd5a5'])\nimport com.cloudogu.ces.cesbuildlib.*\nimport com.cloudogu.ces.dogubuildlib.*\n\nnode('docker') {\n    stage('Checkout') {\n        checkout scm\n    }\n\n    stage('Lint') {\n        lintDockerfile()\n    }\n\n    stage('Shellcheck') {\n        shellCheck()\n    }\n}\nnode('vagrant') {\n\n    timestamps {\n        properties([\n                // Keep only the last x builds to preserve space\n                buildDiscarder(logRotator(numToKeepStr: '10')),\n                // Don't run concurrent builds for a branch, because they use the same workspace directory\n                disableConcurrentBuilds()\n        ])\n\n        EcoSystem ecoSystem = new EcoSystem(this, \"gcloud-ces-operations-internal-packer\", \"jenkins-gcloud-ces-operations-internal\")\n\n\n        try {\n\n            stage('Provision') {\n                ecoSystem.provision(\"/dogu\")\n            }\n\n            stage('Setup') {\n                ecoSystem.loginBackend('cesmarvin-setup')\n                ecoSystem.setup()\n            }\n\n            stage('Build') {\n                ecoSystem.build(\"/dogu\")\n            }\n\n            stage('Verify') {\n                ecoSystem.verify(\"/dogu\")\n            }\n\n        } finally {\n            stage('Clean') {\n                ecoSystem.destroy()\n            }\n        }\n    }\n}\n```\n\nSee [ces-build-lib](https://github.com/cloudogu/ces-build-lib) for further functions\n\nIcon based on: https://www.kissclipart.com/construction-helmet-icon-clipart-hard-hats-helmet-nv6hoi/ (Creative Commons)\n\n---\n\n## What is the Cloudogu EcoSystem?\nThe Cloudogu EcoSystem is an open platform, which lets you choose how and where your team creates great software. Each service or tool is delivered as a Dogu, a Docker container. Each Dogu can easily be integrated in your environment just by pulling it from our registry.\n\nWe have a growing number of ready-to-use Dogus, e.g. SCM-Manager, Jenkins, Nexus Repository, SonarQube, Redmine and many more. Every Dogu can be tailored to your specific needs. Take advantage of a central authentication service, a dynamic navigation, that lets you easily switch between the web UIs and a smart configuration magic, which automatically detects and responds to dependencies between Dogus.\n\nThe Cloudogu EcoSystem is open source and it runs either on-premises or in the cloud. The Cloudogu EcoSystem is developed by Cloudogu GmbH under [AGPL-3.0-only](https://spdx.org/licenses/AGPL-3.0-only.html).\n\n## License\nCopyright © 2020 - present Cloudogu GmbH\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3.\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.\nYou should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.\nSee [LICENSE](LICENSE) for details.\n\n\n---\nMADE WITH :heart:\u0026nbsp;FOR DEV ADDICTS. [Legal notice / Imprint](https://cloudogu.com/en/imprint/?mtm_campaign=ecosystem\u0026mtm_kwd=imprint\u0026mtm_source=github\u0026mtm_medium=link)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudogu%2Fdogu-build-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudogu%2Fdogu-build-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudogu%2Fdogu-build-lib/lists"}