From 05d69d5c075ebc9611d1b3e370ecf2bf93109048 Mon Sep 17 00:00:00 2001
From: UUBulb <35923940+uubulb@users.noreply.github.com>
Date: Sun, 14 Jul 2024 14:38:12 +0800
Subject: [PATCH] ci: sync release to gitee (#390)
---
.github/workflows/release.yml | 13 +++
.github/workflows/{sync.yml => sync-code.yml} | 0
.github/workflows/sync-release.yml | 16 ++++
.github/workflows/sync.py | 90 +++++++++++++++++++
README.md | 2 +-
script/install.sh | 10 ++-
script/install_en.sh | 10 ++-
7 files changed, 136 insertions(+), 5 deletions(-)
rename .github/workflows/{sync.yml => sync-code.yml} (100%)
create mode 100644 .github/workflows/sync-release.yml
create mode 100644 .github/workflows/sync.py
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 16da386..15d2726 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -108,3 +108,16 @@ jobs:
curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/nezha-agent.service
curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/docker-compose.yaml
curl -s https://purge.jsdelivr.net/gh/$LOWER_USERNAME/nezha@master/script/config.yaml
+
+ - name: Trigger sync
+ if: ${{ env.SYNCED == 0 }}
+ uses: actions/github-script@v6
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ script: |
+ await github.rest.actions.createWorkflowDispatch({
+ owner: 'naiba',
+ repo: 'nezha',
+ workflow_id: 'sync-release.yml',
+ ref: 'main'
+ })
diff --git a/.github/workflows/sync.yml b/.github/workflows/sync-code.yml
similarity index 100%
rename from .github/workflows/sync.yml
rename to .github/workflows/sync-code.yml
diff --git a/.github/workflows/sync-release.yml b/.github/workflows/sync-release.yml
new file mode 100644
index 0000000..a6482ed
--- /dev/null
+++ b/.github/workflows/sync-release.yml
@@ -0,0 +1,16 @@
+name: Sync Release to Gitee
+
+on:
+ workflow_dispatch:
+
+jobs:
+ sync-release-to-gitee:
+ runs-on: ubuntu-latest
+ env:
+ GITEE_TOKEN: ${{ secrets.GITEE_TOKEN }}
+ steps:
+ - uses: actions/checkout@v4
+ - name: Sync to Gitee
+ run: |
+ pip3 install PyGitHub
+ python3 .github/workflows/sync.py
\ No newline at end of file
diff --git a/.github/workflows/sync.py b/.github/workflows/sync.py
new file mode 100644
index 0000000..0f43888
--- /dev/null
+++ b/.github/workflows/sync.py
@@ -0,0 +1,90 @@
+import os
+import time
+import requests
+import hashlib
+from github import Github
+
+
+def get_github_latest_release():
+ g = Github()
+ repo = g.get_repo("naiba/nezha")
+ release = repo.get_latest_release()
+ if release:
+ print(f"Latest release tag is: {release.tag_name}")
+ print(f"Latest release info is: {release.body}")
+ files = []
+ for asset in release.get_assets():
+ url = asset.browser_download_url
+ name = asset.name
+
+ response = requests.get(url)
+ if response.status_code == 200:
+ with open(name, 'wb') as f:
+ f.write(response.content)
+ print(f"Downloaded {name}")
+ else:
+ print(f"Failed to download {name}")
+ file_abs_path = get_abs_path(asset.name)
+ files.append(file_abs_path)
+ sync_to_gitee(release.tag_name, release.body, files)
+ else:
+ print("No releases found.")
+
+
+def sync_to_gitee(tag: str, body: str, files: slice):
+ release_id = ""
+ owner = "naibahq"
+ repo = "nezha"
+ release_api_uri = f"https://gitee.com/api/v5/repos/{owner}/{repo}/releases"
+ api_client = requests.Session()
+ api_client.headers.update({
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json'
+ })
+
+ access_token = os.environ['GITEE_TOKEN']
+ release_data = {
+ 'access_token': access_token,
+ 'tag_name': tag,
+ 'name': tag,
+ 'body': body,
+ 'prerelease': False,
+ 'target_commitish': 'main'
+ }
+ release_api_response = api_client.post(release_api_uri, json=release_data)
+ if release_api_response.status_code == 201:
+ release_info = release_api_response.json()
+ release_id = release_info.get('id')
+ else:
+ print(
+ f"Request failed with status code {release_api_response.status_code}")
+
+ print(f"Gitee release id: {release_id}")
+ asset_api_uri = f"{release_api_uri}/{release_id}/attach_files"
+
+ for file_path in files:
+ files = {
+ 'file': open(file_path, 'rb')
+ }
+
+ asset_api_response = requests.post(
+ asset_api_uri, params={'access_token': access_token}, files=files)
+
+ if asset_api_response.status_code == 201:
+ asset_info = asset_api_response.json()
+ asset_name = asset_info.get('name')
+ print(f"Successfully uploaded {asset_name}!")
+ else:
+ print(
+ f"Request failed with status code {asset_api_response.status_code}")
+
+ api_client.close()
+ print("Sync is completed!")
+
+
+def get_abs_path(path: str):
+ wd = os.getcwd()
+ return os.path.join(wd, path)
+
+
+get_github_latest_release()
diff --git a/README.md b/README.md
index 8a3ab53..35e9869 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
LOGO designed by 熊大 .
-
+
:trollface: Nezha Monitoring: Self-hostable, lightweight, servers and websites monitoring and O&M tool.
diff --git a/script/install.sh b/script/install.sh index 31e129b..9ef78ae 100755 --- a/script/install.sh +++ b/script/install.sh @@ -12,7 +12,7 @@ NZ_DASHBOARD_PATH="${NZ_BASE_PATH}/dashboard" NZ_AGENT_PATH="${NZ_BASE_PATH}/agent" NZ_DASHBOARD_SERVICE="/etc/systemd/system/nezha-dashboard.service" NZ_DASHBOARD_SERVICERC="/etc/init.d/nezha-dashboard" -NZ_VERSION="v0.17.1" +NZ_VERSION="v0.17.2" red='\033[0;31m' green='\033[0;32m' @@ -563,7 +563,13 @@ restart_and_update_standalone() { sudo rc-service nezha-dashboard stop fi - sudo wget -qO $NZ_DASHBOARD_PATH/app.zip https://${GITHUB_URL}/naiba/nezha/releases/latest/download/dashboard-linux-$os_arch.zip >/dev/null 2>&1 && sudo unzip -qq $NZ_DASHBOARD_PATH/app.zip -d $NZ_DASHBOARD_PATH && sudo mv $NZ_DASHBOARD_PATH/dist/dashboard-linux-$os_arch $NZ_DASHBOARD_PATH/app && sudo rm -r $NZ_DASHBOARD_PATH/app.zip $NZ_DASHBOARD_PATH/dist + if [ -z "$CN" ]; then + NZ_DASHBOARD_URL="https://${GITHUB_URL}/naiba/nezha/releases/latest/download/dashboard-linux-$os_arch.zip" + else + NZ_DASHBOARD_URL="https://${GITHUB_URL}/naibahq/nezha/releases/latest/download/dashboard-linux-$os_arch.zip" + fi + + sudo wget -qO $NZ_DASHBOARD_PATH/app.zip $NZ_DASHBOARD_URL >/dev/null 2>&1 && sudo unzip -qq $NZ_DASHBOARD_PATH/app.zip -d $NZ_DASHBOARD_PATH && sudo mv $NZ_DASHBOARD_PATH/dist/dashboard-linux-$os_arch $NZ_DASHBOARD_PATH/app && sudo rm -r $NZ_DASHBOARD_PATH/app.zip $NZ_DASHBOARD_PATH/dist if [ "$os_alpine" != 1 ]; then sudo systemctl enable nezha-dashboard diff --git a/script/install_en.sh b/script/install_en.sh index f2e7958..f583372 100755 --- a/script/install_en.sh +++ b/script/install_en.sh @@ -12,7 +12,7 @@ NZ_DASHBOARD_PATH="${NZ_BASE_PATH}/dashboard" NZ_AGENT_PATH="${NZ_BASE_PATH}/agent" NZ_DASHBOARD_SERVICE="/etc/systemd/system/nezha-dashboard.service" NZ_DASHBOARD_SERVICERC="/etc/init.d/nezha-dashboard" -NZ_VERSION="v0.17.1" +NZ_VERSION="v0.17.2" red='\033[0;31m' green='\033[0;32m' @@ -557,7 +557,13 @@ restart_and_update_standalone() { sudo rc-service nezha-dashboard stop fi - sudo wget -qO $NZ_DASHBOARD_PATH/app.zip https://${GITHUB_URL}/naiba/nezha/releases/latest/download/dashboard-linux-$os_arch.zip >/dev/null 2>&1 && sudo unzip -qq $NZ_DASHBOARD_PATH/app.zip -d $NZ_DASHBOARD_PATH && sudo mv $NZ_DASHBOARD_PATH/dist/dashboard-linux-$os_arch $NZ_DASHBOARD_PATH/app && sudo rm -r $NZ_DASHBOARD_PATH/app.zip $NZ_DASHBOARD_PATH/dist + if [ -z "$CN" ]; then + NZ_DASHBOARD_URL="https://${GITHUB_URL}/naiba/nezha/releases/latest/download/dashboard-linux-$os_arch.zip" + else + NZ_DASHBOARD_URL="https://${GITHUB_URL}/naibahq/nezha/releases/latest/download/dashboard-linux-$os_arch.zip" + fi + + sudo wget -qO $NZ_DASHBOARD_PATH/app.zip $NZ_DASHBOARD_URL >/dev/null 2>&1 && sudo unzip -qq $NZ_DASHBOARD_PATH/app.zip -d $NZ_DASHBOARD_PATH && sudo mv $NZ_DASHBOARD_PATH/dist/dashboard-linux-$os_arch $NZ_DASHBOARD_PATH/app && sudo rm -r $NZ_DASHBOARD_PATH/app.zip $NZ_DASHBOARD_PATH/dist if [ "$os_alpine" != 1 ]; then sudo systemctl enable nezha-dashboard