Files
mostlymatter/.gitlab-ci.yml
Luc Didry f43717aaa0 🚚 — Officially fork Mattermost
- 👷🩹 — Add limitless patch and GitlabCI recipe
- 📝 — Add instructions on how to use the patch from Framasoft
- 💄 — Add logo, thanks to Geoffrey Dorne
- 👷 — ARM64 cross-compilation in CI
2025-06-19 09:47:16 +02:00

126 строки
4.6 KiB
YAML

---
image: debian:bookworm
stages:
- build
- publish
variables:
DEBIAN_FRONTEND: noninteractive
PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/usr/local/go/bin
build:
stage: build
before_script:
- mkdir artifacts
- apt update
- apt install -qq -y build-essential libpng-dev libpng16-16 wget curl git
- ulimit -n 8096
- cd /tmp
- wget -q "https://go.dev/dl/go1.22.3.linux-amd64.tar.gz"
- >
echo \
"8920ea521bad8f6b7bc377b4824982e011c19af27df88a815e3586ea895f1b36 go1.22.3.linux-amd64.tar.gz" \
> go1.22.3.linux-amd64.tar.gz.sha256sum
- sha256sum -c go1.22.3.linux-amd64.tar.gz.sha256sum
- tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz
- cd -
script:
- >
sed -e "s/^\(BUILD_NUMBER\) ?= .*/\1 = $CI_JOB_ID/" \
-e "s/^\(BUILD_HASH = \).*/\1$(git rev-parse HEAD)/" \
-i server/Makefile
- git apply limitless.patch
- cd server
- make validate-go-version
- make setup-go-work
- make build-linux-arm64
- make build-linux-amd64
- cd -
- >
mv server/bin/mostlymatter \
"mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)"
- >
mv server/bin/linux_arm64/mostlymatter \
"mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)"
cache:
key: "$CI_COMMIT_TAG"
policy: push
paths:
- "mostlymatter-*"
rules:
- if: '$CI_COMMIT_TAG =~ /limitless/'
# Release
publish:
stage: publish
image: framasoft/upload-packages:latest
needs:
- build
before_script:
- mkdir -p ~/.minisign
- chmod 700 ~/.minisign
- >
echo 'untrusted comment: minisign encrypted secret key' \
> ~/.minisign/minisign.key
- echo "$MINISIG_KEY" >> ~/.minisign/minisign.key
- chmod 600 ~/.minisign/minisign.key
- >
echo "$MINISIG_PWD" |
minisign -Sm "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)"
- >
sha512sum "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)" \
> "mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless).sha512"
- >
echo "$MINISIG_PWD" |
minisign -Sm "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)"
- >
sha512sum "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)" \
> "mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless).sha512"
script:
- eval $(ssh-agent -s)
- ssh-add <(echo "${DEPLOYEMENT_KEY}" | base64 --decode -i)
- >
echo "put mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless)" |
sftp -o "VerifyHostKeyDNS yes" \
-o "StrictHostKeyChecking accept-new" \
${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/
- >
echo "put mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless).minisig" |
sftp -o "VerifyHostKeyDNS yes" \
-o "StrictHostKeyChecking accept-new" \
${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/
- >
echo "put mostlymatter-amd64-$(basename "$CI_COMMIT_TAG" -limitless).sha512" |
sftp -o "VerifyHostKeyDNS yes" \
-o "StrictHostKeyChecking accept-new" \
${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/
- >
echo "put mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless)" |
sftp -o "VerifyHostKeyDNS yes" \
-o "StrictHostKeyChecking accept-new" \
${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/
- >
echo "put mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless).minisig" |
sftp -o "VerifyHostKeyDNS yes" \
-o "StrictHostKeyChecking accept-new" \
${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/
- >
echo "put mostlymatter-arm64-$(basename "$CI_COMMIT_TAG" -limitless).sha512" |
sftp -o "VerifyHostKeyDNS yes" \
-o "StrictHostKeyChecking accept-new" \
${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:public/
- >
cat <<EOF
================================================================================================
== mostlymatter-$(basename "$CI_COMMIT_TAG" -limitless) published on https://packages.framasoft.org/projects/mostlymatter/ ==
================================================================================================
EOF
cache:
key: "$CI_COMMIT_TAG"
policy: pull
paths:
- "mostlymatter-amd64-$CI_COMMIT_TAG"
- "mostlymatter-arm64-$CI_COMMIT_TAG"
rules:
- if: '$DEPLOYEMENT_HOST && $DEPLOYEMENT_USER && $DEPLOYEMENT_KEY && $MINISIG_KEY && $MINISIG_PWD && $CI_COMMIT_TAG =~ /limitless/'