mirror of
https://github.com/simon987/task_tracker.git
synced 2025-04-19 18:16:45 +00:00
Jenkins CI setup
This commit is contained in:
parent
6bc2483968
commit
d17113726e
@ -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"
|
||||||
|
73
jenkins/Jenkinsfile
vendored
73
jenkins/Jenkinsfile
vendored
@ -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 none
|
||||||
|
environment {
|
||||||
|
GOOS='linux'
|
||||||
|
CGO_ENABLED='0'
|
||||||
|
HOME='.'
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('Parallel build & test') {
|
||||||
|
failFast true
|
||||||
|
parallel {
|
||||||
|
stage('Build - web') {
|
||||||
agent {
|
agent {
|
||||||
docker {
|
docker {
|
||||||
image 'node:10-alpine'
|
image 'node:10-alpine'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
environment {
|
|
||||||
CI = 'true'
|
|
||||||
}
|
|
||||||
stages {
|
|
||||||
stage('Build') {
|
|
||||||
steps {
|
steps {
|
||||||
sh 'cd web/angular && ng build --prod --optimization'
|
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'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('Deliver') {
|
|
||||||
steps {
|
steps {
|
||||||
sh './jenkins/deploy.sh'
|
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('Deploy') {
|
||||||
|
agent none
|
||||||
|
steps {
|
||||||
|
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
13
jenkins/deploy.sh
Normal file → Executable 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
|
||||||
|
@ -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")
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
604
web/angular/package-lock.json
generated
604
web/angular/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -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",
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user