|
| 1 | +# Debian Version Update Guide |
| 2 | + |
| 3 | +This document provides instructions for creating new Debian version branches in the netboot.xyz debian-squash repository. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +This repository contains branches for different Debian versions and flavors. Each branch builds and releases Debian live filesystem squashfs files for netboot.xyz. |
| 8 | + |
| 9 | +## Branch Structure |
| 10 | + |
| 11 | +Each Debian version has multiple flavor branches following the pattern: `{flavor}-{version}` |
| 12 | + |
| 13 | +Standard flavors: |
| 14 | +- `core` (standard/minimal) |
| 15 | +- `gnome` |
| 16 | +- `cinnamon` |
| 17 | +- `kde` |
| 18 | +- `lxde` |
| 19 | +- `lxqt` |
| 20 | +- `mate` |
| 21 | +- `xfce` |
| 22 | + |
| 23 | +## Creating New Version Branches |
| 24 | + |
| 25 | +When Debian releases a new version, follow these steps to create corresponding branches: |
| 26 | + |
| 27 | +### 1. Identify Source Branches |
| 28 | +List all branches for the current version: |
| 29 | +```bash |
| 30 | +git branch -a | grep -E "{current_version}$" |
| 31 | +``` |
| 32 | + |
| 33 | +### 2. For Each Flavor Branch |
| 34 | + |
| 35 | +Create new branch from the existing version: |
| 36 | +```bash |
| 37 | +git checkout {flavor}-{old_version} |
| 38 | +git checkout -b {flavor}-{new_version} |
| 39 | +``` |
| 40 | + |
| 41 | +### 3. Update Files in Each New Branch |
| 42 | + |
| 43 | +#### A. GitHub Workflow File |
| 44 | +- Rename: `.github/workflows/{flavor}-{old_version}.yml` → `.github/workflows/{flavor}-{new_version}.yml` |
| 45 | +- Update in the file: |
| 46 | + - Workflow name: `name: {flavor}-{new_version}` |
| 47 | + - Trigger branch: `branches: - {flavor}-{new_version}` |
| 48 | + - Environment variable: `BRANCH: {flavor}-{new_version}` |
| 49 | + - Checkout ref: `ref: {flavor}-{new_version}` |
| 50 | + |
| 51 | +#### B. endpoints.template |
| 52 | +Update the following: |
| 53 | +- Endpoint name: `debian-{old_version}-{flavor}-squash` → `debian-{new_version}-{flavor}-squash` |
| 54 | +- Kernel reference: `debian-{old_version}-live-kernel` → `debian-{new_version}-live-kernel` |
| 55 | +- **IMPORTANT**: Keep `version: "REPLACE_VERSION"` as-is (dynamically populated by version.sh) |
| 56 | + |
| 57 | +#### C. Files That Don't Need Changes |
| 58 | +- `settings.sh` - Uses `current-live` URL path (version-agnostic) |
| 59 | +- `version.sh` - Dynamically extracts current version from Debian servers |
| 60 | +- `README.md` - Generic repository documentation |
| 61 | + |
| 62 | +### 4. Commit and Push |
| 63 | +```bash |
| 64 | +git add . |
| 65 | +git commit -m "Update {flavor}-{new_version} branch with Debian {new_version} references" |
| 66 | +git push origin {flavor}-{new_version} |
| 67 | +``` |
| 68 | + |
| 69 | +## Example: Creating Debian 14 from Debian 13 |
| 70 | + |
| 71 | +```bash |
| 72 | +# For core flavor |
| 73 | +git checkout core-13 |
| 74 | +git checkout -b core-14 |
| 75 | +mv .github/workflows/core-13.yml .github/workflows/core-14.yml |
| 76 | + |
| 77 | +# Edit workflow file to replace all "13" references with "14" |
| 78 | +# Edit endpoints.template to update endpoint name and kernel version |
| 79 | +# Keep version field as "REPLACE_VERSION" |
| 80 | + |
| 81 | +git add . |
| 82 | +git commit -m "Update core-14 branch with Debian 14 references" |
| 83 | +git push origin core-14 |
| 84 | + |
| 85 | +# Repeat for other flavors: gnome, cinnamon, kde, lxde, lxqt, mate, xfce |
| 86 | +``` |
| 87 | + |
| 88 | +## Automation Tips |
| 89 | + |
| 90 | +When updating multiple branches, you can use the MultiEdit tool or sed commands to batch update references: |
| 91 | + |
| 92 | +```bash |
| 93 | +# Example for workflow file updates |
| 94 | +sed -i 's/core-13/core-14/g' .github/workflows/core-14.yml |
| 95 | + |
| 96 | +# Example for endpoints.template |
| 97 | +sed -i 's/debian-13-/debian-14-/g' endpoints.template |
| 98 | +sed -i 's/debian-13-live-kernel/debian-14-live-kernel/g' endpoints.template |
| 99 | +``` |
| 100 | + |
| 101 | +## Important Notes |
| 102 | + |
| 103 | +1. **Version Placeholder**: Always keep `version: "REPLACE_VERSION"` in endpoints.template. This is replaced dynamically during the build process. |
| 104 | + |
| 105 | +2. **CI/CD**: Each branch has its own GitHub Actions workflow that triggers on: |
| 106 | + - Push to the branch (excluding workflow file changes) |
| 107 | + - Weekly schedule (Fridays at 4 AM) |
| 108 | + - Manual workflow dispatch |
| 109 | + |
| 110 | +3. **Testing**: After creating new branches, you can manually trigger the workflow to test the build process using GitHub's "Actions" tab. |
| 111 | + |
| 112 | +4. **Debian Versions**: The actual Debian version number (e.g., 12.5.0) is extracted dynamically from Debian's servers by version.sh |
| 113 | + |
| 114 | +## Troubleshooting |
| 115 | + |
| 116 | +- If builds fail, check that the ISO URLs in settings.sh match Debian's current directory structure |
| 117 | +- Verify that version.sh correctly extracts version numbers from SHA256SUMS |
| 118 | +- Ensure GitHub Actions has necessary permissions for creating releases |
| 119 | + |
| 120 | +## Additional Resources |
| 121 | + |
| 122 | +- [netboot.xyz build pipelines](https://github.com/netbootxyz/build-pipelines) |
| 123 | +- [Debian CD Images](https://cdimage.debian.org/debian-cd/current-live/) |
0 commit comments