initial test build drone script #22
|
@ -0,0 +1,129 @@
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: linux-test
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: fetch
|
||||||
|
image: golang
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
#- go get -u golang.org/x/lint/golint
|
||||||
|
- go install honnef.co/go/tools/cmd/staticcheck@latest
|
||||||
|
- git fetch --tags
|
||||||
|
- go get
|
||||||
|
- echo `git describe --tags` > VERSION
|
||||||
|
- echo `date +%G-%m-%d-%H-%M` > BUILDDATE
|
||||||
|
|
||||||
|
- name: quality
|
||||||
|
image: golang
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
- go list ./... | xargs go vet
|
||||||
|
- staticcheck ./...
|
||||||
|
|
||||||
|
- name: units-tests
|
||||||
|
image: golang
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
- sh testing/tests.sh
|
||||||
|
|
||||||
|
- name: test-builda-app
|
||||||
|
image: golang
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
- cd app
|
||||||
|
- go build
|
||||||
|
|
||||||
|
- name: notify-email
|
||||||
|
image: drillster/drone-email
|
||||||
|
settings:
|
||||||
|
host: build.openprivacy.ca
|
||||||
|
port: 25
|
||||||
|
skip_verify: true
|
||||||
|
from: drone@openprivacy.ca
|
||||||
|
when:
|
||||||
|
status: [failure]
|
||||||
|
|
||||||
|
- name: notify-gogs
|
||||||
|
image: openpriv/drone-gogs
|
||||||
|
when:
|
||||||
|
event: pull_request
|
||||||
|
status: [success, changed, failure]
|
||||||
|
environment:
|
||||||
|
GOGS_ACCOUNT_TOKEN:
|
||||||
|
from_secret: gogs_account_token
|
||||||
|
settings:
|
||||||
|
gogs_url: https://git.openprivacy.ca
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# gopath where bin and pkg lives to persist across steps
|
||||||
|
- name: deps
|
||||||
|
temp: {}
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
repo: cwtch.im/server
|
||||||
|
branch: trunk
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
- pull_request
|
||||||
|
- tag
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: exec
|
||||||
|
name: mac-test
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: darwin
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: fetch
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
- export PATH=$PATH:/usr/local/go/bin
|
||||||
|
- go get
|
||||||
|
|
||||||
|
- name: units-tests
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
- export PATH=$PATH:/usr/local/go/bin
|
||||||
|
- sh testing/tests.sh
|
||||||
|
|
||||||
|
- name: test-builda-app
|
||||||
|
volumes:
|
||||||
|
- name: deps
|
||||||
|
path: /go
|
||||||
|
commands:
|
||||||
|
- export PATH=$PATH:/usr/local/go/bin
|
||||||
|
- cd app
|
||||||
|
- go build
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# gopath where bin and pkg lives to persist across steps
|
||||||
|
- name: deps
|
||||||
|
temp: {}
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
repo: cwtch.im/server
|
||||||
|
branch: trunk
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
- pull_request
|
||||||
|
- tag
|
||||||
|
|
||||||
|
# TODO: windows: but need windows docker containers with
|
||||||
|
# go + gcc to compile sqlite. Will prolly come from likewise work for Cwtch
|
|
@ -179,9 +179,7 @@ func reportLine(t MonitorType, array []float64) string {
|
||||||
func (mh *monitorHistory) returnCopy(slice []float64) []float64 {
|
func (mh *monitorHistory) returnCopy(slice []float64) []float64 {
|
||||||
retSlice := make([]float64, len(slice))
|
retSlice := make([]float64, len(slice))
|
||||||
mh.lock.Lock()
|
mh.lock.Lock()
|
||||||
for i, v := range slice {
|
copy(retSlice, slice)
|
||||||
retSlice[i] = v
|
|
||||||
}
|
|
||||||
mh.lock.Unlock()
|
mh.lock.Unlock()
|
||||||
return retSlice
|
return retSlice
|
||||||
}
|
}
|
||||||
|
@ -219,22 +217,22 @@ func (mh *monitorHistory) monitorThread() {
|
||||||
|
|
||||||
minuteAvg := rotateAndAccumulate(mh.perMinutePerHour[:], mh.monitor(), mh.monitorAccumulation)
|
minuteAvg := rotateAndAccumulate(mh.perMinutePerHour[:], mh.monitor(), mh.monitorAccumulation)
|
||||||
|
|
||||||
if time.Now().Sub(mh.timeLastHourRotate) > time.Hour {
|
if time.Since(mh.timeLastHourRotate) > time.Hour {
|
||||||
rotateAndAccumulate(mh.perHourForDay[:], minuteAvg, mh.monitorAccumulation)
|
rotateAndAccumulate(mh.perHourForDay[:], minuteAvg, mh.monitorAccumulation)
|
||||||
mh.timeLastHourRotate = time.Now()
|
mh.timeLastHourRotate = time.Now()
|
||||||
}
|
}
|
||||||
|
|
||||||
if time.Now().Sub(mh.timeLastDayRotate) > time.Hour*24 {
|
if time.Since(mh.timeLastDayRotate) > time.Hour*24 {
|
||||||
rotateAndAccumulate(mh.perDayForWeek[:], accumulate(mh.perHourForDay[:], mh.monitorAccumulation), mh.monitorAccumulation)
|
rotateAndAccumulate(mh.perDayForWeek[:], accumulate(mh.perHourForDay[:], mh.monitorAccumulation), mh.monitorAccumulation)
|
||||||
mh.timeLastDayRotate = time.Now()
|
mh.timeLastDayRotate = time.Now()
|
||||||
}
|
}
|
||||||
|
|
||||||
if time.Now().Sub(mh.timeLastWeekRotate) > time.Hour*24*7 {
|
if time.Since(mh.timeLastWeekRotate) > time.Hour*24*7 {
|
||||||
rotateAndAccumulate(mh.perWeekForMonth[:], accumulate(mh.perDayForWeek[:], mh.monitorAccumulation), mh.monitorAccumulation)
|
rotateAndAccumulate(mh.perWeekForMonth[:], accumulate(mh.perDayForWeek[:], mh.monitorAccumulation), mh.monitorAccumulation)
|
||||||
mh.timeLastWeekRotate = time.Now()
|
mh.timeLastWeekRotate = time.Now()
|
||||||
}
|
}
|
||||||
|
|
||||||
if time.Now().Sub(mh.timeLastMonthRotate) > time.Hour*24*7*4 {
|
if time.Since(mh.timeLastMonthRotate) > time.Hour*24*7*4 {
|
||||||
rotateAndAccumulate(mh.perMonthForYear[:], accumulate(mh.perWeekForMonth[:], mh.monitorAccumulation), mh.monitorAccumulation)
|
rotateAndAccumulate(mh.perMonthForYear[:], accumulate(mh.perWeekForMonth[:], mh.monitorAccumulation), mh.monitorAccumulation)
|
||||||
mh.timeLastMonthRotate = time.Now()
|
mh.timeLastMonthRotate = time.Now()
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ func (mp *Monitors) report() {
|
||||||
|
|
||||||
w := bufio.NewWriter(f)
|
w := bufio.NewWriter(f)
|
||||||
|
|
||||||
fmt.Fprintf(w, "Uptime: %v\n\n", time.Now().Sub(mp.starttime))
|
fmt.Fprintf(w, "Uptime: %v\n\n", time.Since(mp.starttime))
|
||||||
|
|
||||||
fmt.Fprintln(w, "messages:")
|
fmt.Fprintln(w, "messages:")
|
||||||
mp.Messages.Report(w)
|
mp.Messages.Report(w)
|
||||||
|
|
|
@ -87,8 +87,7 @@ func (s *server) Run(acn connectivity.ACN) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
identity := primitives.InitializeIdentity("", &s.config.PrivateKey, &s.config.PublicKey)
|
identity := primitives.InitializeIdentity("", &s.config.PrivateKey, &s.config.PublicKey)
|
||||||
var service tapir.Service
|
service := new(tor2.BaseOnionService)
|
||||||
service = new(tor2.BaseOnionService)
|
|
||||||
service.Init(acn, s.config.PrivateKey, &identity)
|
service.Init(acn, s.config.PrivateKey, &identity)
|
||||||
s.service = service
|
s.service = service
|
||||||
log.Infof("cwtch server running on cwtch:%s\n", s.Onion())
|
log.Infof("cwtch server running on cwtch:%s\n", s.Onion())
|
||||||
|
@ -138,7 +137,7 @@ func (s *server) KeyBundle() *model.KeyBundle {
|
||||||
func (s *server) CheckStatus() (bool, error) {
|
func (s *server) CheckStatus() (bool, error) {
|
||||||
s.lock.RLock()
|
s.lock.RLock()
|
||||||
defer s.lock.RUnlock()
|
defer s.lock.RUnlock()
|
||||||
if s.onionServiceStopped == true || s.tokenServiceStopped == true {
|
if s.onionServiceStopped || s.tokenServiceStopped {
|
||||||
return s.running, fmt.Errorf("one of more server components are down: onion:%v token service: %v", s.onionServiceStopped, s.tokenServiceStopped)
|
return s.running, fmt.Errorf("one of more server components are down: onion:%v token service: %v", s.onionServiceStopped, s.tokenServiceStopped)
|
||||||
}
|
}
|
||||||
return s.running, nil
|
return s.running, nil
|
||||||
|
@ -192,7 +191,7 @@ func (s *server) Delete(password string) error {
|
||||||
if s.config.Encrypted && !s.config.CheckPassword(password) {
|
if s.config.Encrypted && !s.config.CheckPassword(password) {
|
||||||
s.lock.Unlock()
|
s.lock.Unlock()
|
||||||
log.Errorf("encryped and checkpassword failed")
|
log.Errorf("encryped and checkpassword failed")
|
||||||
return errors.New("Cannot delete server, passwords do not match")
|
return errors.New("cannot delete server, passwords do not match")
|
||||||
}
|
}
|
||||||
s.lock.Unlock()
|
s.lock.Unlock()
|
||||||
s.Destroy()
|
s.Destroy()
|
||||||
|
|
|
@ -64,7 +64,7 @@ func (s SqliteMessageStore) FetchMessages() []*groups.EncryptedGroupMessage {
|
||||||
func (s SqliteMessageStore) FetchMessagesFrom(signature []byte) []*groups.EncryptedGroupMessage {
|
func (s SqliteMessageStore) FetchMessagesFrom(signature []byte) []*groups.EncryptedGroupMessage {
|
||||||
|
|
||||||
// If signature is empty then treat this as a complete sync request
|
// If signature is empty then treat this as a complete sync request
|
||||||
if signature == nil || len(signature) == 0 {
|
if len(signature) == 0 {
|
||||||
return s.FetchMessages()
|
return s.FetchMessages()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ go list ./... | xargs go vet
|
||||||
echo ""
|
echo ""
|
||||||
echo "Linting:"
|
echo "Linting:"
|
||||||
|
|
||||||
go list ./... | xargs golint
|
staticcheck ./...
|
||||||
|
|
||||||
|
|
||||||
echo "Time to format"
|
echo "Time to format"
|
||||||
|
|
Loading…
Reference in New Issue