Jenkins CI setup

This commit is contained in:
simon987 2019-02-23 18:00:32 -05:00
parent 6bc2483968
commit d17113726e
9 changed files with 298 additions and 424 deletions

View File

@ -1,5 +1,5 @@
server: server:
address: "0.0.0.0:42901" address: "localhost:3010"
database: database:
conn_str: "user=task_tracker password=task_tracker dbname=task_tracker sslmode=disable" conn_str: "user=task_tracker password=task_tracker dbname=task_tracker sslmode=disable"

79
jenkins/Jenkinsfile vendored
View File

@ -1,22 +1,79 @@
def remote = [:]
remote.name = 'remote'
remote.host = 'localhost'
remote.user = 'simon'
remote.identityFile = '/var/lib/jenkins/.ssh/id_rsa'
remote.knownHosts = '/var/lib/jenkins/.ssh/known_hosts'
pipeline { pipeline {
agent { agent none
docker {
image 'node:10-alpine'
}
}
environment { environment {
CI = 'true' GOOS='linux'
CGO_ENABLED='0'
HOME='.'
} }
stages { stages {
stage('Build') { stage('Parallel build & test') {
steps { failFast true
sh 'cd web/angular && ng build --prod --optimization' parallel {
stage('Build - web') {
agent {
docker {
image 'node:10-alpine'
}
}
steps {
sh 'cd web/angular/ && npm install'
sh 'cd web/angular/ && ./node_modules/\\@angular/cli/bin/ng build --prod --optimization --output-path "${WORKSPACE}/webroot"'
stash includes: 'webroot/', name: 'webdist'
}
}
stage('Build - api') {
agent {
docker {
image 'golang:latest'
}
}
steps {
sh 'mkdir -p /go/src/github.com/task_tracker'
sh 'cp -r api config main storage config.yml schema.sql "/go/src/github.com/task_tracker"'
sh 'cd /go/src/github.com/task_tracker/main && go get ./...'
sh 'cd /go/src/github.com/task_tracker/main && go build -a -installsuffix cgo -o "${WORKSPACE}/tt_api" .'
stash includes: 'tt_api', name: 'apidist'
}
}
stage('Test - api') {
agent {
docker {
image 'golang:latest'
args '--network "host"'
}
}
steps {
sh 'mkdir -p /go/src/github.com/task_tracker'
sh 'cp -r api config main storage test config.yml schema.sql "/go/src/github.com/task_tracker"'
sh 'cd /go/src/github.com/task_tracker/ && go get -t ./test/...'
sh 'cd /go/src/github.com/task_tracker/test && go test .'
}
}
} }
} }
stage('Deliver') { stage('Deploy') {
agent none
steps { steps {
sh './jenkins/deploy.sh' node('master') {
unstash 'webdist'
unstash 'apidist'
sshPut remote: remote, from: 'tt_api', into: 'task_tracker/'
sshPut remote: remote, from: 'config.yml', into: 'task_tracker/'
sshPut remote: remote, from: 'schema.sql', into: 'task_tracker/'
sshPut remote: remote, from: 'webroot/', into: 'task_tracker'
sshPut remote: remote, from: 'jenkins/deploy.sh', into: 'task_tracker/'
sshCommand remote: remote, command: 'chmod +x task_tracker/deploy.sh && ./task_tracker/deploy.sh'
}
} }
} }
} }
} }

13
jenkins/deploy.sh Normal file → Executable file
View File

@ -1,4 +1,11 @@
#!/usr/bin/env bash #!/bin/bash
cp web/angular/dist/ /home/drone/task_tracker/webroot/ export TTROOT="task_tracker"
echo "test"
chmod 755 -R "${TTROOT}/webroot"
screen -S tt_api -X quit
echo "starting client"
screen -S tt_api -d -m bash -c "cd ${TTROOT} && ./tt_api"
sleep 1
screen -list

View File

@ -21,9 +21,22 @@ func New() *Database {
d := Database{} d := Database{}
d.workerCache = make(map[int64]*Worker) d.workerCache = make(map[int64]*Worker)
d.init()
return &d return &d
} }
func (database *Database) init() {
db := database.getDB()
_, err := db.Exec(`SELECT * FROM project`)
if err != nil {
logrus.Info("Database first time setup")
database.Reset()
}
}
func (database *Database) Reset() { func (database *Database) Reset() {
file, err := os.Open("./schema.sql") file, err := os.Open("./schema.sql")

View File

@ -209,7 +209,6 @@ func (database *Database) GetSecret(pid int64, workerId int64) (secret string, e
} }
err = row.Scan(&secret) err = row.Scan(&secret)
handleErr(err)
return return
} }

View File

@ -2,7 +2,7 @@ server:
address: "127.0.0.1:5001" address: "127.0.0.1:5001"
database: database:
conn_str: "user=task_tracker password=task_tracker dbname=task_tracker sslmode=disable" conn_str: "user=task_tracker password=task_tracker dbname=task_tracker_test sslmode=disable"
log_levels: ["debug", "error", "trace", "info", "warn"] log_levels: ["debug", "error", "trace", "info", "warn"]
git: git:

File diff suppressed because it is too large Load Diff

View File

@ -33,8 +33,8 @@
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "~0.12.0", "@angular-devkit/build-angular": "~0.12.0",
"@angular/cli": "~7.2.2", "@angular/cli": "^7.2.4",
"@angular/compiler-cli": "~7.2.0", "@angular/compiler-cli": "^7.2.6",
"@angular/language-service": "~7.2.0", "@angular/language-service": "~7.2.0",
"@types/chart.js": "^2.7.42", "@types/chart.js": "^2.7.42",
"@types/jasmine": "~2.8.8", "@types/jasmine": "~2.8.8",

View File

@ -6,7 +6,7 @@ import {Credentials} from "./models/credentials";
@Injectable() @Injectable()
export class ApiService { export class ApiService {
public url: string = "http://localhost/api"; public url: string = "https://tt.simon987.net/api";
private options: { private options: {
withCredentials: true, withCredentials: true,
responseType: "json" responseType: "json"