-
Notifications
You must be signed in to change notification settings - Fork 1
/
partial_config_self.yml
98 lines (97 loc) · 3.24 KB
/
partial_config_self.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
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
docker:
- image: getpagespeed/rpmbuilder:<< parameters.dist >>
working_directory: /sources
environment:
RPMLINT: << parameters.rpmlint >>
jobs:
build:
parameters:
dist:
description: "The dist tag of OS to build for"
type: string
resource_class:
description: "The resource class to use for the build"
type: string
default: "small"
resource_class: << parameters.resource_class >>
executor:
name: rpmbuilder
dist: << parameters.dist >>
steps:
- checkout
- run:
name: "Run the build itself: this will do rpmlint and check RPMs existence among other things."
command: ./utils/version-from-tag.sh && 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:
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: |
echo "Uploading RPMs..."
ls -al
echo "Target upload directory: ~/incoming/${CIRCLE_PROJECT_REPONAME}/${DISTRO}/${ARCH}/${CIRCLE_BRANCH}/"
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&"