Note: Repository caching is currently in beta and subject to change.
可以通过创建名为“存储库缓存”的特殊类型的副本来配置存储库缓存。 Then, you can set data location policies that govern which repository networks are replicated to the repository cache.
Repository caching is not supported with clustering.
The primary instance and repository cache should have different DNS names. For example, if your primary instance is at
github.example.com, you might decide to name a cache
To have your CI machines fetch from the repository cache instead of the primary instance, you can use Git's
url.<base>.insteadOf configuration setting. For more information, see
git-config in the Git documentation.
For example, the global
.gitconfig for the CI machine would include these lines.
[url "https://europe-ci.github.example.com/"] insteadOf = https://github.example.com/
Then, when told to fetch
https://github.example.com/myorg/myrepo, Git will instead fetch from
SSH into your GitHub Enterprise Server instance. If your instance comprises multiple nodes, for example if high availability or geo-replication are configured, SSH into the primary node. If you use a cluster, you can SSH into any node. For more information about SSH access, see "Accessing the administrative shell (SSH)."
$ ssh -p 122 admin@HOSTNAME
To enable repository caching, run the following command.
$ ghe-config cluster.cache-enabled true
Set up a new GitHub Enterprise Server instance on your desired platform. This instance will be your repository cache. For more information, see "Setting up a GitHub Enterprise Server instance."
在“Add new SSH key”下，输入 SSH 密钥。
Connect to the repository cache's IP address using SSH.
$ ssh -p 122 admin@REPLICA-IP
On your cache replica, enable the feature flag for repository caching.
$ ghe-config cluster.cache-enabled true
要为副本生成密钥对，请使用包含主设备 IP 地址的
$ ghe-repl-setup PRIMARY IP
To verify the connection to the primary and enable replica mode for the repository cache, run
$ ghe-repl-setup PRIMARY-IP
cache-locationfor the repository cache, replacing CACHE-LOCATION with an alphanumeric identifier, such as the region where the cache is deployed. Also set a datacenter name for this cache; new caches will attempt to seed from another cache in the same datacenter.
$ ghe-repl-node --cache CACHE-LOCATION --datacenter REPLICA-DC-NAME
ghe-maintenance -u禁用维护模式。 当主节点处于维护模式时，Git 复制将无法进行。
To enable replication of repository networks to the repository cache, set a data location policy. For more information, see "Data location policies."
You can control data locality by configuring data location policies for your repositories with the
spokesctl cache-policy command. Data location policies determine which repository networks are replicated on which repository caches. By default, no repository networks will be replicated on any repository caches until a data location policy is configured.
Data location policies affect only Git content. Content in the database, such as issues and pull request comments, will be replicated to all nodes regardless of policy.
Note: Data location policies are not the same as access control. You must use repository roles to control which users may access a repository. For more information about repository roles, see "Repository roles for an organization."
You can configure a policy to replicate all networks with the
--default flag. For example, this command will create a policy to replicate a single copy of every repository network to the set of repository caches whose
cache_location is "kansas".
$ ghe-spokesctl cache-policy set --default 1 kansas
To configure replication for a repository network, specify the repository that is the root of the network. A repository network includes a repository and all of the repository's forks. You cannot replicate part of a network without replicating the whole network.
$ ghe-spokesctl cache-policy set <owner/repository> 1 kansas
You can override a policy that replicates all networks and exclude specific networks by specifying a replica count of zero for the network. For example, this command specifies that any repository cache in location "kansas" cannot contain any copies of that network.
$ ghe-spokesctl cache-policy set <owner/repository> 0 kansas
Replica counts greater than one in a given cache location are not supported.