generated from Knowledge-Graph-Hub/kg-example
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
151 lines (135 loc) · 5.41 KB
/
Jenkinsfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
pipeline {
agent {
docker {
reuseNode false
image 'caufieldjh/ubuntu20-python-3-9-14-dev:2'
}
}
// No scheduled builds for now
//triggers{
// cron('H H 1 1-12 *')
//}
environment {
BUILDSTARTDATE = sh(script: "echo `date +%Y%m%d`", returnStdout: true).trim()
S3BUCKETNAME = 'kg-hub-public-data'
S3PROJECTDIR = 'kg-bioportal' // no trailing slash
MERGEDKGNAME_BASE = "kg_bioportal"
}
options {
timestamps()
disableConcurrentBuilds()
}
stages {
// Very first: pause for a minute to give a chance to
// cancel and clean the workspace before use.
stage('Ready and clean') {
steps {
// Give us a minute to cancel if we want.
sleep time: 30, unit: 'SECONDS'
}
}
stage('Initialize') {
steps {
// print some info
dir('./gitrepo') {
sh 'env > env.txt'
sh 'echo $GIT_BRANCH > branch.txt'
sh 'echo "$GIT_BRANCH"'
sh 'cat env.txt'
sh 'cat branch.txt'
sh "echo $BUILDSTARTDATE"
sh "echo $MERGEDKGNAME_BASE"
sh "python3.9 --version"
sh "id"
sh "whoami" // this should be jenkinsuser
// if the above fails, then the docker host didn't start the docker
// container as a user that this image knows about. This will
// likely cause lots of problems (like trying to write to $HOME
// directory that doesn't exist, etc), so we should fail here and
// have the user fix this
}
}
}
stage('Build kg_bioportal') {
steps {
dir('./gitrepo') {
git(
url: 'https://github.com/ncbo/kg-bioportal',
branch: 'main'
)
sh '/usr/bin/python3.9 -m venv venv'
sh '. venv/bin/activate'
sh './venv/bin/pip install .'
sh './venv/bin/pip install awscli boto3 s3cmd multi-indexer'
}
}
}
stage('Download') {
steps {
dir('./gitrepo') {
script {
// Get the names of all BioPortal ontologies
// This saves the list to data/raw/ontologylist.tsv
//sh ". venv/bin/activate && kgbioportal -vvv get-ontology-list --api_key ${NCBO_API_KEY}"
// For now, we use the pre-built list included with the repo.
// Download the ontologies
// This saves them to data/raw/
sh ". venv/bin/activate && kgbioportal -vvv download --api_key ${NCBO_API_KEY}"
}
}
}
}
// Transform the downloaded ontologies
stage('Transform') {
steps {
dir('./gitrepo') {
sh ". venv/bin/activate && kgbioportal transform"
}
}
}
stage('Publish') {
steps {
dir('./gitrepo') {
script {
if (env.GIT_BRANCH != 'origin/main') {
echo "Will not push if not on main branch."
} else {
withCredentials([
file(credentialsId: 's3cmd_kg_hub_push_configuration', variable: 'S3CMD_CFG'),
file(credentialsId: 'aws_kg_hub_push_json', variable: 'AWS_JSON'),
string(credentialsId: 'aws_kg_hub_access_key', variable: 'AWS_ACCESS_KEY_ID'),
string(credentialsId: 'aws_kg_hub_secret_key', variable: 'AWS_SECRET_ACCESS_KEY')]) {
// Index, then upload
// This will include the log files (onto_stats.yaml and total_stats.yaml)
sh '. venv/bin/activate && multi_indexer -v --directory data/transformed/ --prefix https://kghub.io/$S3PROJECTDIR/ -x -u'
sh '. venv/bin/activate && s3cmd -c $S3CMD_CFG put -pr --acl-public --cf-invalidate data/transformed/ s3://kg-hub-public-data/$S3PROJECTDIR/'
// Now update the index for the whole project
sh '. venv/bin/activate && multi_indexer -v --prefix https://kghub.io/$S3PROJECTDIR/ -b kg-hub-public-data -r $S3PROJECTDIR -x'
sh '. venv/bin/activate && s3cmd -c $S3CMD_CFG put -pr --acl-public --cf-invalidate ./index.html s3://kg-hub-public-data/$S3PROJECTDIR/'
}
}
}
}
}
}
}
post {
always {
echo 'In always'
echo 'Cleaning workspace...'
cleanWs()
}
success {
echo 'I succeeded!'
}
unstable {
echo 'I am unstable :/'
}
failure {
echo 'I failed :('
}
changed {
echo 'Things were different before...'
}
}
}