- 👷🩹 — 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
126 строки
4.6 KiB
YAML
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/'
|