Skip to content

Commit 0f3cc6e

Browse files
sophiethekingdocs-botisaacmbrownpallsamasteph-sabotasan
authored
GitHub Enterprise Server 3.17 release candidate (#55411)
Co-authored-by: docs-bot <[email protected]> Co-authored-by: Isaac Brown <[email protected]> Co-authored-by: Pallavi <[email protected]> Co-authored-by: Stephanie Sabota <[email protected]> Co-authored-by: Casey Tucker <[email protected]> Co-authored-by: Hao Jiang <[email protected]> Co-authored-by: Felicity Chapman <[email protected]> Co-authored-by: mc <[email protected]>
1 parent eb8854c commit 0f3cc6e

File tree

50 files changed

+967555
-82
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+967555
-82
lines changed

content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/integrating-jira-with-your-personal-projects.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@ shortTitle: Integrate Jira with projects
2424

2525
## Further reading
2626

27-
* [AUTOTITLE](/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board)
27+
{% ifversion projects-v1 %}
28+
* [AUTOTITLE](/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board){% endif %}
2829
* [Connect Jira Cloud to GitHub](https://confluence.atlassian.com/adminjiracloud/connect-jira-cloud-to-github-814188429.html) in the Atlassian documentation

content/admin/all-releases.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ If you run analysis in an external CI system, we recommend using the same versio
5252

5353
| {% data variables.product.prodname_ghe_server %} version | Recommended {% data variables.product.prodname_codeql_cli %} version |
5454
| ------------------------------------------------- | ---------------------- |
55+
| 3.17 | 2.20.7 ([changelog](https://codeql.github.com/docs/codeql-overview/codeql-changelog/codeql-cli-2.20.7/)) |
5556
| 3.16 | 2.20.3 ([changelog](https://codeql.github.com/docs/codeql-overview/codeql-changelog/codeql-cli-2.20.3/)) |
5657
| 3.15 | 2.18.4 ([changelog](https://codeql.github.com/docs/codeql-overview/codeql-changelog/codeql-cli-2.18.4/)) |
5758
| 3.14 | 2.17.6 ([changelog](https://codeql.github.com/docs/codeql-overview/codeql-changelog/codeql-cli-2.17.6/)) |
@@ -70,6 +71,7 @@ For instances with {% data variables.product.prodname_actions %} enabled, self-h
7071

7172
| {% data variables.product.prodname_ghe_server %} version | Minimum Runner version |
7273
| ------------------------------------------------- | ---------------------- |
74+
| 3.17 | 2.322.0 ([release notes](https://github.com/actions/runner/releases/tag/v2.322.0)) |
7375
| 3.16 | 2.321.0 ([release notes](https://github.com/actions/runner/releases/tag/v2.321.0)) |
7476
| 3.15 | 2.319.1 ([release notes](https://github.com/actions/runner/releases/tag/v2.319.1)) |
7577
| 3.14 | 2.317.0 ([release notes](https://github.com/actions/runner/releases/tag/v2.317.0)) |
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: About the backup service for GitHub Enterprise Server
3+
shortTitle: About the backup service
4+
intro: 'Learn what the built-in backup service offers and how it differs from a High Availability replica.'
5+
versions:
6+
ghes: '>=3.17'
7+
type: overview
8+
topics:
9+
- Backups
10+
- Enterprise
11+
- Fundamentals
12+
- Infrastructure
13+
---
14+
15+
>[!NOTE] {% data variables.product.prodname_enterprise_backup_service %} is currently in {% data variables.release-phases.public_preview %} and is subject to change. During the public preview, the service is available at no additional cost.
16+
17+
## About the {% data variables.product.prodname_enterprise_backup_service %}
18+
19+
The {% data variables.product.prodname_enterprise_backup_service %} is a managed backup solution built directly into {% data variables.product.prodname_ghe_server %}. It offers a simplified alternative to the legacy {% data variables.product.prodname_enterprise_backup_utilities %}.
20+
21+
With this service, you can:
22+
23+
* Configure scheduled backups from the {% data variables.enterprise.management_console %}.
24+
* View backup status and history.
25+
26+
Compared to the legacy backup utilities, the {% data variables.product.prodname_enterprise_backup_service %}:
27+
28+
* Can be configured through the {% data variables.enterprise.management_console %}.
29+
* Doesn’t require a separate host for backup software.
30+
* Stores backups on a dedicated storage volume directly accessible by your instance.
31+
32+
>[!NOTE] {% data variables.product.prodname_enterprise_backup_service %} is currently only supported on standalone instances and high availability primary nodes. Cluster configurations and replica nodes are not yet supported.
33+
34+
## How does the backup service differ from a High Availability replica?
35+
36+
While both the backup service and a High Availability (HA) replica contribute to data protection, they serve different purposes and are recommended together for a robust deployment.
37+
38+
### High Availability replica
39+
40+
An HA replica is a redundant, passive {% data variables.product.prodname_ghe_server %} instance that stays in sync with the primary instance via datastore replication. It minimizes service disruption during hardware failure or network outages.
41+
42+
However, it’s not a replacement for backups—because any data corruption or loss on the primary can be immediately replicated to the HA node.
43+
44+
### {% data variables.product.prodname_enterprise_backup_service %}
45+
46+
The backup service is a disaster recovery solution. It captures full, timestamped snapshots of instance data that can be used to restore an instance or spin up a new one—without needing an always-on replica.
47+
48+
## Further reading
49+
50+
* [AUTOTITLE](/admin/backing-up-and-restoring-your-instance/configuring-backups-on-your-instance)
51+
* [About {% data variables.product.prodname_enterprise_backup_utilities %}](https://github.com/github/backup-utils#readme)
52+
* [AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh)
53+
* [AUTOTITLE](/admin/configuration/configuring-your-enterprise/enabling-and-scheduling-maintenance-mode)
54+
* [AUTOTITLE](/admin/github-actions/advanced-configuration-and-troubleshooting/backing-up-and-restoring-github-enterprise-server-with-github-actions-enabled)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: Backup service settings reference
3+
shortTitle: Backup settings
4+
intro: 'Reference for all configurable options available in the Backup Service section of the {% data variables.enterprise.management_console %}.'
5+
versions:
6+
ghes: '>= 3.17'
7+
type: reference
8+
topics:
9+
- Backups
10+
---
11+
12+
You can configure the following options in the "Backup Service" section of the {% data variables.enterprise.management_console %}.
13+
14+
## Snapshot retention
15+
16+
* **Number of snapshots**: Sets how many backup snapshots to retain (default: `10`). Older snapshots are automatically pruned after each successful backup.
17+
18+
## Restore options
19+
20+
* **Skip audit logs restore**: Excludes audit logs during a restore.
21+
* **Restore Management Console password**: If enabled, restores the root site admin password from snapshot data (default: `true`).
22+
23+
## Performance tuning
24+
25+
* **Process priority**:
26+
27+
* **Nice**: Sets the CPU scheduling priority (`nice -n 19` by default).
28+
* **Ionice**: Sets the I/O scheduling priority (`ionice -c 3` by default).
29+
30+
* **Rsync compression**: Uses compression for `rsync` transfers during backup and restore, reducing bandwidth usage.
31+
32+
## MSSQL backup schedule
33+
34+
* **MSSQL backup cadence**: Sets the schedule for full, differential, and transaction log backups, in minutes (default: `10080,1440,15`).
35+
36+
## Backup content
37+
38+
* **Include Pages**: Adds {% data variables.product.prodname_pages %} data to snapshots.
39+
* **Skip search indices**: Excludes search index data from snapshots.
40+
41+
## Parallelization settings
42+
43+
* **Enable parallel jobs**: Allows multiple backup jobs to run concurrently.
44+
* **Max jobs**: Limits the total number of parallel backup jobs.
45+
* **Max rsync jobs**: Limits the number of parallel `rsync` jobs.
46+
* **Max system load**: Sets a load limit to throttle parallel processing when needed.
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
---
2+
title: Configuring the backup service
3+
shortTitle: Configure the backup service
4+
intro: 'Enable and configure the built-in backup service in the {% data variables.enterprise.management_console %}, and optionally migrate legacy settings.'
5+
versions:
6+
ghes: '>=3.17'
7+
type: how_to
8+
topics:
9+
- Backups
10+
- Enterprise
11+
- Fundamentals
12+
- Infrastructure
13+
---
14+
15+
Before configuring the backup service, ensure you have:
16+
17+
* A {% data variables.product.prodname_ghe_server %} instance running version 3.17 or later.
18+
* A dedicated storage volume provisioned and managed for use as the backup target.
19+
20+
## Storage requirements
21+
22+
To ensure reliable and performant backups, your storage must meet the following requirements:
23+
24+
* **Capacity:** Allocate at least five times the amount of storage used by your primary {% data variables.product.github %} appliance disk. This accounts for historical snapshots and future growth.
25+
* **Filesystem support:** The backup service uses hard links for efficient storage, and your {% data variables.product.github %} instance uses symbolic links. The backup target must support both symbolic and hard links, and it must use a case-sensitive filesystem to prevent conflicts.
26+
27+
You can test whether your filesystem supports hardlinking symbolic links by running:
28+
29+
```shell
30+
touch file
31+
ln -s file symlink
32+
ln symlink hardlink
33+
ls -la
34+
```
35+
36+
If the `ln symlink hardlink` command completes successfully, the filesystem is supported.
37+
38+
* **Performance:** Use high-performance storage with low latency and high IOPS to avoid slow backups and restores.
39+
* **NFS:** Avoid using an NFS mount for the backup directory (typically `/data/backup`), as this can lead to timeouts and degraded performance.
40+
41+
## Configuring the backup service
42+
43+
You can configure {% data variables.product.prodname_enterprise_backup_service %} through the {% data variables.enterprise.management_console %}.
44+
45+
### Setting up the backup target
46+
47+
Before configuring the service, you must prepare the storage volume where backups will be stored.
48+
49+
#### Using a new block device
50+
51+
If you're using a dedicated block device as your backup target, you need to initialize it via SSH before proceeding in the {% data variables.enterprise.management_console %}. This process will **format the device and erase all existing data**.
52+
53+
1. Connect to your instance via SSH as the `admin` user. See [AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh).
54+
1. Attach your backup block device to the instance.
55+
1. Identify the device name using `lsblk` to list available block devices. Make sure you select the correct device to avoid data loss.
56+
57+
```shell
58+
lsblk
59+
```
60+
61+
1. Run the initialization command, replacing `YOUR_DEVICE_NAME` with the actual device name identified in the previous step.
62+
63+
>[!WARNING] This command will permanently erase all data on the specified device. Double-check the device name and back up any important data before proceeding.
64+
65+
```shell
66+
ghe-storage-init-backup /dev/YOUR_DEVICE_NAME
67+
```
68+
69+
This command:
70+
* Formats the device (erases all data).
71+
* Prepares it for use by the backup service.
72+
* Sets it to mount automatically at `/data/backup` on boot.
73+
74+
#### Reusing a previously initialized disk
75+
76+
If the device was already initialized using `ghe-storage-init-backup`, you can reuse it without reformatting:
77+
78+
1. Connect to your instance via SSH as the `admin` user.
79+
1. Attach the disk to the instance.
80+
1. Create the mount point, if it doesn't exist.
81+
82+
```shell
83+
sudo mkdir -p /data/backup
84+
```
85+
86+
1. Enable and start the mount service.
87+
88+
```shell
89+
sudo systemctl enable ghe-backup-disk.service
90+
sudo systemctl start ghe-backup-disk.service
91+
```
92+
93+
This will mount the device at `/data/backup` and ensures it's mounted automatically in the future.
94+
95+
### Configuring backup settings
96+
97+
After the backup target is mounted, the Backup Service page will become available in the {% data variables.enterprise.management_console %}. If you're using a block device, this requires completing the initialization or mount steps above.
98+
99+
>[!NOTE] The settings page won’t appear until the backup storage is mounted at `/data/backup`.
100+
101+
If you're migrating from {% data variables.product.prodname_enterprise_backup_utilities %}, you can transfer your configuration in one of two ways:
102+
103+
1. **Manual configuration**: Recreate your settings directly in the {% data variables.enterprise.management_console %}.
104+
1. **Command-line migration**: SSH into your instance, copy your `backup.config` file from backup-utils, and run:
105+
106+
```shell
107+
ghe-migrate-backup-config /path/to/your/backup.config
108+
```
109+
110+
Use the `--dry-run` flag to preview changes without applying them.
111+
112+
### Scheduling automated backups
113+
114+
Once the service is configured, you can define a backup schedule.
115+
116+
1. In the {% data variables.enterprise.management_console %}, open the "Backup Service" page.
117+
1. In the "Backup Schedule" section, choose a predefined schedule (e.g., Daily) or enter a custom cron expression.
118+
1. Click **Save** to apply the changes.
119+
120+
The first run will be a full backup. Future runs will be incremental. If a new backup attempt starts while a previous one is still running, it may be skipped or fail. In that case, adjust the schedule to avoid overlap.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
---
2+
title: Creating and monitoring backups
3+
shortTitle: Create and monitor backups
4+
intro: 'Run manual backups, understand backup types, and monitor backup activity using the {% data variables.enterprise.management_console %} or command line.'
5+
versions:
6+
ghes: '>= 3.17'
7+
type: how_to
8+
topics:
9+
- Backups
10+
- Monitoring
11+
---
12+
13+
## About backup types
14+
15+
{% data variables.product.prodname_enterprise_backup_service %} supports two types of backups:
16+
17+
* **Full backups**: Capture a complete snapshot of all data. The first backup is always a full backup.
18+
* **Incremental backups**: Include only changes since the last backup, significantly reducing backup time and storage usage.
19+
20+
The system automatically determines which type to create based on the schedule and backup history. For Git repositories and other file stores, hard links are used to ensure storage-efficient snapshots with full point-in-time recovery.
21+
22+
## Creating backups
23+
24+
Once the backup service is configured, it will automatically create backups based on your defined schedule. You can also trigger backups manually as needed.
25+
26+
### Running a manual backup
27+
28+
To create an on-demand backup—for example, before performing maintenance:
29+
30+
1. Connect to your instance via SSH as the `admin` user. See [AUTOTITLE](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh).
31+
1. Run the backup command:
32+
33+
```shell
34+
ghe-backup
35+
```
36+
37+
### Command line backup utilities
38+
39+
You can also use these CLI tools for advanced backup management or troubleshooting:
40+
41+
* `ghe-backup`: Triggers a full or incremental backup, depending on the state.
42+
* `ghe-prune-snapshots`: Deletes old snapshots based on your configured retention policy.
43+
44+
## Monitoring backups
45+
46+
You can monitor backup activity through the {% data variables.enterprise.management_console %} or from the command line.
47+
48+
### Viewing backup status in the {% data variables.enterprise.management_console %}
49+
50+
1. On the "Backup Service" page, navigate to the "Backup History" section.
51+
1. Review the status of recent backups.
52+
53+
### Monitoring via SSH
54+
55+
To check backup progress or troubleshoot issues from the command line:
56+
57+
1. SSH into your instance as the `admin` user.
58+
1. View the most recent backup log:
59+
60+
```shell
61+
cat /var/log/github-backup/backup-verbose-$(date +%Y%m%d).log
62+
```
63+
64+
1. To check if a backup is currently running, look for this file:
65+
66+
```shell
67+
ls /data/user/common/backup_utils_in_progress
68+
```
69+
70+
If the file exists, a backup is currently running.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: Backup service for GitHub Enterprise Server
3+
shortTitle: Backup service
4+
intro: '{% data variables.product.github %} offers a managed backup solution built directly into {% data variables.product.prodname_ghe_server %} to protect your instance data.'
5+
versions:
6+
ghes: '>=3.17'
7+
topics:
8+
- Enterprise
9+
children:
10+
- /about-the-backup-service-for-github-enterprise-server
11+
- /understanding-the-backup-service
12+
- /configuring-the-backup-service
13+
- /creating-and-monitoring-backups
14+
- /restoring-from-a-backup
15+
- /restoring-with-github-actions-enabled
16+
- /backup-service-settings-reference
17+
- /understanding-the-snapshot-file-structure
18+
---

0 commit comments

Comments
 (0)