🚚 — 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
Этот коммит содержится в:
Luc Didry
2024-05-14 09:49:47 +02:00
родитель 90814564ff
Коммит f43717aaa0
7 изменённых файлов: 614 добавлений и 79 удалений

109
MOSTLYMATTER_HOW_TO.md Обычный файл
Просмотреть файл

@@ -0,0 +1,109 @@
# How to use Framasofts patch to compile Mostlymatter
## Setup the repository
```bash
git clone https://framagit.org/framasoft/framateam/mostlymatter.git
cd mostlymatter
git remote add upstream https://github.com/mattermost/mattermost.git
```
## New version
Refresh you local repository.
```bash
git fetch -p --all
```
Set some env vars.
```bash
export NEW_VERSION=10.5.1
```
As you will need to cherry-pick some commits (the main fork commit and a fix-patch commit), you will need to go on an old release branch.
```bash
export OLD_VERSION=10.5.0
```
```bash
export BASE_VERSION=$(echo "$NEW_VERSION" | sed -e "s/\.[^.]\+$//")
git checkout "release-$OLD_VERSION"
git log --graph --abbrev-commit --date=relative \
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr by %an)%Creset' \
--max-count=3
```
Note the commits youll need (usually, the two first commits).
Go to the main branch of the version you want and reset the code to this version, then create a new branch with the version you want to compile from the main branch of this version.
```bash
git branch | grep -q "release-$BASE_VERSION\$" &&
git checkout "release-$BASE_VERSION" ||
git checkout -b "release-$BASE_VERSION" "upstream/release-$BASE_VERSION"
git reset --hard "v$NEW_VERSION"
git checkout -b "release-$NEW_VERSION" "release-$BASE_VERSION"
```
Cherry-pick the commits (use the oldest first!).
```bash
for i in 4b3d29da 056a5f8c
do
git cherry-pick "$i"
done
```
If you compile a bugfix version (ex: `10.5.1`, using the commits of the `10.5.0` version), you should be just fine
But if you compile a new version (ex: `10.6.0`), there is a lot of chances that you need to fix the `limitless.patch` file.
To test the patch:
```bash
git apply limitless.patch &&
echo -e "\033[0;36mPatch applied successfully\033[0;36m" &&
rm -rf server/cmd/mostlymatter &&
git checkout -- server
```
If the patch does not apply, fix it. The fix is usually those steps:
- remove the `server/.golangci.yml` part of the patch
- manually apply this part (its mostly replacing `mattermost` by `mostlymatter` in this file)
- `git apply limitless.patch`
- `git add server`
- `git diff --cached > limitless.patch`
- `git restore --staged -- server`
- `git checkout -- server`
- `rm -rf server/cmd/mostlymatter`
- `git add limitless.patch`
- `git commit --amend`
Now, you can retest the patch:
```bash
git apply limitless.patch &&
echo -e "\033[0;36mPatch applied successfully\033[0;36m" &&
rm -rf server/cmd/mostlymatter &&
git checkout -- server
```
Tag the new version (`limitless` is needed in the tag name for the CI to run) and push to Gitlab:
```bash
git tag "v$NEW_VERSION-limitless" -m "v$NEW_VERSION-limitless"
git push -u origin "release-$NEW_VERSION"
```
The CI will compile mostlymatter. Note that it will not be available as an artifact.
You can use the step of [.gitlab-ci.yml](.gitlab-ci.yml) to compile Mostlymatter without using the CI.
## Publish
The secrets are set in GitLab CI variables :
- `MINISIG_KEY`
- `MINISIG_PWD`
- `DEPLOYEMENT_KEY` (ssh private key encoded with base64)
- `DEPLOYEMENT_USER`
- `DEPLOYEMENT_HOST`
The CI will publish the compiled mostlymatter binary through sftp.