Release package as part of build action.
Build and Release OpenMQTTGateway Firmware / Build Firmware & Publish Gitea Release (push) Failing after 8m2s
Build and Release OpenMQTTGateway Firmware / Build Firmware & Publish Gitea Release (push) Failing after 8m2s
This commit is contained in:
1 parent
0d8a8b35f0
commit
b1e2301ea1
1 file changed
+30
-4
@@ -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
|
||||
Reference in new issue
Block a user