-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsyncerd.yaml.example
More file actions
128 lines (115 loc) · 4.55 KB
/
Copy pathsyncerd.yaml.example
File metadata and controls
128 lines (115 loc) · 4.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# SyncerD Configuration Example
# Copy this file to syncerd.yaml and update with your values
source:
type: dockerhub
registry: docker.io
# Optional: Use username/password or token for authentication
# username: your-dockerhub-username
# password: your-dockerhub-password
# token: your-dockerhub-token
destinations:
- name: aws-ecr
type: ecr
registry: 123456789012.dkr.ecr.us-east-1.amazonaws.com
region: us-east-1
# NOTE: SyncerD relies on your docker credential config.
# In CI, use aws-actions/amazon-ecr-login (or `docker login`) so auth is available.
- name: azure-acr
type: acr
registry: myregistry.azurecr.io
# In CI, use azure/docker-login (or `docker login`) so auth is available.
- name: google-gcr
type: gcr
registry: gcr.io
# In CI, use `gcloud auth configure-docker` (or `docker login`) so auth is available.
- name: github-ghcr
type: ghcr
registry: ghcr.io
# In CI, use docker/login-action to ghcr.io so auth is available.
images:
- name: library/nginx
tags: [] # Empty means sync all tags if watch_tags is true
watch_tags: true # Monitor for new tags
- name: library/alpine
tags:
- latest
- 3.18
- 3.19
watch_tags: false # Only sync specified tags
- name: library/redis
tags: [] # If watch_tags is false and tags is empty, syncs 'latest' only
watch_tags: true
# Cron schedule for automatic syncing (default: every 3 weeks)
# Format: minute hour day month weekday
# Examples:
# "0 0 */21 * *" - Every 21 days at midnight UTC (every 3 weeks)
# "0 0 * * 0" - Every Sunday at midnight UTC
# "0 */6 * * *" - Every 6 hours
schedule: "0 0 */21 * *"
# Persistent state file (tracks which tags were already synced)
state_path: ".syncerd-state.json"
# Slack notifications (optional)
slack:
enabled: false
webhook_url: ""
channel: "" # optional, depends on your webhook setup
username: "SyncerD"
icon_emoji: ":whale:"
notify_on_new: true
notify_on_error: true
message_format: "compact" # "compact" | "detailed"
# Failure behavior
fail_fast: false # false = best-effort per image/tag; true = stop on first error
# Git repository mirroring (syncerd git-sync). Optional, separate from image
# sync above. Uncomment and adjust to mirror repositories across GitHub,
# GitLab, Bitbucket, Azure DevOps, and AWS CodeCommit, in any direction.
# Tokens and other secrets are NOT set here; export them as environment
# variables named after the provider (see below).
# git:
# providers:
# - name: gh
# type: github
# owner: your-github-org
# # token: set via SYNCERD_GIT_GH_TOKEN, not here
# - name: gl
# type: gitlab
# owner: your-gitlab-group
# # token: set via SYNCERD_GIT_GL_TOKEN, not here
# - name: bb
# type: bitbucket
# owner: your-bitbucket-workspace
# email: your-account-email@example.com # required: API tokens authenticate with the account email
# # token: set via SYNCERD_GIT_BB_TOKEN, not here
# - name: ado
# type: azuredevops
# owner: your-ado-organization
# project: your-ado-project # required: repositories live inside a project
# # auth: pat # default; or "entra" to present an operator supplied Entra ID access token
# # token: set via SYNCERD_GIT_ADO_TOKEN, not here (either a PAT or, in entra mode, an Entra access token)
# - name: cc
# type: codecommit
# region: us-east-1 # required; CodeCommit has no owner, repository names are flat within an account and region
# # API access resolves through the standard AWS credential chain (env, shared config, IRSA, instance role).
# # The git transport needs static IAM HTTPS Git credentials, since SyncerD does not derive SigV4 ones:
# # git_username: set via SYNCERD_GIT_CC_GIT_USERNAME, not here
# # git_password: set via SYNCERD_GIT_CC_GIT_PASSWORD, not here
#
# mirrors:
# - name: gh-to-gl
# source: gh
# destination: gl
# filters:
# include: ["terraform-*"]
# skip_archived: true
# skip_forks: true
# create_missing: true
# visibility: private
# push_mode: mirror
#
# # work_dir (clone cache) and state_path (fingerprint state) MUST share a
# # volume. Losing state while keeping the cache makes every repository
# # fail the adopt guard on the next run. The paths below are for a local
# # run; a container deployment should point both at a mounted volume
# # instead, e.g. /var/lib/syncerd/git.
# work_dir: ./syncerd-git-cache
# state_path: ./syncerd-git-cache/git-state.json