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:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-release:
|
build-and-release:
|
||||||
@@ -87,7 +88,7 @@ jobs:
|
|||||||
cp ".pio/build/${PIO_ENV}/firmware.bin" "dist/OpenMQTTGateway-${PIO_ENV}-${TAG_NAME}.bin"
|
cp ".pio/build/${PIO_ENV}/firmware.bin" "dist/OpenMQTTGateway-${PIO_ENV}-${TAG_NAME}.bin"
|
||||||
ls -lA dist
|
ls -lA dist
|
||||||
|
|
||||||
- name: Create Gitea Release and Upload Binaries
|
- name: Create Gitea Release and Publish Package
|
||||||
env:
|
env:
|
||||||
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
PIO_ENV: ${{ steps.prep.outputs.pio_env }}
|
PIO_ENV: ${{ steps.prep.outputs.pio_env }}
|
||||||
@@ -103,6 +104,7 @@ jobs:
|
|||||||
|
|
||||||
server_url = os.environ["GITHUB_SERVER_URL"].rstrip("/")
|
server_url = os.environ["GITHUB_SERVER_URL"].rstrip("/")
|
||||||
repo = os.environ["GITHUB_REPOSITORY"]
|
repo = os.environ["GITHUB_REPOSITORY"]
|
||||||
|
owner, repo_name = repo.split("/", 1)
|
||||||
token = os.environ["GITEA_TOKEN"]
|
token = os.environ["GITEA_TOKEN"]
|
||||||
tag_name = os.environ["TAG_NAME"]
|
tag_name = os.environ["TAG_NAME"]
|
||||||
sha = os.environ["GITHUB_SHA"]
|
sha = os.environ["GITHUB_SHA"]
|
||||||
@@ -153,7 +155,10 @@ jobs:
|
|||||||
release_id = data["id"]
|
release_id = data["id"]
|
||||||
print(f"Created release ID {release_id} for tag {tag_name}")
|
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")):
|
for filename in sorted(os.listdir("dist")):
|
||||||
if filename in existing_assets:
|
if filename in existing_assets:
|
||||||
del_req = urllib.request.Request(
|
del_req = urllib.request.Request(
|
||||||
@@ -163,12 +168,33 @@ jobs:
|
|||||||
)
|
)
|
||||||
urllib.request.urlopen(del_req).close()
|
urllib.request.urlopen(del_req).close()
|
||||||
filepath = os.path.join("dist", filename)
|
filepath = os.path.join("dist", filename)
|
||||||
print(f"Uploading {filename}...")
|
print(f"Uploading {filename} to Release...")
|
||||||
subprocess.run([
|
subprocess.run([
|
||||||
"curl", "--fail", "-sS", "-X", "POST",
|
"curl", "--fail", "-sS", "-X", "POST",
|
||||||
"-H", f"Authorization: token {token}",
|
"-H", f"Authorization: token {token}",
|
||||||
"-F", f"attachment=@{filepath}",
|
"-F", f"attachment=@{filepath}",
|
||||||
f"{api_base}/releases/{release_id}/assets?name={filename}"
|
f"{api_base}/releases/{release_id}/assets?name={filename}"
|
||||||
], check=True)
|
], 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
|
EOF
|
||||||
Reference in new issue
Block a user