You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/MAINTAINING.md
+26-24Lines changed: 26 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,51 +10,53 @@ The pipeline consists of three primary workflows:
10
10
* Runs daily via cron.
11
11
* Uses the `endoflife.date` API to fetch active 3.x branches.
12
12
* Triggers the Build workflow via `gh workflow run` using a Personal Access Token (`RBPW_PAT`) to allow workflow chaining.
13
+
* Explicitly passes `build_type="release"` to ensure correct mode selection.
13
14
14
15
2.**Build (`build-openssl.yml`):**
15
-
***Validate Version:** Checks EOL status. Aborts if EOL unless `ignore_eol` is true.
16
-
***Build Common Assets:** Compiles architecture-independent headers and HTML docs once on a Linux runner.
17
-
***Compile Binaries (Fan-Out):** A highly parallel matrix that splits builds by OS, Architecture, AND Linkage (`shared` vs `static`). Uploads raw, unstripped binaries as temporary artifacts.
18
-
***Package Release (Fan-In):** Downloads common assets and raw binaries.
16
+
***Validate Mode & Version:** Handles two build modes:
17
+
*`release`: Uses official tags (e.g., `openssl-3.4.0`) and performs EOL checks.
18
+
*`branch`: Clones a specific git branch (e.g., `master`, `openssl-3.0`) and verifies its existence.
19
+
***Build Common Assets:** Compiles architecture-independent headers and HTML docs once.
20
+
* Generates a centralized `README.txt`.
21
+
* Extracts `LICENSE.txt` from the source root.
22
+
* Removes unnecessary large directories to keep the "common assets" artifact lean.
23
+
***Compile Binaries (Fan-Out):** A highly parallel matrix that splits builds by OS, Architecture, AND Linkage (`shared` vs `static`). Uses parallelized `make -j$(nproc)` for speed.
24
+
***Package Release (Fan-In):** Downloads assets and raw binaries.
25
+
**Adaptive Merging:* Handles inconsistent `actions/download-artifact` behavior by detecting both nested and flattened artifact structures.
19
26
**macOS:* Combines x64 and arm64 into Universal binaries using `lipo` and `install_name_tool`.
20
-
**Windows/Linux/Android/iOS:* Organizes files into a strict directory layout.
21
-
* Strips debug symbols, drops PDBs, and generates `install_symlinks.sh` (POSIX only) and `README.txt`.
22
-
* Uploads the final `.zip` without double-zipping (`archive: false`).
23
-
***Cleanup:** Automatically deletes intermediate `raw-*` and common assets artifacts via GitHub API to save storage space, unless `keep_raw_artifacts` is true.
27
+
**Naming:* Releases use standard version naming; Branch builds use `<branch>_<timestamp>` (e.g., `master_20260314T150000Z`).
28
+
**Metadata:* Generates `version.txt`. If in `branch` mode, prepends `branch: ` to the content.
29
+
***Cleanup:** Deletes intermediate artifacts via GitHub API unless `keep_raw_artifacts` is true.
24
30
25
31
3.**Publish (`publish-release.yml`):**
26
32
* Triggered automatically when a Build completes.
27
-
* Downloads the raw `.zip` artifacts intact.
28
-
* Reads the version from the `build-metadata` artifact.
29
33
* Creates a Draft release and opens a GitHub Issue for maintainer review.
30
34
31
35
## 🛠️ Manual Operations
32
36
33
-
### How to build a specific version manually
37
+
### How to build manually
34
38
1. Go to **Actions** tab -> **Build OpenSSL 3.x**.
35
39
2. Click **Run workflow**.
36
-
3.Enter the version (e.g., `3.4.0`).
37
-
4.*(Optional)* Check **Ignore EOL Check**if you specifically need to build an older, unsupported version (e.g., `3.0.0`).
38
-
5.*(Optional)* Check **Keep raw build artifacts** if you need to keep compiled artifacts, for example for debug purposes.
39
-
6.The pipeline will build the artifacts and automatically trigger the Publish workflow as a Draft.
40
+
3.**Build Type:** Select `release` for official tags or `branch` for moving git branches.
41
+
4.**OpenSSL Version or Branch:**Enter the tag (e.g., `3.4.0`) or branch name (e.g., `openssl-3.6`).
42
+
5.*(Optional)* Check **Ignore EOL Check** if you need to build an unsupported release.
43
+
6.*(Optional)* Check **Keep raw build artifacts** for debugging.
40
44
41
45
### How to publish a release manually
42
-
If an automatic publish fails, or you want to publish a specific build run manually:
46
+
If an automatic publish fails:
43
47
1. Go to **Actions** tab -> **Publish Release**.
44
48
2. Click **Run workflow**.
45
-
3. Provide the **Build Workflow Run ID** (found in the URL of the successful build run, e.g., `1234567890`).
46
-
4. Toggle the **Create as Draft** status as needed.
49
+
3. Provide the **Build Workflow Run ID** (found in the URL of the successful build run).
50
+
4. Toggle **Create as Draft** as needed.
47
51
48
52
### Reviewing and Publishing Drafts
49
-
When the CI pipeline automatically builds a new upstream release, it creates a Draft release and opens a GitHub Issue.
50
53
1. Check the **Issues** tab for a "👀 Review Required" notification.
51
-
2. Click the link in the issue to view the Draft Release.
52
-
3. Verify the release notes and attached `.zip` artifacts.
54
+
2. Click the link to view the Draft Release.
55
+
3. Verify the artifacts and release notes.
53
56
4. Click **Edit**, uncheck "Set as a draft", and click **Publish release**.
54
57
5. Close the notification issue.
55
58
56
59
### Secrets Configuration
57
-
To allow the workflows to trigger each other (e.g., `check-upstream` triggering `build-openssl`), a **Personal Access Token (PAT)** is required.
58
60
***Secret Name:**`RBPW_PAT`
59
-
***Required Scopes:**`repo` (or specific `actions:write`, `contents:write`).
60
-
***Note:**The default `GITHUB_TOKEN` cannot trigger recursive workflows. (However, `publish-release.yml` uses the standard `GITHUB_TOKEN` to create releases and issues).
61
+
***Required Scopes:**`repo`, `actions:write`.
62
+
***Note:**Required for workflow chaining (`check-upstream` -> `build-openssl`). Standard operations use the default `GITHUB_TOKEN`.
0 commit comments