Skip to content

Commit 6998b34

Browse files
committed
ci: setup release workflow
1 parent 5ddc40d commit 6998b34

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

.github/workflows/release.yaml

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

0 commit comments

Comments
 (0)