mirror of
https://github.com/wekan/wekan.git
synced 2026-01-24 18:26:10 +01:00
Docker and Snap for Linux amd64/arm64/s390x. Part 3.
Thanks to xet7 !
This commit is contained in:
parent
82097d622b
commit
b2c7c7f55b
2 changed files with 69 additions and 113 deletions
|
|
@ -7,10 +7,17 @@ if [ $# -ne 1 ]
|
|||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=$1
|
||||
|
||||
# Ensure you are using the correct builder
|
||||
docker buildx use mybuilder
|
||||
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64,linux/s390x \
|
||||
-t wekan/wekan:v$1 \
|
||||
-t wekanteam/wekan:v${VERSION} \
|
||||
-t wekanteam/wekan:latest \
|
||||
-t quay.io/wekan/wekan:v${VERSION} \
|
||||
-t quay.io/wekan/wekan:latest \
|
||||
-t ghcr.io/wekan/wekan:v${VERSION} \
|
||||
-t ghcr.io/wekan/wekan:latest \
|
||||
--push .
|
||||
|
|
|
|||
173
snapcraft.yaml
173
snapcraft.yaml
|
|
@ -4,7 +4,6 @@ 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:
|
||||
|
|
@ -22,11 +21,17 @@ issues: https://github.com/wekan/wekan/issues
|
|||
source-code: https://github.com/wekan/wekan
|
||||
website: https://wekan.fi
|
||||
|
||||
# Use platforms instead of architectures for core24 base
|
||||
# Expanded platforms for multi-arch support
|
||||
platforms:
|
||||
amd64:
|
||||
build-on: amd64
|
||||
build-on: [amd64]
|
||||
build-for: amd64
|
||||
arm64:
|
||||
build-on: [arm64]
|
||||
build-for: arm64
|
||||
s390x:
|
||||
build-on: [s390x]
|
||||
build-for: s390x
|
||||
|
||||
plugs:
|
||||
mongodb-plug:
|
||||
|
|
@ -35,9 +40,7 @@ plugs:
|
|||
|
||||
hooks:
|
||||
configure:
|
||||
plugs:
|
||||
- network
|
||||
- network-bind
|
||||
plugs: [network, network-bind]
|
||||
|
||||
slots:
|
||||
mongodb-slot:
|
||||
|
|
@ -75,10 +78,12 @@ apps:
|
|||
command: ./bin/mongodb-restore
|
||||
plugs: [network, network-bind]
|
||||
|
||||
|
||||
parts:
|
||||
mongodb:
|
||||
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-7.0.28.tgz
|
||||
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
|
||||
|
|
@ -94,22 +99,23 @@ parts:
|
|||
- libboost-filesystem1.74.0
|
||||
- libboost-program-options1.74.0
|
||||
- libgoogle-perftools4
|
||||
stage:
|
||||
- bin
|
||||
- usr
|
||||
prime:
|
||||
- bin
|
||||
- usr
|
||||
stage: [bin, usr]
|
||||
prime: [bin, usr]
|
||||
|
||||
mongosh:
|
||||
source: https://downloads.mongodb.com/compass/mongosh-2.5.3-linux-x64.tgz
|
||||
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: https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2404-x86_64-100.12.2.tgz
|
||||
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
|
||||
|
|
@ -126,91 +132,45 @@ parts:
|
|||
- wget
|
||||
- unzip
|
||||
- execstack
|
||||
- nodejs
|
||||
- npm
|
||||
stage-packages:
|
||||
- libfontconfig1
|
||||
override-build: |
|
||||
echo "Cleaning environment first"
|
||||
#rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
|
||||
# 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
|
||||
#echo "Using http npm packages so speedup install process https://stackoverflow.com/questions/39760113/callback-called-more-than-once-while-running-npm-install"
|
||||
#echo "registry=http://registry.npmjs.org/" > ~/.npmrc
|
||||
#echo "Installing npm, node-gyp, node-pre-gyp, fibers"
|
||||
#npm -g install n --unsafe-perm
|
||||
#n 14.21.4
|
||||
#npm -g install node-gyp --unsafe-perm
|
||||
#npm -g install node-pre-gyp --unsafe-perm
|
||||
#npm -g install fibers --unsafe-perm
|
||||
##echo "Installing meteor"
|
||||
##curl https://install.meteor.com/ -o install_meteor.sh
|
||||
##chmod +x install_meteor.sh
|
||||
##sh install_meteor.sh
|
||||
##rm install_meteor.sh
|
||||
#npm -g install meteor --unsafe-perm --allow-superuser
|
||||
#rm -rf .build
|
||||
##chmod u+w *.json
|
||||
#npm install --unsafe-perm
|
||||
##npm install
|
||||
##meteor build .build --directory --allow-superuser
|
||||
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
|
||||
##rm -rf .build/bundle/programs/web.browser.legacy
|
||||
# Change to directory .build/bundle/programs/server
|
||||
##cd .build/bundle/programs/server
|
||||
##chmod u+w *.json
|
||||
#npm install --unsafe-perm
|
||||
##npm install
|
||||
##cd node_modules/fibers
|
||||
##node build.js
|
||||
##cd ../../../../../..
|
||||
# Cleanup
|
||||
mkdir .build
|
||||
cd .build
|
||||
wget https://github.com/wekan/wekan/releases/download/v8.24/wekan-8.24-amd64.zip
|
||||
unzip wekan-8.24-amd64.zip
|
||||
rm wekan-8.24-amd64.zip
|
||||
|
||||
# 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 ..
|
||||
##cd .build/bundle
|
||||
##find . -type d -name '*-garbage*' | xargs rm -rf
|
||||
##find . -name '*phantom*' | xargs rm -rf
|
||||
##find . -name '.*.swp' | xargs rm -f
|
||||
##find . -name '*.swp' | xargs rm -f
|
||||
##cd ../..
|
||||
# Add fibers multi arch
|
||||
#cd .build/bundle/programs/server/node_modules/fibers/bin
|
||||
#curl https://releases.wekan.team/fibers-multi.7z -o fibers-multi.7z
|
||||
#7z x fibers-multi.7z
|
||||
#rm fibers-multi.7z
|
||||
#cd ../../../../../../..
|
||||
# Copy to Snap
|
||||
wget https://github.com/wekan/node-v14-esm/releases/download/v14.21.4/node-v14.21.4-linux-x64.tar.xz
|
||||
tar -xf node-v14.21.4-linux-x64.tar.xz node-v14.21.4-linux-x64/bin/node
|
||||
rm node-v14.21.4-linux-x64.tar.xz
|
||||
mkdir $SNAPCRAFT_PART_INSTALL/bin
|
||||
cp -p node-v14.21.4-linux-x64/bin/node $SNAPCRAFT_PART_INSTALL/bin/
|
||||
rm -rf node-v14.21.4-linux-x64
|
||||
|
||||
# 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 -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
|
||||
|
||||
|
||||
# Delete phantomjs that is in accounts-lockout
|
||||
#rm -rf $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/lucasantoniassi_accounts-lockout/node_modules/phantomjs-prebuilt
|
||||
# Delete temporary files
|
||||
#rm -f $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/tar/lib/.mkdir.js.swp
|
||||
#rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
|
||||
#rm -f $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-gyp/node_modules/tar/lib/.mkdir.js.swp
|
||||
# Meteor 1.8.x additional .swp remove
|
||||
#rm -f $SNAPCRAFT_PART_INSTALL/programs/server/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
|
||||
# Delete fibers for other archs
|
||||
#rm -rf $SNAPCRAFT_PART_INSTALL/programs/server/node_modules/fibers/bin/linux-ia32*
|
||||
# ostrio tmp remove
|
||||
#rm -rf $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/ostrio_files/node_modules/request-libcurl/.node_modules-garbage*
|
||||
|
||||
rm -rf node-v14.21.4-linux-${NODE_ARCH} .build
|
||||
|
||||
organize:
|
||||
README: README.wekan
|
||||
prime:
|
||||
- -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
|
||||
- -lib/node_modules/weka*
|
||||
|
||||
helpers:
|
||||
|
|
@ -226,41 +186,30 @@ parts:
|
|||
- gnupg
|
||||
- curl
|
||||
override-build: |
|
||||
# Add Caddy repository
|
||||
echo "Installing Caddy 2 from the official repository..."
|
||||
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /tmp/caddy-stable-archive-keyring.gpg
|
||||
mkdir -p /etc/apt/keyrings
|
||||
cp /tmp/caddy-stable-archive-keyring.gpg /etc/apt/keyrings/
|
||||
echo "deb [signed-by=/etc/apt/keyrings/caddy-stable-archive-keyring.gpg] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" > /etc/apt/sources.list.d/caddy-stable.list
|
||||
# 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 -y install caddy
|
||||
apt install -y caddy
|
||||
|
||||
# Display installed Caddy version for confirmation
|
||||
echo "Installed Caddy version:"
|
||||
/usr/bin/caddy version
|
||||
|
||||
# Create directory structure in the snap
|
||||
# 3. Setup snap structure
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/bin
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/etc
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/license
|
||||
|
||||
# Copy Caddy binary
|
||||
cp /usr/bin/caddy $SNAPCRAFT_PART_INSTALL/bin/
|
||||
chmod +x $SNAPCRAFT_PART_INSTALL/bin/caddy
|
||||
|
||||
# Create license files manually since they don't exist in the package
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/license
|
||||
echo "Caddy is licensed under the Apache License 2.0. See https://github.com/caddyserver/caddy/blob/master/LICENSE" > $SNAPCRAFT_PART_INSTALL/license/CADDY_LICENSE
|
||||
|
||||
# Create a basic default Caddyfile for the snap
|
||||
mkdir -p $SNAPCRAFT_PART_INSTALL/etc
|
||||
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'
|
||||
# Default Caddyfile for Wekan
|
||||
# This is loaded by caddy-control script if no other config is provided
|
||||
|
||||
:8080 {
|
||||
reverse_proxy localhost:3000
|
||||
}
|
||||
EOF
|
||||
stage:
|
||||
- bin/caddy
|
||||
- license/CADDY_LICENSE
|
||||
- etc/Caddyfile
|
||||
- license/CADDY_LICENSE
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue