Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate database backend to Xorm #474

Merged
merged 86 commits into from
Nov 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
1ed9793
move meddler datastore
6543 Oct 25, 2021
0d9703f
invent Storage Adapter
6543 Oct 25, 2021
e6c0c0a
nits
6543 Oct 25, 2021
97e2c39
add xorm
6543 Oct 25, 2021
6166f56
prepare models
6543 Oct 25, 2021
a7123d4
rm unrelated etc ...
6543 Oct 25, 2021
8a533ee
WIP
6543 Oct 25, 2021
6836eab
make it able to enable
6543 Oct 25, 2021
11e9a31
next
6543 Oct 25, 2021
5f3cee0
add xorm builder
6543 Oct 26, 2021
35c9ad7
implement interface: fist take
6543 Oct 26, 2021
2f6313f
add TODO
6543 Oct 26, 2021
e35c76c
Merge branch 'master' into xorm
6543 Oct 26, 2021
5c40a8c
adapt changes of #476
6543 Oct 26, 2021
d9de316
nits
6543 Oct 26, 2021
436da57
switch to xorm
6543 Oct 26, 2021
5111027
Merge branch 'master' into xorm
6543 Oct 31, 2021
89cab56
Merge branch 'master' into xorm
6543 Nov 3, 2021
a1b7f00
xCount() func return int64
6543 Nov 3, 2021
0601d51
wip: split related func into own files
6543 Nov 3, 2021
e59cc9d
rm Trim
6543 Nov 3, 2021
c462cfc
wip ....
6543 Nov 3, 2021
18628dd
wip: ...done
6543 Nov 3, 2021
0a87649
fix tests
6543 Nov 3, 2021
136b30c
better feed sort
6543 Nov 3, 2021
6eaf3b8
Xorm and json
6543 Nov 3, 2021
b5ce813
add LogWrapper
6543 Nov 3, 2021
5fc037d
fix xorm tags
6543 Nov 3, 2021
d00b0da
xorm.InsertMulti need at least one value or it will fail
6543 Nov 3, 2021
47ed9fa
xorm logger do not work atm - rm it for now
6543 Nov 3, 2021
25c4875
make sure procs do have an Id if they are pushed into queue
6543 Nov 3, 2021
b55a535
Fix ObjectCreation functions (they do use indirect value assigning)
6543 Nov 3, 2021
54545e1
remove togo dep
6543 Nov 3, 2021
cac41a2
add test func to create teststore
6543 Nov 3, 2021
115122c
mv builds_test
6543 Nov 3, 2021
df71510
switch db test in CI to xorm
6543 Nov 3, 2021
bb4a692
remove meddler tags from models
6543 Nov 3, 2021
9ebd42e
import mysql and postgress sql driver
6543 Nov 3, 2021
8d8fed0
use init* files to init databas driver
6543 Nov 3, 2021
c09095c
rm meddler stuff and move tests
6543 Nov 3, 2021
424fe04
migrate tests to xorm
6543 Nov 4, 2021
a8a5d38
rm meddler
6543 Nov 4, 2021
4021a21
upgrade github.com/lib/pq
6543 Nov 4, 2021
9878c68
update go-sqlite3
6543 Nov 4, 2021
b4a184c
add shema notes for xorm (UNIQUE, INDEX, ...)
6543 Nov 4, 2021
d36fe01
todo
6543 Nov 4, 2021
74b501a
fix del bug
6543 Nov 4, 2021
e89e79b
use test suite the right way
6543 Nov 4, 2021
27746f9
next
6543 Nov 4, 2021
adfbe19
we have a broken feed
6543 Nov 4, 2021
1b33c41
Update server/api/hook.go
6543 Nov 4, 2021
ee712ae
nits
6543 Nov 4, 2021
901a146
fix SecretUpdate
6543 Nov 4, 2021
88d3526
fix Task xorm tag
6543 Nov 4, 2021
7b87419
use AllCols() to ensure all fields get updated
6543 Nov 4, 2021
6387ce5
add db driver support check
6543 Nov 4, 2021
339d5f9
use xorm datastore direct
6543 Nov 4, 2021
142d457
datastore_xorm -> datastore
6543 Nov 4, 2021
5b52a5a
Merge branch 'master' into xorm
6543 Nov 4, 2021
67192be
use pure sql for now
6543 Nov 4, 2021
8c394c9
format
6543 Nov 4, 2021
d4e7579
fix CI
6543 Nov 4, 2021
2e7d1ef
fix test for postgres & mysql
6543 Nov 4, 2021
7ebcb4c
drop tables after test
6543 Nov 4, 2021
8d4cab1
add store.Migrate()
6543 Nov 4, 2021
38c5942
fix CI
6543 Nov 4, 2021
b553aba
Sync2
6543 Nov 4, 2021
e534f35
make new woodpecker instansec work
6543 Nov 4, 2021
f8bf661
xorm: right types for fields
6543 Nov 5, 2021
8f198ca
rm unrelated & need more thoughts (reqire login+"public" repo will ca…
6543 Nov 5, 2021
e512485
comments: format TODOs
6543 Nov 5, 2021
6a6c69d
TESTS: dont drop error & fix things
6543 Nov 5, 2021
1db68ef
new migration funcs (frame)
6543 Nov 5, 2021
39b38b7
WIP: legacy migrations ...
6543 Nov 5, 2021
8dff068
mysql
6543 Nov 8, 2021
ceb5712
sqlite
6543 Nov 10, 2021
eeaa910
postgres
6543 Nov 10, 2021
7730982
v0.15 only
6543 Nov 10, 2021
74e49ff
clean
6543 Nov 10, 2021
4220a4c
done
6543 Nov 11, 2021
c5567fc
rm db-log
6543 Nov 11, 2021
caf1c60
Apply suggestions from code review
6543 Nov 13, 2021
f9f43e3
Update server/model/repo.go
6543 Nov 13, 2021
bbaf850
Apply suggestions from code review
6543 Nov 13, 2021
3f42b16
format
6543 Nov 13, 2021
832b564
cover by unit test
6543 Nov 13, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ test-lib:
test: test-lib test-agent test-server

build-frontend:
(cd web/; yarn; yarn build)
(cd web/; yarn install --frozen-lockfile; yarn build)

build-server: build-frontend
$(DOCKER_RUN) go build -o dist/woodpecker-server github.com/woodpecker-ci/woodpecker/cmd/server
Expand Down
3 changes: 1 addition & 2 deletions agent/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ func NewRunner(workEngine rpc.Peer, f rpc.Filter, h string, state *State, backen
}

func (r *Runner) Run(ctx context.Context) error {
log.Debug().
Msg("request next execution")
log.Debug().Msg("request next execution")

meta, _ := metadata.FromOutgoingContext(ctx)
ctxmeta := metadata.NewOutgoingContext(context.Background(), meta)
Expand Down
6 changes: 3 additions & 3 deletions cli/exec/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,8 +188,8 @@ func metadataFromContext(c *cli.Context, axis matrix.Axis) frontend.Metadata {
Private: c.Bool("repo-private"),
},
Curr: frontend.Build{
Number: c.Int("build-number"),
Parent: c.Int("parent-build-number"),
Number: c.Int64("build-number"),
Parent: c.Int64("parent-build-number"),
Created: c.Int64("build-created"),
Started: c.Int64("build-started"),
Finished: c.Int64("build-finished"),
Expand All @@ -211,7 +211,7 @@ func metadataFromContext(c *cli.Context, axis matrix.Axis) frontend.Metadata {
},
},
Prev: frontend.Build{
Number: c.Int("prev-build-number"),
Number: c.Int64("prev-build-number"),
Created: c.Int64("prev-build-created"),
Started: c.Int64("prev-build-started"),
Finished: c.Int64("prev-build-finished"),
Expand Down
5 changes: 5 additions & 0 deletions cmd/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@ func loop(c *cli.Context) error {
if err != nil {
log.Fatal().Err(err).Msg("")
}
defer func() {
if err := store_.Close(); err != nil {
log.Error().Err(err).Msg("could not close store")
}
}()

setupEvilGlobals(c, store_, remote_)

Expand Down
30 changes: 25 additions & 5 deletions cmd/server/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ package main
import (
"fmt"
"os"
"strings"
"time"

"github.com/gin-gonic/gin"
Expand Down Expand Up @@ -50,20 +49,41 @@ func setupStore(c *cli.Context) (store.Store, error) {
datasource := c.String("datasource")
driver := c.String("driver")

if strings.ToLower(driver) == "sqlite3" {
if driver == "sqlite3" {
if datastore.SupportedDriver("sqlite3") {
log.Debug().Msgf("server has sqlite3 support")
} else {
log.Debug().Msgf("server was build with no sqlite3 support!")
}
}

if !datastore.SupportedDriver(driver) {
log.Fatal().Msgf("database driver '%s' not supported", driver)
}

if driver == "sqlite3" {
if new, err := fallbackSqlite3File(datasource); err != nil {
log.Fatal().Err(err).Msg("fallback to old sqlite3 file failed")
} else {
datasource = new
}
}

opts := &datastore.Opts{
opts := &store.Opts{
Driver: driver,
Config: datasource,
}
log.Trace().Msgf("setup datastore: %#v", opts)
return datastore.New(opts)
log.Trace().Msgf("setup datastore: %#v", *opts)
store, err := datastore.NewEngine(opts)
if err != nil {
log.Fatal().Err(err).Msg("could not open datastore")
}

if err := store.Migrate(); err != nil {
log.Fatal().Err(err).Msg("could not migrate datastore")
}

return store, nil
}

// TODO: convert it to a check and fail hard only function in v0.16.0 to be able to remove it in v0.17.0
Expand Down
10 changes: 3 additions & 7 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -24,31 +24,24 @@ require (
github.com/gogits/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85
github.com/golang-jwt/jwt/v4 v4.1.0
github.com/google/go-github/v39 v39.2.0
github.com/gorilla/mux v1.7.3 // indirect
github.com/gorilla/securecookie v1.1.1
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-retryablehttp v0.7.0 // indirect
github.com/hashicorp/go-version v1.3.0 // indirect
github.com/joho/godotenv v1.4.0
github.com/json-iterator/go v1.1.12 // indirect
github.com/kr/pretty v0.3.0
github.com/lib/pq v1.10.3
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-sqlite3 v1.14.9
github.com/moby/moby v20.10.10+incompatible
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6
github.com/morikuni/aec v1.0.0 // indirect
github.com/mrjones/oauth v0.0.0-20190623134757-126b35219450
github.com/prometheus/client_golang v1.11.0
github.com/rs/zerolog v1.25.0
github.com/russross/meddler v1.0.1
github.com/stretchr/objx v0.3.0 // indirect
github.com/stretchr/testify v1.7.0
github.com/tevino/abool v1.2.0
github.com/ugorji/go v1.2.6 // indirect
github.com/urfave/cli/v2 v2.3.0
github.com/woodpecker-ci/expr v0.0.0-20210628233344-164b8b3d0915
github.com/woodpecker-ci/togo v0.0.0-20211018210511-a36120f299b0
github.com/xanzy/go-gitlab v0.51.1
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonschema v1.2.0
Expand All @@ -62,5 +55,8 @@ require (
google.golang.org/genproto v0.0.0-20211027162914-98a5263abeca // indirect
google.golang.org/grpc v1.41.0
google.golang.org/protobuf v1.27.1
gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
xorm.io/builder v0.3.9
xorm.io/xorm v1.2.5
)
Loading