Skip to content

Commit 5ccc69f

Browse files
authored
Merge pull request #131 from seemethere/simplify_ci
[TAR-916] Simplify CI, it was too complicated
2 parents d97f8ab + dde1dc2 commit 5ccc69f

File tree

3 files changed

+62
-155
lines changed

3 files changed

+62
-155
lines changed

Jenkinsfile

Lines changed: 38 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,45 @@
11
#!groovy
22

3-
def verifyTargets = [
4-
'x86_64-verify-install-centos-7',
5-
'x86_64-verify-install-fedora-29',
6-
'x86_64-verify-install-ubuntu-xenial',
7-
'x86_64-verify-install-ubuntu-bionic',
8-
]
3+
def VERSION="18.09"
94

10-
def armhfverifyTargets = [
11-
'armhf-verify-install-ubuntu-xenial',
12-
'armhf-verify-install-ubuntu-bionic',
13-
]
14-
15-
def s390xverifyTargets = [
16-
's390x-verify-install-ubuntu-xenial',
17-
's390x-verify-install-ubuntu-bionic',
18-
]
19-
20-
def aarch64verifyTargets = [
21-
'aarch64-verify-install-ubuntu-xenial',
22-
'aarch64-verify-install-ubuntu-bionic',
23-
'aarch64-verify-install-centos-7',
24-
]
25-
26-
def ppc64leverifyTargets = [
27-
'ppc64le-verify-install-ubuntu-xenial',
28-
'ppc64le-verify-install-ubuntu-bionic',
29-
]
5+
pipeline {
6+
agent {
7+
label "linux&&x86_64"
8+
}
309

31-
def genVerifyJob(String t, String label) {
32-
return [ "${t}" : { ->
33-
stage("${t}") {
34-
wrappedNode(label: label, cleanWorkspace: true) {
35-
checkout scm
36-
channel = 'test'
37-
if ("${env.JOB_NAME}".endsWith('get.docker.com')) {
38-
channel='edge'
10+
stages {
11+
stage("shellcheck") {
12+
steps {
13+
sh "make shellcheck"
14+
}
15+
}
16+
// Test out that the script will work for distros / version pinning
17+
stage("Check distributions / version pinning") {
18+
// NOTE: These can all technically run on the same node since they
19+
// run in containers
20+
parallel {
21+
stage("Ubuntu 18.04") {
22+
steps {
23+
sh "TEST_IMAGE=ubuntu:18.04 make test"
24+
}
25+
}
26+
stage("Ubuntu 18.04 / version pinning") {
27+
steps {
28+
sh "TEST_IMAGE=ubuntu:18.04 VERSION=${VERSION} make test"
29+
}
30+
}
31+
stage("Centos 7") {
32+
steps {
33+
sh "TEST_IMAGE=centos:7 make test"
34+
}
35+
}
36+
stage("Centos 7 / version pinning") {
37+
steps {
38+
sh "TEST_IMAGE=centos:7 VERSION=${VERSION} make test"
39+
}
40+
}
41+
}
3942
}
40-
sh("make CHANNEL_TO_TEST=${channel} clean ${t}")
41-
archiveArtifacts '*-verify-install-*'
42-
}
43+
// TODO: add release step here to upload to S3
4344
}
44-
} ]
45-
}
46-
47-
wrappedNode(label: 'aufs', cleanWorkspace: true) {
48-
stage('Shellcheck') {
49-
checkout scm
50-
sh('make shellcheck')
51-
}
52-
}
53-
54-
def verifyJobs = [:]
55-
for (t in verifyTargets) {
56-
verifyJobs << genVerifyJob(t, 'aufs')
5745
}
58-
59-
for (t in armhfverifyTargets) {
60-
verifyJobs << genVerifyJob(t, 'armhf')
61-
}
62-
63-
for (t in s390xverifyTargets) {
64-
verifyJobs << genVerifyJob(t, 's390x-ubuntu-1604')
65-
}
66-
67-
for (t in aarch64verifyTargets) {
68-
verifyJobs << genVerifyJob(t, 'aarch64')
69-
}
70-
71-
for (t in ppc64leverifyTargets) {
72-
verifyJobs << genVerifyJob(t, 'ppc64le-ubuntu-1604')
73-
}
74-
75-
parallel(verifyJobs)

Makefile

Lines changed: 23 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,33 @@
1-
SHELL:=/bin/bash
2-
DISTROS:=centos-7 fedora-28 fedora-29 debian-jessie debian-stretch debian-buster ubuntu-trusty ubuntu-xenial ubuntu-yakkety ubuntu-artful
3-
VERIFY_INSTALL_DISTROS:=$(addprefix x86_64-verify-install-,$(DISTROS))
4-
CHANNEL_TO_TEST?=test
1+
TEST_IMAGE?=ubuntu:18.04
52
VERSION?=
6-
SHELLCHECK_EXCLUSIONS=$(addprefix -e, SC1091 SC1117)
7-
SHELLCHECK=docker run --rm -v "$(CURDIR)":/v -w /v koalaman/shellcheck $(SHELLCHECK_EXCLUSIONS)
8-
9-
.PHONY: shellcheck
10-
shellcheck:
11-
$(SHELLCHECK) install.sh
3+
CHANNEL?=
124

13-
.PHONY: check
14-
check: $(VERIFY_INSTALL_DISTROS)
5+
VOLUME_MOUNTS=-v "$(CURDIR)":/v
6+
SHELLCHECK_EXCLUSIONS=$(addprefix -e, SC1091 SC1117)
7+
SHELLCHECK=docker run --rm $(VOLUME_MOUNTS) -w /v koalaman/shellcheck $(SHELLCHECK_EXCLUSIONS)
158

16-
.PHONY: clean
17-
clean:
18-
$(RM) *-verify-install-*
19-
$(RM) -r build
9+
ENVSUBST_VARS=SCRIPT_COMMIT_SHA
2010

21-
x86_64-verify-install-%:
22-
mkdir -p build
23-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
24-
set -o pipefail && docker run \
25-
--rm \
26-
-e VERSION \
27-
-v $(CURDIR):/v \
28-
-w /v \
29-
$(subst -,:,$*) \
30-
/v/verify-docker-install | tee $@
11+
.PHONY: build
3112

32-
armhf-verify-install-raspbian-jessie:
33-
mkdir -p build
34-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
35-
set -o pipefail && docker run \
36-
--rm \
37-
-e VERSION \
38-
-v $(CURDIR):/v \
39-
-w /v \
40-
resin/rpi-raspbian:jessie \
41-
/v/verify-docker-install | tee $@
13+
build/install.sh: install.sh
14+
mkdir -p $(@D)
15+
SCRIPT_COMMIT_SHA='"$(shell git rev-parse HEAD)"' envsubst '$(addprefix $,$(ENVSUBST_VARS))' < $< > $@
4216

43-
armhf-verify-install-raspbian-stretch:
44-
mkdir -p build
45-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
46-
set -o pipefail && docker run \
47-
--rm \
48-
-e VERSION \
49-
-v $(CURDIR):/v \
50-
-w /v \
51-
resin/rpi-raspbian:stretch \
52-
/v/verify-docker-install | tee $@
17+
.PHONY: shellcheck
18+
shellcheck: build/install.sh
19+
$(SHELLCHECK) $<
5320

54-
armhf-verify-install-%:
55-
mkdir -p build
56-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
57-
set -o pipefail && docker run \
58-
--rm \
59-
-e VERSION \
60-
-v $(CURDIR):/v \
21+
.PHONY: test
22+
test: build/install.sh
23+
docker run --rm -i \
24+
$(VOLUME_MOUNTS) \
6125
-w /v \
62-
arm32v7/$(subst -,:,$*) \
63-
/v/verify-docker-install | tee $@
64-
65-
aarch64-verify-install-%:
66-
mkdir -p build
67-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
68-
set -o pipefail && docker run \
69-
--rm \
7026
-e VERSION \
71-
-v $(CURDIR):/v \
72-
-w /v \
73-
arm64v8/$(subst -,:,$*) \
74-
/v/verify-docker-install | tee $@
27+
-e CHANNEL \
28+
$(TEST_IMAGE) \
29+
sh "$<"
7530

76-
s390x-verify-install-%:
77-
mkdir -p build
78-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
79-
set -o pipefail && docker run \
80-
--rm \
81-
-e VERSION \
82-
-v $(CURDIR):/v \
83-
-w /v \
84-
s390x/$(subst -,:,$*) \
85-
/v/verify-docker-install | tee $@
86-
87-
ppc64le-verify-install-%:
88-
mkdir -p build
89-
sed 's/DEFAULT_CHANNEL_VALUE="test"/DEFAULT_CHANNEL_VALUE="$(CHANNEL_TO_TEST)"/' install.sh > build/install.sh
90-
set -o pipefail && docker run \
91-
--rm \
92-
-e VERSION \
93-
-v $(CURDIR):/v \
94-
-w /v \
95-
ppc64le/$(subst -,:,$*) \
96-
/v/verify-docker-install | tee $@
31+
.PHONY: clean
32+
clean:
33+
$(RM) -r build/

install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ set -e
1616
#
1717
# Git commit from https://github.com/docker/docker-install when
1818
# the script was uploaded (Should only be modified by upload job):
19-
SCRIPT_COMMIT_SHA=UNKNOWN
19+
SCRIPT_COMMIT_SHA=${SCRIPT_COMMIT_SHA}
2020

2121

2222
# The channel to install from:

0 commit comments

Comments
 (0)