From d9e071e4529b36d0e02f7bc57c7cc91945173ebb Mon Sep 17 00:00:00 2001
From: Igor Pecovnik Armbian rolling releases
-
-
-
- - rolling releases are available at the bottom of official download pages
- - How to change type of images that are provided by Armbian?
- - How to switch between stable and rolling release?
-
- Please note that Armbian Rolling Releases are not recommended for production environments, as these builds are not thoroughly tested. However, in most cases, they should work well.
-
No merged PRs in this period.
" >> body.html + echo "_No merged PRs in this period._" >> summary.md else while IFS=$'\t' read -r title author repo num pr_url; do - echo "* ${title}. by @${author} in [${repo}#${num}](${pr_url})" >> "$GITHUB_STEP_SUMMARY" - echo "
Stay up to date with the latest Armbian news, development highlights, and tips — delivered straight to your inbox." >> summary.md
- name: Upload raw data (artifacts)
uses: actions/upload-artifact@v4
@@ -171,7 +164,6 @@ jobs:
if-no-files-found: warn
- name: "Checkout OS repository to get version"
- if: ${{ env.RELEASE_ENABLED == 'true' }}
uses: actions/checkout@v5
with:
repository: armbian/os
@@ -180,7 +172,6 @@ jobs:
path: os
- name: "Read version from nightly or stable based on period"
- if: ${{ env.RELEASE_ENABLED == 'true' }}
shell: bash
run: |
set -euo pipefail
@@ -196,17 +187,59 @@ jobs:
VERSION=$(jq -r '.version' "$FILE")
echo "VERSION_OVERRIDE=${VERSION}" >> "$GITHUB_ENV"
+ - name: "Write a short journalistic intro with AI"
+ if: ${{ env.PERIOD == 'weekly' }}
+ run: |
+ set -euo pipefail
+ python3 <<'PY'
+ import os
+ from openai import OpenAI
+
+ token = os.environ["GITHUB_TOKEN"]
+ label = os.environ["LABEL"]
+
+ with open("summary.md", "r", encoding="utf-8") as f:
+ content = f.read().strip()
+
+ client = OpenAI(base_url="https://models.github.ai/inference", api_key=token)
+
+ prompt = (
+ "Read the following Markdown changelog and write a short journalistic intro paragraph (5–7 sentences) "
+ "that summarizes the main activity. Be concise, professional, and factual. Output only the intro.\n\n"
+ f"{content}"
+ )
+
+ resp = client.chat.completions.create(
+ model="openai/gpt-4.1",
+ messages=[
+ {"role": "system", "content": "You are a " + label + "digest editor."},
+ {"role": "user", "content": prompt},
+ ],
+ temperature=0.3,
+ top_p=1.0,
+ )
+
+ intro = resp.choices[0].message.content.strip()
+
+ with open("summary.md", "w", encoding="utf-8") as f:
+ f.write(intro + "\n\n" + content)
+
+ print("Prepended AI intro:")
+ print(intro)
+ PY
+ cat summary.md >> "$GITHUB_STEP_SUMMARY"
+
- uses: ncipollo/release-action@v1
if: ${{ env.RELEASE_ENABLED == 'true' }}
with:
owner: 'armbian'
repo: 'build'
tag: "v${{ env.VERSION_OVERRIDE }}"
- name: "v${{ env.VERSION_OVERRIDE }}"
+ name: "${{ env.LABEL }}"
generateReleaseNotes: "false"
prerelease: "false"
makeLatest: "true"
- bodyFile: "body.html"
+ bodyFile: "summary.md"
allowUpdates: "true"
skipIfReleaseExists: "true"
token: ${{ secrets.RELEASE_TOKEN }}