1+ name : Release Dify Package
2+
3+ on :
4+ workflow_dispatch :
5+
6+ jobs :
7+ build :
8+ runs-on : ubuntu-latest
9+
10+ steps :
11+ - name : Checkout code
12+ uses : actions/checkout@v2
13+
14+ - name : Get the latest tag
15+ id : get_tag
16+ run : |
17+ echo "tag=$(git describe --tags --abbrev=0)" >> $GITHUB_OUTPUT
18+
19+ - name : Check for pre-release
20+ id : check_prerelease
21+ env :
22+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
23+ run : |
24+ tag=${{ steps.get_tag.outputs.tag }}
25+ owner=${{ github.repository_owner }}
26+ repo_name=$(basename `git rev-parse --show-toplevel`)
27+ release=$(curl -X GET -H "Accept: application/vnd.github.v3+json" \
28+ -H "Authorization: token $GITHUB_TOKEN" \
29+ https://api.github.com/repos/$owner/$repo_name/releases/tags/$tag)
30+
31+ if [[ $(echo "$release" | jq -r '.prerelease') != "true" ]]; then
32+ echo "Pre-release not found for tag $tag. Exiting."
33+ exit 1
34+ fi
35+
36+ # Store the release URL for uploading assets later
37+ echo "release_url=$(echo "$release" | jq -r '.upload_url')" >> $GITHUB_OUTPUT
38+
39+ - name : Check for existing difypkg file
40+ run : |
41+ tag=${{ steps.get_tag.outputs.tag }}
42+ repo_name=$(basename `git rev-parse --show-toplevel`)
43+ if [ -f "$repo_name-$tag.difypkg" ]; then
44+ echo "File $repo_name-$tag.difypkg already exists. Exiting."
45+ exit 0
46+ fi
47+
48+ - name : Get latest release
49+ id : latest_release
50+ env :
51+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52+ run : |
53+ response=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
54+ https://api.github.com/repos/langgenius/dify-plugin-daemon/releases/latest)
55+
56+ # Extract browser_download_url which is directly downloadable
57+ download_url=$(echo $response | jq -r '.assets[] | select(.name == "dify-plugin-linux-arm64") | .browser_download_url')
58+ echo "download_url=$download_url" >> $GITHUB_OUTPUT
59+
60+ # Optional: Extract the version for reference
61+ echo "version=$(echo $response | jq -r '.tag_name')" >> $GITHUB_OUTPUT
62+
63+ - name : Download Dify Plugin
64+ run : |
65+ if [ -z "${{ steps.latest_release.outputs.download_url }}" ]; then
66+ echo "Asset not found in the latest release. Exiting."
67+ exit 1
68+ fi
69+ curl -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o dify "${{ steps.latest_release.outputs.download_url }}"
70+ chmod +x dify
71+
72+ - name : Run Dify Plugin Package
73+ run : |
74+ ./dify plugin package ./
75+
76+ - name : Set package filename
77+ id : set_package_file
78+ run : |
79+ repo_name=$(basename `git rev-parse --show-toplevel`)
80+ tag=${{ steps.get_tag.outputs.tag }}
81+ echo "package_file=$repo_name-$tag.difypkg" >> $GITHUB_OUTPUT
82+
83+ - name : Upload package to GitHub Release
84+ env :
85+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
86+ uses : actions/upload-release-asset@v1
87+ with :
88+ upload_url : ${{ steps.check_prerelease.outputs.release_url }}
89+ asset_path : ./${{ steps.set_package_file.outputs.package_file }}
90+ asset_name : ${{ steps.set_package_file.outputs.package_file }}
91+ asset_content_type : application/octet-stream
0 commit comments