Release package as part of build action.
Build and Release OpenMQTTGateway Firmware / Build Firmware & Publish Gitea Release (push) Failing after 8m2s

This commit is contained in:
chriz committed 2026-10-29 20:53:36 +01:00
1 parent 0d8a8b35f0
commit b1e2301ea1
1 file changed
+30 -4
+30 -4
View File
@@ -10,6 +10,7 @@ on:
permissions:
contents: write
packages: write
jobs:
build-and-release:
@@ -87,7 +88,7 @@ jobs:
cp ".pio/build/${PIO_ENV}/firmware.bin" "dist/OpenMQTTGateway-${PIO_ENV}-${TAG_NAME}.bin"
ls -lA dist
- name: Create Gitea Release and Upload Binaries
- name: Create Gitea Release and Publish Package
env:
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PIO_ENV: ${{ steps.prep.outputs.pio_env }}
@@ -103,6 +104,7 @@ jobs:
server_url = os.environ["GITHUB_SERVER_URL"].rstrip("/")
repo = os.environ["GITHUB_REPOSITORY"]
owner, repo_name = repo.split("/", 1)
token = os.environ["GITEA_TOKEN"]
tag_name = os.environ["TAG_NAME"]
sha = os.environ["GITHUB_SHA"]
@@ -153,7 +155,10 @@ jobs:
release_id = data["id"]
print(f"Created release ID {release_id} for tag {tag_name}")
# Upload firmware binaries in dist/
# Upload firmware binary to Release and Gitea Package Registry
package_name = f"{repo_name}-{pio_env}"
pkg_base = f"{server_url}/api/v1/packages/{owner}/generic/{package_name}/{tag_name}"
for filename in sorted(os.listdir("dist")):
if filename in existing_assets:
del_req = urllib.request.Request(
@@ -163,12 +168,33 @@ jobs:
)
urllib.request.urlopen(del_req).close()
filepath = os.path.join("dist", filename)
print(f"Uploading {filename}...")
print(f"Uploading {filename} to Release...")
subprocess.run([
"curl", "--fail", "-sS", "-X", "POST",
"-H", f"Authorization: token {token}",
"-F", f"attachment=@{filepath}",
f"{api_base}/releases/{release_id}/assets?name={filename}"
], check=True)
print(f"Uploaded {filename} successfully.")
print(f"Uploaded {filename} to Release successfully.")
# Publish to Gitea Generic Package Registry (delete existing file first if re-running)
pkg_file_url = f"{pkg_base}/{filename}"
try:
del_pkg_req = urllib.request.Request(
pkg_file_url,
headers={"Authorization": f"token {token}"},
method="DELETE",
)
urllib.request.urlopen(del_pkg_req).close()
except urllib.error.HTTPError as e:
if e.code != 404:
raise
print(f"Publishing {filename} to Gitea Package {package_name}/{tag_name}...")
subprocess.run([
"curl", "--fail", "-sS", "-X", "PUT",
"-H", f"Authorization: token {token}",
"--upload-file", filepath,
pkg_file_url,
], check=True)
print(f"Published {filename} to Gitea Package Registry successfully.")
EOF