-
Notifications
You must be signed in to change notification settings - Fork 1
/
partial_config_nginx.yml
138 lines (137 loc) · 4.61 KB
/
partial_config_nginx.yml
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
version: 2.1
executors:
deploy:
parameters:
dist:
type: string
arch:
type: string
docker:
- image: kroniak/ssh-client
working_directory: /output
environment:
DISTRO: << parameters.dist >>
ARCH: << parameters.arch >>
rpmbuilder:
parameters:
dist:
type: string
rpmlint:
type: integer
default: 1
plesk:
type: integer
default: 0
mod:
type: integer
default: 0
enable_repos:
type: string
default: ""
docker:
- image: getpagespeed/rpmbuilder:<< parameters.dist >>
working_directory: /sources
environment:
RPMLINT: << parameters.rpmlint >>
PLESK: << parameters.plesk >>
MOD: << parameters.mod >>
ENABLE_REPOS: << parameters.enable_repos >>
jobs:
build:
parameters:
dist:
description: "The dist tag of OS to build for"
type: string
plesk:
description: "Plesk major release version number, e.g. 18"
type: integer
default: 0
mod:
type: integer
default: 0
enable_repos:
type: string
default: ""
resource_class:
description: "The resource class to use for the build"
type: string
default: "medium"
resource_class: << parameters.resource_class >>
executor:
name: rpmbuilder
dist: << parameters.dist >>
plesk: << parameters.plesk >>
mod: << parameters.mod >>
enable_repos: << parameters.enable_repos >>
steps:
- checkout
- run:
name: "Set up RPM macro reflecting the NGINX branch"
command: |
echo "%nginx_branch ${CIRCLE_BRANCH}" >> rpmmacros
- run:
name: "Set up %plesk macro if passed by a job"
command: |
[ -z ${PLESK+x} ] || echo "%plesk ${PLESK}" >> rpmmacros
# we generate both nginx-module-<foo> and sw-nginx-module-<foo> from a single spec file, so:
[ -z ${PLESK+x} ] || (echo >> rpmlint.config && echo 'addFilter ("E: invalid-spec-name")' >> rpmlint.config)
[ -z ${MOD+x} ] || echo "%_nginx_mod ${MOD}" >> rpmmacros
[ -z ${MOD+x} ] || (echo >> rpmlint.config && echo 'addFilter ("E: invalid-spec-name")' >> rpmlint.config)
- run:
name: "Run script to cleanup spec files that don't need rebuilding"
command: |
[[ ! -f ./cleanup.sh ]] || BRANCH="${CIRCLE_BRANCH}" ./cleanup.sh
- run:
name: "Run the build itself: this will do rpmlint and check RPMs existence among other things."
command: build
- run:
name: "Check for RPM files and halt if none exist"
command: |
set -x
if ls /output/*.rpm 1> /dev/null 2>&1; then
echo "RPM files found. Proceeding with persistence to workspace."
else
echo "No RPM files found. Halting the job."
curl --request POST --url https://circleci.com/api/v2/workflow/$CIRCLE_WORKFLOW_ID/cancel --header "Circle-Token: ${CIRCLE_TOKEN}"
circleci-agent step halt
fi
- persist_to_workspace:
root: /output
paths:
- "*.rpm"
deploy:
# one deploy at a time
parallelism: 1
parameters:
dist:
description: "The dist tag of OS to deploy for"
type: string
arch:
description: "The architecture to deploy for"
type: string
executor:
name: deploy
dist: << parameters.dist >>
arch: << parameters.arch >>
steps:
- attach_workspace:
at: /output
- add_ssh_keys:
fingerprints:
- "8c:a4:dd:2c:47:4c:63:aa:90:0b:e0:d6:15:be:87:82"
- run:
name: "Ensure project specific upload directory to avoid deploy collisions"
command: >
ssh -o StrictHostKeyChecking=no
$GPS_BUILD_USER@$GPS_BUILD_SERVER
"mkdir -p ~/incoming/${CIRCLE_PROJECT_REPONAME}/${DISTRO}/${ARCH}/${CIRCLE_BRANCH}"
- run:
name: "Deploy all RPMs to GetPageSpeed repo."
command: >
scp -o StrictHostKeyChecking=no -q -r *.rpm $GPS_BUILD_USER@$GPS_BUILD_SERVER:~/incoming/${CIRCLE_PROJECT_REPONAME}/${DISTRO}/${ARCH}/${CIRCLE_BRANCH}/
- run:
name: "Trigger Deploy Hook."
command: >
ssh -o StrictHostKeyChecking=no -q
$GPS_BUILD_USER@$GPS_BUILD_SERVER
"nohup ~/scripts/incoming.sh ${CIRCLE_PROJECT_REPONAME}/${DISTRO}/${ARCH}/${CIRCLE_BRANCH}/ > ~/incoming/$CIRCLE_PROJECT_REPONAME/$DISTRO/${ARCH}/${CIRCLE_BRANCH}/process.log 2>&1&"