mirror of
https://github.com/langgenius/dify.git
synced 2026-05-23 10:29:07 +08:00
89 lines
2.9 KiB
YAML
89 lines
2.9 KiB
YAML
name: CLI Release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags:
|
|
- 'difyctl-v*'
|
|
|
|
concurrency:
|
|
group: cli-release-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
release:
|
|
name: build standalone binaries (all targets)
|
|
runs-on: depot-ubuntu-24.04
|
|
if: github.repository == 'langgenius/dify'
|
|
permissions:
|
|
contents: write
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: ./cli
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 0
|
|
|
|
- name: Setup web environment
|
|
uses: ./.github/actions/setup-web
|
|
|
|
- name: Setup Bun
|
|
uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2.0.2
|
|
with:
|
|
bun-version: latest
|
|
|
|
- name: Read cli/package.json
|
|
id: manifest
|
|
run: |
|
|
version=$(node -p "require('./package.json').version")
|
|
channel=$(node -p "require('./package.json').difyctl.channel")
|
|
minDify=$(node -p "require('./package.json').difyctl.compat.minDify")
|
|
maxDify=$(node -p "require('./package.json').difyctl.compat.maxDify")
|
|
{
|
|
echo "version=$version"
|
|
echo "channel=$channel"
|
|
echo "minDify=$minDify"
|
|
echo "maxDify=$maxDify"
|
|
} >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Validate manifest
|
|
run: scripts/release-validate-manifest.sh
|
|
|
|
- name: Install cross-arch native prebuilds
|
|
# Re-installs node_modules with every @napi-rs/keyring platform variant
|
|
# so `bun build --compile` can embed the right .node into each target.
|
|
working-directory: ./
|
|
run: NPM_CONFIG_USERCONFIG="$PWD/cli/scripts/cross-arch.npmrc" pnpm install --frozen-lockfile
|
|
|
|
- name: Compile standalone binaries (all targets)
|
|
env:
|
|
CLI_VERSION: ${{ steps.manifest.outputs.version }}
|
|
DIFYCTL_CHANNEL: ${{ steps.manifest.outputs.channel }}
|
|
DIFYCTL_MIN_DIFY: ${{ steps.manifest.outputs.minDify }}
|
|
DIFYCTL_MAX_DIFY: ${{ steps.manifest.outputs.maxDify }}
|
|
run: |
|
|
DIFYCTL_COMMIT="$(git rev-parse HEAD)" \
|
|
DIFYCTL_BUILD_DATE="$(git log -1 --format=%cI HEAD)" \
|
|
pnpm build:bin
|
|
|
|
- name: Generate sha256 checksum file
|
|
env:
|
|
CLI_VERSION: ${{ steps.manifest.outputs.version }}
|
|
run: scripts/release-write-checksums.sh
|
|
|
|
- name: Publish GitHub Release
|
|
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2
|
|
with:
|
|
tag_name: difyctl-v${{ steps.manifest.outputs.version }}
|
|
name: difyctl ${{ steps.manifest.outputs.version }}
|
|
prerelease: ${{ steps.manifest.outputs.channel != 'stable' }}
|
|
generate_release_notes: true
|
|
fail_on_unmatched_files: true
|
|
files: |
|
|
cli/dist/bin/difyctl-v*
|