2023-11-10 14:06:17 +01:00
|
|
|
# enable federation
|
|
|
|
|
|
|
|
copy the app.ini in this folder in custom/conf in the forgejo root directory.
|
|
|
|
Then change the paths in app.ini accordingly to you local environment.
|
|
|
|
|
2023-11-10 14:37:00 +01:00
|
|
|
```
|
|
|
|
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; ;
|
|
|
|
; ; SQLite Configuration
|
|
|
|
; ;
|
|
|
|
DB_TYPE = sqlite3
|
|
|
|
; defaults to data/gitea.db
|
|
|
|
PATH = /home/jem/repo/opensource/forgejo/data/gitea.db
|
|
|
|
; Query timeout defaults to: 500
|
|
|
|
SQLITE_TIMEOUT =
|
|
|
|
; defaults to sqlite database default (often DELETE), can be used to enable WAL mode. https://www.sqlite.org/pragma.html#pragma_journal_mode
|
|
|
|
SQLITE_JOURNAL_MODE =
|
|
|
|
HOST =
|
|
|
|
NAME =
|
|
|
|
USER =
|
|
|
|
PASSWD =
|
|
|
|
SCHEMA =
|
|
|
|
SSL_MODE = disable
|
|
|
|
LOG_SQL = false
|
|
|
|
|
|
|
|
|
|
|
|
[federation]
|
|
|
|
ENABLED = true
|
|
|
|
```
|
|
|
|
|
2023-10-27 14:33:14 +02:00
|
|
|
# build
|
|
|
|
|
|
|
|
```
|
2023-10-27 11:50:39 +02:00
|
|
|
TAGS="sqlite" make build generate-swagger
|
2023-10-27 14:33:14 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
# launch local
|
|
|
|
|
2023-11-23 17:02:36 +01:00
|
|
|
```bash
|
2023-12-15 14:45:20 +01:00
|
|
|
# cleanup
|
|
|
|
./gitea admin user delete --purge -id 8
|
|
|
|
./gitea admin user delete --purge -id 9
|
|
|
|
./gitea admin user delete --purge -id 10
|
|
|
|
|
2023-11-23 17:02:36 +01:00
|
|
|
# create a user
|
2023-12-16 18:38:31 +01:00
|
|
|
./gitea admin user create --username me --password me --email "buero@meissa.de" --admin
|
2023-12-15 14:45:20 +01:00
|
|
|
./gitea admin user create --username stargoose1 --random-password --email "stargoose1@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose2 --random-password --email "stargoose2@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose3 --random-password --email "stargoose3@meissa.de"
|
2023-12-16 18:38:31 +01:00
|
|
|
./gitea admin user create --username stargoose4 --random-password --email "stargoose4@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose5 --random-password --email "stargoose5@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose6 --random-password --email "stargoose6@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose7 --random-password --email "stargoose7@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose8 --random-password --email "stargoose8@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose9 --random-password --email "stargoose9@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose10 --random-password --email "stargoose10@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose11 --random-password --email "stargoose11@meissa.de"
|
|
|
|
./gitea admin user create --username stargoose12 --random-password --email "stargoose12@meissa.de"
|
2023-12-15 14:45:20 +01:00
|
|
|
./gitea admin user list
|
2023-11-23 17:02:36 +01:00
|
|
|
|
|
|
|
# create a token
|
2023-10-27 11:50:39 +02:00
|
|
|
./gitea admin user generate-access-token -u me -t token --scopes write:activitypub,write:repository,write:user
|
2023-11-23 17:02:36 +01:00
|
|
|
|
|
|
|
# create a repo
|
2023-12-19 11:32:57 +01:00
|
|
|
```bash
|
2023-11-23 17:02:36 +01:00
|
|
|
curl -X 'POST' \
|
|
|
|
'http://localhost:3000/api/v1/user/repos?token=ReplaceThisWithYourGeneratedToken' \
|
|
|
|
-H 'accept: application/json' \
|
|
|
|
-H 'Content-Type: application/json' \
|
|
|
|
-d '{
|
|
|
|
"auto_init": false,
|
|
|
|
"default_branch": "main",
|
|
|
|
"description": "none",
|
|
|
|
"gitignores": "none",
|
|
|
|
"issue_labels": "",
|
|
|
|
"license": "apache",
|
|
|
|
"name": "repo",
|
|
|
|
"private": true,
|
|
|
|
"readme": "This is a readme",
|
|
|
|
"template": false,
|
|
|
|
"trust_model": "default"
|
|
|
|
}'
|
2023-10-27 14:33:14 +02:00
|
|
|
```
|
|
|
|
|
2023-11-29 13:24:59 +01:00
|
|
|
# Datastructures handy for local tests
|
|
|
|
|
|
|
|
## Star activity
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"id": "http://localhost:3000/api/v1/activitypub/user-id/1/outbox/12345",
|
2024-01-04 18:04:46 +01:00
|
|
|
"type": "Like",
|
2023-12-29 16:30:58 +01:00
|
|
|
"actor": "https://federated-repo.prod.meissa.de/api/v1/activitypub/user-id/13",
|
2024-01-04 18:04:46 +01:00
|
|
|
"object": "http://localhost:3000/api/v1/activitypub/repository-id/2",
|
|
|
|
"startTime": "2014-12-31T23:00:00-08:00"
|
2023-11-29 13:24:59 +01:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2023-10-27 14:33:14 +02:00
|
|
|
# sync base branch
|
|
|
|
|
|
|
|
```
|
2023-11-06 09:27:41 +01:00
|
|
|
# setup a second repo for excosy implementation
|
|
|
|
git clone https://git.exozy.me/a/gitea.git exosy
|
|
|
|
|
2023-11-06 09:12:09 +01:00
|
|
|
# add remotes
|
|
|
|
git remote add forgejo git@codeberg.org:forgejo/forgejo.git
|
|
|
|
|
|
|
|
# rebase on top of forgejo/forge-development
|
2023-10-27 14:33:14 +02:00
|
|
|
git checkout forgejo-development
|
2023-11-07 18:01:52 +01:00
|
|
|
git fetch forgejo
|
2023-11-03 17:05:48 +01:00
|
|
|
git rebase --onto forgejo/forgejo-development
|
2023-10-27 14:33:14 +02:00
|
|
|
git push --force
|
|
|
|
|
|
|
|
git checkout forgejo-federated-star
|
|
|
|
git rebase forgejo-development
|
|
|
|
git push --force
|
2023-11-03 17:58:47 +01:00
|
|
|
|
2023-11-06 09:12:09 +01:00
|
|
|
# continue local development after rebase & force-push has happened
|
2023-11-03 17:58:47 +01:00
|
|
|
git reset --hard origin/forgejo-federated-star
|
2023-11-03 17:45:53 +01:00
|
|
|
```
|
2023-11-15 09:08:17 +01:00
|
|
|
|
|
|
|
# generate swagger api client
|
|
|
|
|
2023-11-17 17:19:08 +01:00
|
|
|
go run github.com/go-swagger/go-swagger/cmd/swagger@v0.30.5 generate client -f './templates/swagger/v1_json.tmpl' -c "modules/activitypub2" --operation 'activitypubPerson' --skip-models --existing-models 'github.com/go-ap/activitypub' --skip-validation
|
2023-11-29 09:21:54 +01:00
|
|
|
|
2023-11-30 16:00:39 +01:00
|
|
|
# Documentation for learn & reference
|
|
|
|
|
|
|
|
|
|
|
|
# Thoughts on testing
|
|
|
|
|
|
|
|
I would like to be able to quickly test a change in the repo code.
|
|
|
|
For that i need:
|
|
|
|
A test server with federation enabled
|
|
|
|
A test user
|
|
|
|
A test repo
|
|
|
|
A test auth token (?)
|
|
|
|
|
|
|
|
A test request as input value to the API
|
|
|
|
An expected result for comparison with the output value.
|
|
|
|
|
|
|
|
Tests that provide some examples are:
|
|
|
|
|
|
|
|
tests/integration/api_activitypub_person_test.go
|
|
|
|
|
|
|
|
tests/integration/api_token_test.go
|
|
|
|
|
|
|
|
maybe tests/integration/api_repo_test.go
|