wekan/snapcraft.yaml
2026-01-24 07:25:02 +02:00

215 lines
6.9 KiB
YAML

name: wekan
version: '8.24'
base: core24
summary: Open Source kanban
description: |
WeKan ® is an Open Source and collaborative kanban board application.
Whether you're maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
Depending on target environment, some configuration settings might need to be adjusted.
For full list of configuration options call:
$ wekan.help
confinement: strict
grade: stable
# Metadata fields
title: Wekan
contact: https://github.com/wekan/wekan/issues
license: MIT
donation: https://wekan.fi/commercial-support/
issues: https://github.com/wekan/wekan/issues
source-code: https://github.com/wekan/wekan
website: https://wekan.fi
# Expanded platforms for multi-arch support
platforms:
amd64:
build-on: [amd64]
build-for: amd64
arm64:
build-on: [arm64]
build-for: arm64
s390x:
build-on: [s390x]
build-for: s390x
plugs:
mongodb-plug:
interface: content
target: $SNAP_DATA/shared
hooks:
configure:
plugs: [network, network-bind]
slots:
mongodb-slot:
interface: content
write:
- $SNAP_DATA/share
apps:
wekan:
command: ./bin/wekan-control
daemon: simple
plugs: [network, network-bind]
mongodb:
command: ./bin/mongodb-control
daemon: simple
plugs: [network, network-bind]
caddy:
command: ./bin/caddy-control
daemon: simple
plugs: [network, network-bind]
help:
command: ./bin/wekan-help
database-backup:
command: ./bin/mongodb-backup
plugs: [network, network-bind]
database-list-backups:
command: ./bin/database-list-backups
database-restore:
command: ./bin/mongodb-restore
plugs: [network, network-bind]
parts:
mongodb:
source:
- on amd64: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-7.0.28.tgz
- on arm64: https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-ubuntu2204-7.0.28.tgz
- on s390x: https://fastdl.mongodb.org/linux/mongodb-linux-s390x-ubuntu2204-7.0.28.tgz
plugin: dump
stage-packages:
- libssl3
- libcurl4
- libstemmer0d
- zlib1g
- libsnappy1v5
- libyaml-cpp0.8
- libpcre3
- libpcrecpp0v5
- libboost-system1.74.0
- libboost-iostreams1.74.0
- libboost-filesystem1.74.0
- libboost-program-options1.74.0
- libgoogle-perftools4
stage: [bin, usr]
prime: [bin, usr]
mongosh:
source:
- on amd64: https://downloads.mongodb.com/compass/mongosh-2.5.3-linux-x64.tgz
- on arm64: https://downloads.mongodb.com/compass/mongosh-2.5.3-linux-arm64.tgz
- on s390x: https://downloads.mongodb.com/compass/mongosh-2.5.3-linux-s390x.tgz
plugin: dump
mongotools:
source:
- on amd64: https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2404-x86_64-100.12.2.tgz
- on arm64: https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2404-arm64-100.12.2.tgz
- on s390x: https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2404-s390x-100.12.2.tgz
plugin: dump
wekan:
source: .
plugin: npm
npm-node-version: 14.21.3
npm-include-node: true
build-packages:
- build-essential
- ca-certificates
- apt-utils
- python3
- g++
- capnproto
- curl
- wget
- unzip
- execstack
stage-packages:
- libfontconfig1
override-build: |
# Detect target architecture
case "$SNAPCRAFT_TARGET_ARCH" in
amd64) NODE_ARCH="x64"; WEKAN_ARCH="amd64" ;;
arm64) NODE_ARCH="arm64"; WEKAN_ARCH="arm64" ;;
s390x) NODE_ARCH="s390x"; WEKAN_ARCH="s390x" ;;
*) echo "Unsupported architecture"; exit 1 ;;
esac
echo "Building Wekan for $WEKAN_ARCH"
# Clean and prepare build directory
rm -rf .build
mkdir .build
cd .build
# Download specific Wekan architecture bundle
wget https://github.com/wekan/wekan/releases/download/v8.24/wekan-8.24-${WEKAN_ARCH}.zip
unzip wekan-8.24-${WEKAN_ARCH}.zip
rm wekan-8.24-${WEKAN_ARCH}.zip
cd ..
# Download specific Node.js architecture binary
wget https://github.com/wekan/node-v14-esm/releases/download/v14.21.4/node-v14.21.4-linux-${NODE_ARCH}.tar.xz
tar -xf node-v14.21.4-linux-${NODE_ARCH}.tar.xz
# Install Node binary and bundle to snap directory
mkdir -p $SNAPCRAFT_PART_INSTALL/bin
cp -p node-v14.21.4-linux-${NODE_ARCH}/bin/node $SNAPCRAFT_PART_INSTALL/bin/
cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
rm -rf node-v14.21.4-linux-${NODE_ARCH} .build
organize:
README: README.wekan
prime:
- -lib/node_modules/weka*
helpers:
source: snap-src
plugin: dump
caddy:
plugin: nil
build-packages:
- debian-keyring
- debian-archive-keyring
- apt-transport-https
- gnupg
- curl
override-build: |
# 1. Setup Caddy stable repository
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
# 2. Install latest Caddy
apt update
apt install -y caddy
# 3. Setup snap structure
mkdir -p $SNAPCRAFT_PART_INSTALL/bin
mkdir -p $SNAPCRAFT_PART_INSTALL/etc
mkdir -p $SNAPCRAFT_PART_INSTALL/license
cp /usr/bin/caddy $SNAPCRAFT_PART_INSTALL/bin/
chmod +x $SNAPCRAFT_PART_INSTALL/bin/caddy
echo "Caddy Apache 2.0: https://github.com/caddyserver/caddy/blob/master/LICENSE" > $SNAPCRAFT_PART_INSTALL/license/CADDY_LICENSE
cat > $SNAPCRAFT_PART_INSTALL/etc/Caddyfile << 'EOF'
:8080 {
reverse_proxy localhost:3000
}
EOF
stage:
- bin/caddy
- etc/Caddyfile
- license/CADDY_LICENSE