From 06800cb61e353b6b4aa2e83b9df62612d5695a5c Mon Sep 17 00:00:00 2001 From: Anbraten Date: Thu, 28 Oct 2021 21:02:43 +0200 Subject: [PATCH] Change paths to use woodpecker instead of drone (#494) * change paths to use woodpecker instead of drone * improve sql file migration * add migration notice --- charts/woodpecker-server/values.yaml | 2 +- cmd/server/flags.go | 2 +- cmd/server/setup.go | 30 ++++++++++++++++++++ docker-compose.example.yml | 2 +- docker/Dockerfile.server | 4 +-- docker/Dockerfile.server.alpine | 4 +-- docs/docs/30-administration/00-setup.md | 2 +- docs/docs/30-administration/30-database.md | 4 +-- docs/docs/30-administration/60-ssl.md | 2 +- docs/docs/30-administration/80-kubernetes.md | 2 +- docs/docs/91-migrations.md | 6 ++++ server/shared/procBuilder.go | 2 +- 12 files changed, 49 insertions(+), 13 deletions(-) diff --git a/charts/woodpecker-server/values.yaml b/charts/woodpecker-server/values.yaml index b9019613a..46a25b7ce 100644 --- a/charts/woodpecker-server/values.yaml +++ b/charts/woodpecker-server/values.yaml @@ -20,7 +20,7 @@ extraSecretNamesForEnvFrom: persistentVolume: enabled: true size: 10Gi - mountPath: "/var/lib/drone" + mountPath: "/var/lib/woodpecker" storageClass: "gp2" imagePullSecrets: [] diff --git a/cmd/server/flags.go b/cmd/server/flags.go index f9a36a3cf..27096a0b2 100644 --- a/cmd/server/flags.go +++ b/cmd/server/flags.go @@ -173,7 +173,7 @@ var flags = []cli.Flag{ EnvVars: []string{"WOODPECKER_DATABASE_DATASOURCE"}, Name: "datasource", Usage: "database driver configuration string", - Value: "drone.sqlite", + Value: "woodpecker.sqlite", }, &cli.StringFlag{ EnvVars: []string{"WOODPECKER_PROMETHEUS_AUTH_TOKEN"}, diff --git a/cmd/server/setup.go b/cmd/server/setup.go index 79fc5481b..1a90bc458 100644 --- a/cmd/server/setup.go +++ b/cmd/server/setup.go @@ -16,6 +16,7 @@ package main import ( "fmt" + "os" "time" "github.com/gin-gonic/gin" @@ -45,6 +46,10 @@ import ( ) func setupStore(c *cli.Context) (store.Store, error) { + if err := migrateSqlFile(c); err != nil { + log.Fatal().Err(err).Msg("could not migrate legacy sqlite file") + } + opts := &datastore.Opts{ Driver: c.String("driver"), Config: c.String("datasource"), @@ -53,6 +58,31 @@ func setupStore(c *cli.Context) (store.Store, error) { return datastore.New(opts) } +// TODO Remove this once we are sure users aren't attempting to migrate from Drone to Woodpecker (possibly never) +func migrateSqlFile(c *cli.Context) error { + // default config for docker containers + if c.String("datasource") == "/var/lib/woodpecker/woodpecker.sqlite" { + _, err := os.Stat("/var/lib/drone/drone.sqlite") + if err == nil { + return os.Rename("/var/lib/drone/drone.sqlite", "/var/lib/woodpecker/woodpecker.sqlite") + } else if !os.IsNotExist(err) { + return err + } + } + + // default config for standalone installations + if c.String("datasource") == "woodpecker.sqlite" { + _, err := os.Stat("drone.sqlite") + if err == nil { + return os.Rename("drone.sqlite", "woodpecker.sqlite") + } else if err != nil && !os.IsNotExist(err) { + return err + } + } + + return nil +} + func setupQueue(c *cli.Context, s store.Store) queue.Queue { return model.WithTaskStore(queue.New(), s) } diff --git a/docker-compose.example.yml b/docker-compose.example.yml index 5bc78969a..edd46fed0 100644 --- a/docker-compose.example.yml +++ b/docker-compose.example.yml @@ -9,7 +9,7 @@ services: ports: - 8000:8000 volumes: - - /var/lib/drone:/var/lib/drone/ + - /var/lib/woodpecker:/var/lib/woodpecker/ environment: - WOODPECKER_OPEN=true - WOODPECKER_ADMIN=laszlocph diff --git a/docker/Dockerfile.server b/docker/Dockerfile.server index b9720e30b..0e6bd017c 100644 --- a/docker/Dockerfile.server +++ b/docker/Dockerfile.server @@ -11,9 +11,9 @@ COPY --from=0 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates. EXPOSE 8000 9000 80 443 ENV GODEBUG=netdns=go -ENV WOODPECKER_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite +ENV WOODPECKER_DATABASE_DATASOURCE=/var/lib/woodpecker/woodpecker.sqlite ENV WOODPECKER_DATABASE_DRIVER=sqlite3 -ENV XDG_CACHE_HOME=/var/lib/drone +ENV XDG_CACHE_HOME=/var/lib/woodpecker ADD dist/server/linux_amd64/woodpecker-server /bin/ diff --git a/docker/Dockerfile.server.alpine b/docker/Dockerfile.server.alpine index 354fc7eae..cb054e2a4 100644 --- a/docker/Dockerfile.server.alpine +++ b/docker/Dockerfile.server.alpine @@ -6,9 +6,9 @@ RUN apk add -U --no-cache ca-certificates EXPOSE 8000 9000 80 443 ENV GODEBUG=netdns=go -ENV WOODPECKER_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite +ENV WOODPECKER_DATABASE_DATASOURCE=/var/lib/woodpecker/woodpecker.sqlite ENV WOODPECKER_DATABASE_DRIVER=sqlite3 -ENV XDG_CACHE_HOME=/var/lib/drone +ENV XDG_CACHE_HOME=/var/lib/woodpecker ADD dist/server/linux_amd64/woodpecker-server /bin/ diff --git a/docs/docs/30-administration/00-setup.md b/docs/docs/30-administration/00-setup.md index d68b6781c..29deb674c 100644 --- a/docs/docs/30-administration/00-setup.md +++ b/docs/docs/30-administration/00-setup.md @@ -33,7 +33,7 @@ services: ports: - 8000:8000 volumes: - - woodpecker-server-data:/var/lib/drone/ + - woodpecker-server-data:/var/lib/woodpecker/ environment: - WOODPECKER_OPEN=true - WOODPECKER_HOST=${WOODPECKER_HOST} diff --git a/docs/docs/30-administration/30-database.md b/docs/docs/30-administration/30-database.md index 75abf9343..377bfdf34 100644 --- a/docs/docs/30-administration/30-database.md +++ b/docs/docs/30-administration/30-database.md @@ -4,7 +4,7 @@ The default database engine of Woodpecker is an embedded SQLite database which r ## Configure sqlite -By default Woodpecker uses a sqlite database stored under `/var/lib/drone/`. You can mount a [data volume](https://docs.docker.com/storage/volumes/#create-and-manage-volumes) to persist the sqlite database. +By default Woodpecker uses a sqlite database stored under `/var/lib/woodpecker/`. You can mount a [data volume](https://docs.docker.com/storage/volumes/#create-and-manage-volumes) to persist the sqlite database. ```diff # docker-compose.yml @@ -14,7 +14,7 @@ services: woodpecker-server: [...] + volumes: -+ - woodpecker-server-data:/var/lib/drone/ ++ - woodpecker-server-data:/var/lib/woodpecker/ ``` ## Configure MySQL diff --git a/docs/docs/30-administration/60-ssl.md b/docs/docs/30-administration/60-ssl.md index c9a9afe55..8af876931 100644 --- a/docs/docs/30-administration/60-ssl.md +++ b/docs/docs/30-administration/60-ssl.md @@ -35,7 +35,7 @@ Note that Woodpecker uses the hostname from the `WOODPECKER_HOST` environment va Woodpecker writes the certificates to the below directory: ``` -/var/lib/drone/golang-autocert +/var/lib/woodpecker/golang-autocert ``` ### Certificate Updates diff --git a/docs/docs/30-administration/80-kubernetes.md b/docs/docs/30-administration/80-kubernetes.md index 0c76f0e35..6132a5189 100644 --- a/docs/docs/30-administration/80-kubernetes.md +++ b/docs/docs/30-administration/80-kubernetes.md @@ -95,7 +95,7 @@ spec: value: "xxx" volumeMounts: - name: sqlite-volume - mountPath: /var/lib/drone + mountPath: /var/lib/woodpecker volumes: - name: sqlite-volume persistentVolumeClaim: diff --git a/docs/docs/91-migrations.md b/docs/docs/91-migrations.md index c8b37c66f..78c5c3321 100644 --- a/docs/docs/91-migrations.md +++ b/docs/docs/91-migrations.md @@ -24,6 +24,12 @@ Some versions need some changes to the server configuration or the pipeline conf - Prometheus metrics have been changed from `drone_*` to `woodpecker_*` +- Base path has moved from `/var/lib/drone` to `/var/lib/woodpecker` + +- Default SQLite database location has changed: + - `/var/lib/drone/drone.sqlite` -> `/var/lib/woodpecker/woodpecker.sqlite` + - `drone.sqlite` -> `woodpecker.sqlite` + - ... ## 0.14.0 diff --git a/server/shared/procBuilder.go b/server/shared/procBuilder.go index fe4971131..b16fc7337 100644 --- a/server/shared/procBuilder.go +++ b/server/shared/procBuilder.go @@ -245,7 +245,7 @@ func (b *ProcBuilder) toInternalRepresentation(parsed *yaml.Config, environ map[ ), ), compiler.WithProxy(), - compiler.WithWorkspaceFromURL("/drone", b.Repo.Link), + compiler.WithWorkspaceFromURL("/woodpecker", b.Repo.Link), compiler.WithMetadata(metadata), ).Compile(parsed) }