Skip to content

Commit 1d9a667

Browse files
Add langflow in packages
1 parent df9d0c4 commit 1d9a667

File tree

11 files changed

+121
-20
lines changed

11 files changed

+121
-20
lines changed

.github/workflows/build_packages.yml

+10-3
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,9 @@ jobs:
9696
echo "PRODUCT_VERSION=${PRODUCT_VERSION:-3.0.5}" >> $GITHUB_ENV
9797
9898
- name: Free Disk Space
99-
run: |
100-
curl -fsSL https://raw.githubusercontent.com/apache/arrow/refs/heads/main/ci/scripts/util_free_space.sh | bash
101-
sudo docker image prune --all --force
99+
uses: jlumbroso/[email protected]
100+
with:
101+
tool-cache: true
102102

103103
- name: Import GPG
104104
uses: crazy-max/ghaction-import-gpg@v6
@@ -128,6 +128,11 @@ jobs:
128128
sudo apt install -y dpkg-sig lintian dh-make
129129
fi
130130
131+
- name: Install uv
132+
uses: astral-sh/setup-uv@v5
133+
with:
134+
enable-cache: false
135+
131136
- name: Build DEB Packages
132137
if: matrix.packageType == 'deb'
133138
run: |
@@ -138,6 +143,7 @@ jobs:
138143
wget -q -O ./debian/source/DocStore.tar.gz "https://github.com/ONLYOFFICE/document-templates/archive/main/community-server.tar.gz"
139144
wget -q -O ./debian/source/campaigns.tar.gz "https://github.com/ONLYOFFICE/ASC.Web.Campaigns/archive/master.tar.gz"
140145
wget -q -O ./debian/source/plugins.tar.gz "https://github.com/ONLYOFFICE/$PRODUCT-plugins/archive/master.tar.gz"
146+
wget -q -O ./debian/source/langflow.tar.gz "https://github.com/ONLYOFFICE/langflow/archive/master.tar.gz"
141147
142148
rename -f -v "s/product([^\/]*)$/${PRODUCT_LOW}\$1/g" debian/*
143149
find debian/ -type f -exec sed -i "s/{{product}}/${PRODUCT_LOW}/g" {} ';'
@@ -154,6 +160,7 @@ jobs:
154160
wget -q -O ./SOURCES/DocStore.tar.gz "https://github.com/ONLYOFFICE/document-templates/archive/main/community-server.tar.gz"
155161
wget -q -O ./SOURCES/campaigns.tar.gz "https://github.com/ONLYOFFICE/ASC.Web.Campaigns/archive/master.tar.gz"
156162
wget -q -O ./SOURCES/plugins.tar.gz "https://github.com/ONLYOFFICE/$PRODUCT-plugins/archive/master.tar.gz"
163+
wget -q -O ./SOURCES/langflow.tar.gz "https://github.com/ONLYOFFICE/langflow/archive/master.tar.gz"
157164
mv ./SOURCES/product.rpmlintrc ./SOURCES/${PRODUCT_LOW}.rpmlintrc
158165
sed -i -e '/BuildRequires/d' product.spec
159166
rpmbuild -D "packager Ascensio System SIA <[email protected]>" \

install/common/langflow-build.sh

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
set -xe
3+
4+
SRC_PATH=${1:-"/langflow"}
5+
6+
export UV_COMPILE_BYTECODE="1"
7+
export UV_LINK_MODE="copy"
8+
export HOST="127.0.0.1"
9+
10+
export VITE_BASENAME="/onlyflow/"
11+
export VITE_BACKEND_PROXY_URL="http://${HOST}:7860"
12+
export FRONTEND_PORT="3000"
13+
14+
export HOST_API_SERVICE="http://${HOST}:5000"
15+
export HOST_FILES_SERVICE="http://${HOST}:5007"
16+
export HOST_QDRANT_SERVICE="http://${HOST}"
17+
export HOST_QDRANT_PORT="6333"
18+
19+
#backend
20+
cd ${SRC_PATH}
21+
uv sync --frozen --no-install-project --no-editable
22+
uv sync --frozen --no-editable
23+
24+
#frontend
25+
cd ${SRC_PATH}/src/frontend
26+
npm install
27+
npm run build
28+
awk '/server\s*{/{f=1;c=0} f{print;c+=gsub(/{/,"{")-gsub(/}/,"}");!c&&(f=0)}' \
29+
${SRC_PATH}/docker/frontend/default.conf.template > ${SRC_PATH}/src/frontend/langflow.conf
30+
sed -i ${SRC_PATH}/src/frontend/langflow.conf \
31+
-e "s#\${FRONTEND_PORT}#${FRONTEND_PORT}#g" \
32+
-e "s#\${VITE_BASENAME}#${VITE_BASENAME}#g" \
33+
-e "s#\${BACKEND_URL}#${VITE_BACKEND_PROXY_URL}#g" \
34+
-e "s#usr/share/nginx/html#etc/openresty/html/langflow#g"

install/common/systemd/build.sh

+11
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ SERVICE_NAME=(
7373
migration-runner
7474
login
7575
healthchecks
76+
langflow
7677
)
7778

7879
reassign_values (){
@@ -188,6 +189,12 @@ reassign_values (){
188189
EXEC_FILE="ASC.Web.HealthChecks.UI.dll"
189190
DEPENDENCY_LIST=""
190191
;;
192+
langflow )
193+
SERVICE_PORT="7860"
194+
WORK_DIR="${BASE_DIR}/services/langflow/"
195+
EXEC_FILE="bin/python -m langflow run"
196+
DEPENDENCY_LIST=""
197+
;;
191198
esac
192199
SERVICE_NAME="$1"
193200
RESTART="always"
@@ -203,6 +210,10 @@ reassign_values (){
203210
SERVICE_TYPE="simple"
204211
RESTART="on-failure"
205212
EXEC_START="${DOTNET_RUN} ${WORK_DIR}${EXEC_FILE} standalone=true"
213+
elif [[ "${SERVICE_NAME}" = "langflow" ]]; then
214+
SERVICE_TYPE="simple"
215+
RESTART="on-failure"
216+
EXEC_START="${WORK_DIR}${EXEC_FILE} --host ${APP_URLS#http://} --port ${SERVICE_PORT} --backend-only"
206217
else
207218
SERVICE_TYPE="notify"
208219
EXEC_START="${DOTNET_RUN} ${WORK_DIR}${EXEC_FILE} --urls=${APP_URLS}:${SERVICE_PORT} --pathToConf=${PATH_TO_CONF} \

install/deb/debian/control

+11
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Depends: debconf, openssl,
2323
{{product}}-files (= {{package_header_tag_version}}),
2424
{{product}}-files-services (= {{package_header_tag_version}}),
2525
{{product}}-healthchecks (= {{package_header_tag_version}}),
26+
{{product}}-langflow (= {{package_header_tag_version}}),
2627
{{product}}-login (= {{package_header_tag_version}}),
2728
{{product}}-migration-runner (= {{package_header_tag_version}}),
2829
{{product}}-notify (= {{package_header_tag_version}}),
@@ -226,3 +227,13 @@ Multi-Arch: foreign
226227
Depends: {{product}}-common (= {{package_header_tag_version}}), ${misc:Depends}, ${shlibs:Depends}
227228
Description: {{product}}-plugins
228229
This package includes plugins that extend DocSpace functionality
230+
231+
Package: {{product}}-langflow
232+
Architecture: all
233+
Multi-Arch: foreign
234+
Depends: {{product}}-proxy, ${misc:Depends}, ${shlibs:Depends}
235+
Description: {{product}}-langflow
236+
Langflow is a tool for building and deploying AI agents and workflows.
237+
It offers a visual authoring experience and an API server to integrate
238+
agents into any application. It supports major LLMs, vector databases,
239+
and AI tools.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
debian/build/langflow/.venv/* var/www/{{product}}/services/langflow
3+
debian/build/langflow/src/frontend/build/* etc/openresty/html/langflow
4+
debian/build/langflow/src/frontend/langflow.conf etc/openresty/includes

install/deb/debian/rules

+3-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ check_archives:
4747
@$(call extract_archive,${SOURCE_PATH}/DocStore.tar.gz,DocStore,-C ${SERVER_PATH}/products/ASC.Files/Server)
4848
@$(call extract_archive,${SOURCE_PATH}/campaigns.tar.gz,campaigns,-C ${BUILD_PATH})
4949
@$(call extract_archive,${SOURCE_PATH}/plugins.tar.gz,plugins,-C ${BUILD_PATH})
50+
@$(call extract_archive,${SOURCE_PATH}/langflow.tar.gz,langflow,-C ${BUILD_PATH})
5051
@echo "Source archives check passed."
5152

5253
override_dh_auto_build: check_archives
@@ -56,7 +57,8 @@ override_dh_auto_build: check_archives
5657
bash build-frontend.sh -sp ${BUILD_PATH} -di "false"; \
5758
bash build-backend.sh -sp ${BUILD_PATH}; \
5859
bash publish-backend.sh -sp ${SERVER_PATH}; \
59-
bash plugins-build.sh ${BUILD_PATH}/plugins
60+
bash plugins-build.sh ${BUILD_PATH}/plugins; \
61+
bash langflow-build.sh ${BUILD_PATH}/langflow
6062

6163
find ${BUILDTOOLS_PATH}/install/common -type f -exec rename -f -v "s/product([^\/]*)$$/${PRODUCT}\$$1/g" {} ';'
6264

install/rpm/SPECS/build.spec

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ bash install/common/build-frontend.sh --srcpath %{_builddir} -di "false"
88
bash install/common/build-backend.sh --srcpath %{_builddir}
99
bash install/common/publish-backend.sh --srcpath %{_builddir}/server
1010
bash install/common/plugins-build.sh %{_builddir}/plugins
11+
bash install/common/langflow-build.sh %{_builddir}/langflow
1112

1213
rename -f -v "s/product([^\/]*)$/%{product}\$1/g" install/common/*
1314

install/rpm/SPECS/files.spec

+12-1
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@
5454
%files proxy
5555
%defattr(-, onlyoffice, onlyoffice, -)
5656
%config %{_sysconfdir}/openresty/includes/*
57+
%exclude %{_sysconfdir}/openresty/includes/langflow.conf
5758
%config %{_sysconfdir}/openresty/conf.d/*
58-
%config %{_sysconfdir}/openresty/html/*
59+
%{_sysconfdir}/openresty/html/*.html
5960
%attr(744, root, root) %{_bindir}/%{product}-ssl-setup
6061
%config %{_sysconfdir}/onlyoffice/%{product}/openresty/nginx.conf.template
6162
%dir %{_sysconfdir}/onlyoffice/
@@ -151,3 +152,13 @@
151152
%{_var}/www/onlyoffice/Data/Studio/webplugins/
152153
%dir %{_var}/www/onlyoffice/Data/
153154
%dir %{_var}/www/onlyoffice/Data/Studio/
155+
156+
%files langflow
157+
%defattr(-, onlyoffice, onlyoffice, -)
158+
%{buildpath}/services/langflow/
159+
%{_sysconfdir}/openresty/html/
160+
%{_sysconfdir}/openresty/includes/langflow.conf
161+
/usr/lib/systemd/system/%{product}-langflow.service
162+
%dir %{buildpath}/services/
163+
%dir %{_sysconfdir}/openresty/
164+
%dir %{_sysconfdir}/openresty/includes/

install/rpm/SPECS/install.spec

+5-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Backup/"
1515
mkdir -p "%{buildroot}%{buildpath}/services/ASC.Data.Backup.BackgroundTasks/"
1616
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ClearEvents/"
1717
mkdir -p "%{buildroot}%{buildpath}/services/ASC.ApiSystem/"
18+
mkdir -p "%{buildroot}%{buildpath}/services/langflow/"
1819
mkdir -p "%{buildroot}%{buildpath}/public/"
1920
mkdir -p "%{buildroot}%{buildpath}/public/campaigns/"
2021
mkdir -p "%{buildroot}%{buildpath}/products/ASC.People/server/"
@@ -33,7 +34,7 @@ mkdir -p "%{buildroot}%{_var}/log/onlyoffice/%{product}/"
3334
mkdir -p "%{buildroot}%{_var}/www/onlyoffice/Data/Studio/webplugins/"
3435
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/includes/"
3536
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/conf.d/"
36-
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/html/"
37+
mkdir -p "%{buildroot}%{_sysconfdir}/openresty/html/langflow/"
3738
mkdir -p "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/openresty"
3839
mkdir -p "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/.private/"
3940
mkdir -p "%{buildroot}%{_sysconfdir}/fluent-bit/"
@@ -80,3 +81,6 @@ cp -rf %{_builddir}/buildtools/config/nginx/includes/*.conf "%{buildroot}%{_sysc
8081
cp -rf %{_builddir}/buildtools/config/nginx/html/*.html "%{buildroot}%{_sysconfdir}/openresty/html/"
8182
cp -rf %{_builddir}/buildtools/config/* "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/"
8283
cp -rf %{_builddir}/buildtools/install/docker/config/fluent-bit.conf "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/"
84+
cp -rf %{_builddir}/langflow/.venv/* "%{buildroot}%{buildpath}/services/langflow/"
85+
cp -rf %{_builddir}/langflow/src/frontend/build/* "%{buildroot}%{_sysconfdir}/openresty/html/langflow/"
86+
cp -rf %{_builddir}/langflow/src/frontend/langflow.conf "%{buildroot}%{_sysconfdir}/openresty/includes/"

install/rpm/SPECS/package.spec

+13
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,16 @@ AutoReqProv: no
262262
BuildArch: noarch
263263
%description plugins
264264
This package includes plugins that extend DocSpace functionality
265+
266+
%package langflow
267+
Packager: %{packager}
268+
Summary: Langflow
269+
Group: Applications/Internet
270+
Requires: %name-proxy = %version-%release
271+
AutoReqProv: no
272+
BuildArch: noarch
273+
%description langflow
274+
Langflow is a tool for building and deploying AI agents and workflows.
275+
It offers a visual authoring experience and an API server to integrate
276+
agents into any application. It supports major LLMs, vector databases,
277+
and AI tools.

install/rpm/SPECS/product.spec

+17-14
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@ Vendor: Ascensio System SIA
2020
Packager: %{packager}
2121
License: AGPLv3
2222

23-
Source0: https://github.com/ONLYOFFICE/%{product}-buildtools/archive/master.tar.gz#/buildtools.tar.gz
24-
Source1: https://github.com/ONLYOFFICE/%{product}-client/archive/master.tar.gz#/client.tar.gz
25-
Source2: https://github.com/ONLYOFFICE/%{product}-server/archive/master.tar.gz#/server.tar.gz
26-
Source3: https://github.com/ONLYOFFICE/document-templates/archive/main/community-server.tar.gz#/DocStore.tar.gz
27-
Source4: https://github.com/ONLYOFFICE/ASC.Web.Campaigns/archive/master.tar.gz#/campaigns.tar.gz
28-
Source5: https://github.com/ONLYOFFICE/%{product}-plugins/archive/master.tar.gz#/plugins.tar.gz
29-
Source6: %{product}.rpmlintrc
23+
Source0: %{product}.rpmlintrc
24+
Source1: https://github.com/ONLYOFFICE/%{product}-buildtools/archive/master.tar.gz#/buildtools.tar.gz
25+
Source2: https://github.com/ONLYOFFICE/%{product}-client/archive/master.tar.gz#/client.tar.gz
26+
Source3: https://github.com/ONLYOFFICE/%{product}-server/archive/master.tar.gz#/server.tar.gz
27+
Source4: https://github.com/ONLYOFFICE/document-templates/archive/main/community-server.tar.gz#/DocStore.tar.gz
28+
Source5: https://github.com/ONLYOFFICE/ASC.Web.Campaigns/archive/master.tar.gz#/campaigns.tar.gz
29+
Source6: https://github.com/ONLYOFFICE/%{product}-plugins/archive/master.tar.gz#/plugins.tar.gz
30+
Source7: https://github.com/ONLYOFFICE/langflow/archive/master.tar.gz#/langflow.tar.gz
3031

3132
BuildRequires: nodejs >= 18.0
3233
BuildRequires: yarn
@@ -46,6 +47,7 @@ Requires: %name-doceditor = %version-%release
4647
Requires: %name-files = %version-%release
4748
Requires: %name-files-services = %version-%release
4849
Requires: %name-healthchecks = %version-%release
50+
Requires: %name-langflow = %version-%release
4951
Requires: %name-login = %version-%release
5052
Requires: %name-migration-runner = %version-%release
5153
Requires: %name-notify = %version-%release
@@ -72,13 +74,14 @@ predefined permissions.
7274
%prep
7375
rm -rf %{_rpmdir}/%{_arch}/%{name}-* %{_builddir}/*
7476

75-
tar -xf %{SOURCE0} --transform='s,^[^/]\+,buildtools,' -C %{_builddir}
76-
tar -xf %{SOURCE1} --transform='s,^[^/]\+,client,' -C %{_builddir}
77-
tar -xf %{SOURCE2} --transform='s,^[^/]\+,server,' -C %{_builddir}
78-
tar -xf %{SOURCE3} --transform='s,^[^/]\+,DocStore,' -C %{_builddir}/server/products/ASC.Files/Server
79-
tar -xf %{SOURCE4} --transform='s,^[^/]\+,campaigns,' -C %{_builddir}
80-
tar -xf %{SOURCE5} --transform='s,^[^/]\+,plugins,' -C %{_builddir}
81-
cp %{SOURCE6} .
77+
cp %{SOURCE0} .
78+
tar -xf %{SOURCE1} --transform='s,^[^/]\+,buildtools,' -C %{_builddir}
79+
tar -xf %{SOURCE2} --transform='s,^[^/]\+,client,' -C %{_builddir}
80+
tar -xf %{SOURCE3} --transform='s,^[^/]\+,server,' -C %{_builddir}
81+
tar -xf %{SOURCE4} --transform='s,^[^/]\+,DocStore,' -C %{_builddir}/server/products/ASC.Files/Server
82+
tar -xf %{SOURCE5} --transform='s,^[^/]\+,campaigns,' -C %{_builddir}
83+
tar -xf %{SOURCE6} --transform='s,^[^/]\+,plugins,' -C %{_builddir}
84+
tar -xf %{SOURCE7} --transform='s,^[^/]\+,langflow,' -C %{_builddir}
8285

8386
%include build.spec
8487

0 commit comments

Comments
 (0)