{"id":13495620,"url":"https://github.com/titenkov/docker-sync-action","last_synced_at":"2025-03-28T16:33:04.905Z","repository":{"id":65162069,"uuid":"530508330","full_name":"titenkov/docker-sync-action","owner":"titenkov","description":"GitHub Action that syncs your docker images across registries 🤹‍♀️","archived":false,"fork":false,"pushed_at":"2023-02-09T13:52:22.000Z","size":11,"stargazers_count":5,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T04:02:14.641Z","etag":null,"topics":["actions","docker","github","github-actions"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/titenkov.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2022-08-30T05:19:41.000Z","updated_at":"2023-03-28T20:41:35.000Z","dependencies_parsed_at":"2024-10-31T10:31:39.785Z","dependency_job_id":"bd8820d5-dd6f-4937-baa1-f10bb59614e1","html_url":"https://github.com/titenkov/docker-sync-action","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/titenkov%2Fdocker-sync-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/titenkov%2Fdocker-sync-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/titenkov%2Fdocker-sync-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/titenkov%2Fdocker-sync-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/titenkov","download_url":"https://codeload.github.com/titenkov/docker-sync-action/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246063141,"owners_count":20717750,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["actions","docker","github","github-actions"],"created_at":"2024-07-31T19:01:36.462Z","updated_at":"2025-03-28T16:33:04.578Z","avatar_url":"https://github.com/titenkov.png","language":null,"readme":"# 🐳 Docker Sync Action\n\n[![license](https://img.shields.io/badge/License-MIT-purple.svg)](LICENSE)\n[![market](https://img.shields.io/badge/Get_it-on_the_Marketplace-informational.svg)](https://github.com/marketplace/actions/docker-sync-action)\n\nThis github action syncs your docker images across registries 🤹‍♀️\n\nSchedule an automatic workflow, which will ensure that docker images from different registries (or repositories) are in sync. This github action is using [Skopeo](https://github.com/containers/skopeo) command line utility under the hood.\n\n```yaml\n- uses: titenkov/docker-sync-action@v1\n  with:\n    source: titenkov/notifir\n    destination: ghcr.io/notifir\n    destination-credentials: titenkov:${{ secrets.GH_TOKEN }}\n```\n\n## Usage\n\nHere is an example of what to put in your `.github/workflows/sync-docker-images.yml` file to trigger the action.\n\n```yaml\nname: Sync Docker Images\n\non:\n  schedule:\n    - cron: \"0 0 * * *\" # Run every day\n\njobs:\n  sync:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v2\n\n      - name: Sync docker images\n        uses: titenkov/docker-sync-action@v1\n        with:\n          source: titenkov/notifir\n          destination: ghcr.io/notifir\n          destination-credentials: titenkov:${{ secrets.GH_TOKEN }}\n```\n\nIn the example, the action will take all the images from `titenkov/notifir` repository and sync them to `ghcr.io/notifir`.\n\nAnother example for the case, when you want to sync only specific tags:\n\n```yaml\n  - name: Sync docker images\n    uses: titenkov/docker-sync-action@v1\n    with:\n      source: titenkov/notifir\n      destination: ghcr.io/notifir/notifir\n      destination-credentials: titenkov:${{ secrets.GH_TOKEN }}\n      versions: |\n        0.1.9\n        0.1.10\n        latest\n```\n\n## Action inputs\n\nSupported transport types: `containers-storage`, `dir`, `docker`, `docker-archive`, `docker-daemon`, `oci`, `oci-archive`, `ostree`, `tarball`.\n\n| Name                      | Description                                                                                                       | Required | Default  |\n| ------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------- | -------- |\n| `source`                  | Your source image repository                                                                                      | true     | -        |\n| `source-transport`        | Your source transport type                                                                                        | false    | 'docker' |\n| `source-credentials`      | Your source credentials (`user:password`)                                                                         | false    | 'null'   |\n| `source-tls`              | Require HTTPS and verify certificates when talking to container registry or daemon                                | false    | 'false'  |\n| `destination`             | Your destination image repository                                                                                 | true     | -        |\n| `destination-transport`   | Your destination transport type                                                                                   | false    | 'docker' |\n| `destination-credentials` | Your destination credentials (`user:password`)                                                                    | false    | 'null'   |\n| `destination-tls`         | Require HTTPS and verify certificates when talking to container registry or daemon                                | false    | 'false'  |\n| `format `                 | MANIFEST TYPE (oci, v2s1, or v2s2) to use in the destination (default is manifest type of source, with fallbacks) | false    | 'v2s2'   |\n| `versions `               | Your docker image tags to sync (multi-line)                                                                       | false    | ''       |\n\n## Contact\n\nI would love to hear your feedback! Tell me what you loved and what you want to improve about this action at ✉️ feedback@titenkov.com, or feel free to open a Github Issue.\u003cbr /\u003e\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftitenkov%2Fdocker-sync-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftitenkov%2Fdocker-sync-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftitenkov%2Fdocker-sync-action/lists"}