{"id":19325289,"url":"https://github.com/duplocloud/ghactions-service-update","last_synced_at":"2026-03-06T16:31:08.640Z","repository":{"id":36974709,"uuid":"462824213","full_name":"duplocloud/ghactions-service-update","owner":"duplocloud","description":"Github action to update one or more services running in the DuploCloud platform","archived":false,"fork":false,"pushed_at":"2025-07-17T06:20:22.000Z","size":2260,"stargazers_count":2,"open_issues_count":8,"forks_count":4,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-02-11T14:01:47.599Z","etag":null,"topics":["deployment","duplocloud","github-actions"],"latest_commit_sha":null,"homepage":"https://duplocloud.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duplocloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2022-02-23T16:48:41.000Z","updated_at":"2025-07-17T06:20:25.000Z","dependencies_parsed_at":"2023-01-17T10:31:11.763Z","dependency_job_id":"1639e080-0d6d-42cd-9ad0-a709651181eb","html_url":"https://github.com/duplocloud/ghactions-service-update","commit_stats":{"total_commits":82,"total_committers":5,"mean_commits":16.4,"dds":"0.18292682926829273","last_synced_commit":"8b656629e91032543ecbcc1c1e24b840c3f96343"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/duplocloud/ghactions-service-update","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duplocloud%2Fghactions-service-update","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duplocloud%2Fghactions-service-update/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duplocloud%2Fghactions-service-update/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duplocloud%2Fghactions-service-update/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duplocloud","download_url":"https://codeload.github.com/duplocloud/ghactions-service-update/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duplocloud%2Fghactions-service-update/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30185433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T14:42:24.748Z","status":"ssl_error","status_checked_at":"2026-03-06T14:42:14.925Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["deployment","duplocloud","github-actions"],"created_at":"2024-11-10T02:09:34.354Z","updated_at":"2026-03-06T16:31:08.612Z","avatar_url":"https://github.com/duplocloud.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/duplocloud/ghactions-service-update/actions\"\u003e\u003cimg alt=\"ghactions-service-update status\" src=\"https://github.com/duplocloud/ghactions-service-update/workflows/build-test/badge.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e :warning: **This action is deprecated please use:** [duplocloud/actions/update-image](https://github.com/duplocloud/actions/tree/main/update-image)\n\n# Update one or more Services running in Duplo\n\nThis action will update one or more services running in Duplo.\n\n# Usage\n\nHere is an example of what to put in your `.github/workflows/build-and-deploy.yml` file to use this workflow.\n\n## Example updating a Duplo service\n\n```yaml\nname: Build and Deploy\non:\n  push:\n    branches:\n      - develop # branch to trigger on\njobs:\n  deploy:\n    # This example updates a service named \"nginx\" to use an image \"nginx:latest\"\n    name: Deploy with DuploCloud\n    runs-on: ubuntu-latest\n    steps:\n      - name: service-update\n        uses: duplocloud/ghactions-service-update@master\n        with:\n          duplo_host: https://mysystem.duplocloud.net\n          duplo_token: ${{ secrets.DUPLO_TOKEN }}\n          tenant: default\n          services: |-\n            [\n              { \"Name\": \"nginx\", \"Image\": \"nginx:latest\" }\n            ]\n```\n\n## Example updating multiple Duplo services\n\n```yaml\nname: Build and Deploy\non:\n  push:\n    branches:\n      - develop # branch to trigger on\njobs:\n  deploy:\n    # This example updates 2 services to use the busybox image\n    name: Deploy with DuploCloud\n    runs-on: ubuntu-latest\n    steps:\n      - name: service-update\n        uses: duplocloud/ghactions-service-update@master\n        with:\n          duplo_host: https://mysystem.duplocloud.net\n          duplo_token: ${{ secrets.DUPLO_TOKEN }}\n          use_bulk_api: true\n          tenant: default\n          services: |-\n            [\n              { \"Name\": \"test1\", \"Image\": \"busybox:latest\" }\n              { \"Name\": \"test2\", \"Image\": \"busybox:latest\" }\n            ]\n```\n\n## Example updating an ECS service\n\n```yaml\nname: Build and Deploy\non:\n  push:\n    branches:\n      - develop # branch to trigger on\njobs:\n  deploy:\n    # This example updates a service named \"nginx\" to use an image \"nginx:latest\"\n    name: Deploy with DuploCloud\n    runs-on: ubuntu-latest\n    steps:\n      - name: service-update\n        uses: duplocloud/ghactions-service-update@master\n        with:\n          duplo_host: https://mysystem.duplocloud.net\n          duplo_token: ${{ secrets.DUPLO_TOKEN }}\n          tenant: default\n          ecs_services: |-\n            [\n              { \"Name\": \"nginx\", \"Image\": \"nginx:latest\" }\n            ]\n```\n\n## Inputs\n\n| Name | Description | Required | Default |\n|------|-------------|----------|---------|\n| tenant | Tenant name or ID | true | unset |\n| services | JSON for the services to be updated (see below for JSON format) | false | `[]` |\n| ecs_services | JSON for the ECS services to be updated (see below for JSON format) | false | `[]` |\n| duplo_host | Base URL of the Duplo installation (no trailing slash) - defaults to `duplo_host` env var | true (if no env var) | unset |\n| duplo_token | API token - defaults to `duplo_token` env var | true (if no env var) | unset |\n\n### services - JSON format\n\n| Key | Description | Required | Default |\n|------|-------------|----------|---------|\n| Name | Name of the Duplo service | true | unset |\n| Image | Docker image to deploy | true | unset |\n| AgentPlatform | Agent platform identifier | false | (retain existing value in Duplo) |\n| Env | Overwrites all environment variables (see below for JSON format) | false | (retain existing value in Duplo) |\n| MergeEnv | Merges only the given environment variables (see below for JSON format) | false | unset |\n| DeleteEnv | Deletes environment variables (see below for JSON format) | false | unset |\n| AllocationTags | Allocation Tags | false | (retain existing value in Duplo) |\n\n#### services.Env / services.MergeEnv\n\nThis format matches what you would enter in the *Environment variables* field in the DuploCloud UI (but in JSON format).\n\n#### services.Env / services.MergeEnv - Non-kubernetes service types\n\nFor non-Kubernetes services, the format of the `Env` or `MergeEnv` fields is a simple JSON object, where keys are the env var names, and values are the env var values.\n\nExample:\n\n```json\n{\n  \"MY_ENV_VAR\" : \"my value\",\n  \"OTHER_ENV_VAR\" : \"other value\"\n}\n```\n\n#### services.Env / services.MergeEnv - Kubernetes services\n\nFor Kubernetes services, the format of the `Env` or `MergeEnv` fields matches the Kubernetes format for environment variables (but in JSON format).\n\nExample:\n\n```json\n[\n  {\n    \"Name\": \"MY_ENV_VAR\",\n    \"Value\": \"my value\"\n  },\n  {\n    \"Name\": \"MY_ENV_VAR_FROM_A_CONFIG_MAP\",\n    \"ValueFrom\": {\n      \"ConfigMapKeyRef\": {\n        \"Name\": \"my-kubernetes-configmap\",\n        \"Key\": \"my-key-in-the-configmap\",\n      }\n    }\n  },\n  {\n    \"Name\": \"MY_ENV_VAR_FROM_A_SECRET\",\n    \"ValueFrom\": {\n      \"SecretKeyRef\": {\n        \"Name\": \"my-kubernetes-secret\",\n        \"Key\": \"my-key-in-the-secret\",\n      }\n    }\n  }\n]\n```\n\n#### services.DeleteEnv\n\nThis field is a simple JSON array of strings, listing the environment variables to be deleted: `[\"MY_ENV_VAR\", \"OTHER_ENV_VAR\"]`\n\n### ecs_services - JSON format\n\n| Key | Description | Required | Default |\n|------|-------------|----------|---------|\n| Name | Name of the ECS service | true | unset |\n| Image | Docker image to deploy | true | unset |\n\n## Outputs\n\nNone.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduplocloud%2Fghactions-service-update","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduplocloud%2Fghactions-service-update","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduplocloud%2Fghactions-service-update/lists"}