Skip to content

Commit 96894c9

Browse files
committed
Revert "Remove unused dockerlib utility and manifests. (#455)"
This reverts commit 22dc7af.
1 parent 21de24f commit 96894c9

File tree

12 files changed

+846
-0
lines changed

12 files changed

+846
-0
lines changed

Jenkinsfile

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
pipeline {
2+
agent any
3+
options { skipDefaultCheckout() }
4+
5+
environment {
6+
DOCKER_MAINTAINER = credentials("INFLUXDATA_DOCKER_MAINTAINER")
7+
}
8+
9+
stages {
10+
stage('Setup project workspace') {
11+
steps {
12+
dir('influxdata-docker') {
13+
checkout scm
14+
}
15+
}
16+
}
17+
18+
stage('Build docker images') {
19+
parallel {
20+
stage('chronograf') {
21+
steps {
22+
dir('influxdata-docker') {
23+
sh './circle-test.sh chronograf'
24+
}
25+
}
26+
}
27+
28+
stage('influxdb') {
29+
steps {
30+
dir('influxdata-docker') {
31+
sh './circle-test.sh influxdb'
32+
}
33+
}
34+
}
35+
36+
stage('kapacitor') {
37+
steps {
38+
dir('influxdata-docker') {
39+
sh './circle-test.sh kapacitor'
40+
}
41+
}
42+
}
43+
44+
stage('telegraf') {
45+
steps {
46+
dir('influxdata-docker') {
47+
sh './circle-test.sh telegraf'
48+
}
49+
}
50+
}
51+
}
52+
}
53+
54+
stage('Update official images') {
55+
steps {
56+
dir('official-images') {
57+
checkout(
58+
scm: [
59+
$class: 'GitSCM',
60+
branches: [[name: '*/master' ]],
61+
userRemoteConfigs: [[
62+
credentialsId: 'jenkins-hercules-ssh',
63+
url: '[email protected]:influxdata/official-images.git',
64+
]],
65+
],
66+
poll: false,
67+
)
68+
69+
// Reset master to the value at origin.
70+
sh "git checkout master && git reset --hard origin/master"
71+
}
72+
73+
dir('influxdata-docker') {
74+
sh "docker build -t influxdata/dockerlib:build-${BUILD_NUMBER} dockerlib"
75+
}
76+
77+
withDockerContainer(image: "influxdata/dockerlib:build-${BUILD_NUMBER}") {
78+
sh "cd influxdata-docker; dockerlib update"
79+
}
80+
}
81+
82+
post {
83+
always {
84+
sh "docker rmi -f influxdata/dockerlib:build-${BUILD_NUMBER}"
85+
}
86+
}
87+
}
88+
89+
stage('Push changes to GitHub') {
90+
when {
91+
expression {
92+
return sh(returnStatus: true, script: 'cd official-images; git diff --quiet') != 0
93+
}
94+
}
95+
96+
steps {
97+
dir('official-images') {
98+
sshagent(credentials: ['jenkins-hercules-ssh']) {
99+
sh """
100+
git -c user.name="Jonathan A. Sternberg" -c user.email="[email protected]" commit -am "Update influxdata images"
101+
git push origin master
102+
"""
103+
}
104+
105+
sh """
106+
desired_remote_url=git://github.com/docker-library/official-images.git
107+
if current_remote_url=\$(git remote get-url upstream 2> /dev/null); then
108+
if [ "\$current_remote_url" != "\$desired_remote_url" ]; then
109+
git remote set-url upstream "\$desired_remote_url"
110+
fi
111+
else
112+
git remote add upstream "\$desired_remote_url"
113+
fi
114+
"""
115+
116+
sh "docker pull jsternberg/hub"
117+
withEnv(["GITHUB_USER=${DOCKER_MAINTAINER_USR}", "GITHUB_TOKEN=${DOCKER_MAINTAINER_PSW}"]) {
118+
withDockerContainer(image: "jsternberg/hub") {
119+
sh """
120+
if ! hub pr show; then
121+
hub pull-request -m "Update influxdata images"
122+
fi
123+
"""
124+
}
125+
}
126+
}
127+
}
128+
}
129+
}
130+
131+
post {
132+
changed {
133+
script {
134+
if ( currentBuild.currentResult == 'SUCCESS' ) {
135+
slackSend(channel: '#docker-builds', color: '#00FF00', message: '@channel the docker build has returned back to normal.')
136+
} else {
137+
slackSend(channel: '#docker-builds', color: '#FF0000', message: '@channel the docker build has failed!')
138+
}
139+
}
140+
}
141+
}
142+
}

chronograf/manifest.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "chronograf",
3+
"maintainers": [
4+
"Jonathan A. Sternberg <[email protected]> (@jsternberg)",
5+
"Bucky Schwarz <[email protected]> (@hoorayimhelping)"
6+
],
7+
"versions": ["1.6", "1.7", "1.8"],
8+
"architectures": [
9+
"amd64",
10+
"arm32v7",
11+
"arm64v8"
12+
],
13+
"variants": [
14+
{"name": "alpine"}
15+
]
16+
}

dockerlib/Dockerfile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM golang:1.9.2-stretch as builder
2+
COPY . /go/src/github.com/influxdata/influxdata-docker/dockerlib
3+
RUN set -xe && \
4+
go get -d github.com/influxdata/influxdata-docker/dockerlib && \
5+
go install github.com/influxdata/influxdata-docker/dockerlib
6+
7+
FROM buildpack-deps:stretch-scm
8+
COPY --from=builder /go/bin/dockerlib /usr/bin/dockerlib
9+
ENTRYPOINT ["/usr/bin/dockerlib"]

dockerlib/commands.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package main
2+
3+
import (
4+
"os"
5+
6+
"path/filepath"
7+
8+
"fmt"
9+
10+
"github.com/influxdata/influxdata-docker/dockerlib/dockerlib"
11+
"github.com/spf13/cobra"
12+
)
13+
14+
var RootCmd = &cobra.Command{
15+
Use: "dockerlib",
16+
Short: "Manage docker official images",
17+
}
18+
19+
var UpdateCmd = &cobra.Command{
20+
Use: "update",
21+
Short: "Update the official-images repository",
22+
Run: func(cmd *cobra.Command, args []string) {
23+
if err := Update(); err != nil {
24+
fmt.Fprintf(os.Stderr, "Error: %s\n", err)
25+
os.Exit(1)
26+
}
27+
},
28+
}
29+
30+
func Update() error {
31+
// Locate all of the manifests within this repository.
32+
manifests, err := dockerlib.FindImageManifests()
33+
if err != nil {
34+
return err
35+
}
36+
37+
for _, m := range manifests {
38+
if len(m.Maintainers) == 0 {
39+
m.Maintainers = getDefaultMaintainers()
40+
}
41+
header := dockerlib.Header{}
42+
for _, maintainer := range m.Maintainers {
43+
header.Add("Maintainers", maintainer)
44+
}
45+
header.Add("GitRepo", remoteRepo)
46+
47+
rev, err := latestRev(m.BaseDir)
48+
if err != nil {
49+
return err
50+
}
51+
header.Add("GitCommit", rev)
52+
53+
if err := func() error {
54+
f, err := os.Create(filepath.Join("../official-images/library", m.Name))
55+
if err != nil {
56+
return err
57+
}
58+
defer f.Close()
59+
60+
if err := m.Write(f, &header); err != nil {
61+
return err
62+
}
63+
return f.Close()
64+
}(); err != nil {
65+
return err
66+
}
67+
}
68+
return nil
69+
}
70+
71+
func init() {
72+
RootCmd.AddCommand(UpdateCmd)
73+
}

dockerlib/dockerlib/header.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package dockerlib
2+
3+
import (
4+
"container/list"
5+
"fmt"
6+
"io"
7+
"strings"
8+
)
9+
10+
type keyValuePair struct {
11+
key string
12+
values []string
13+
}
14+
15+
type Header struct {
16+
values *list.List
17+
index map[string]*list.Element
18+
}
19+
20+
func (h *Header) Add(key, value string) {
21+
e, ok := h.index[key]
22+
if !ok {
23+
h.Set(key, value)
24+
return
25+
}
26+
27+
kv := e.Value.(*keyValuePair)
28+
kv.values = append(kv.values, value)
29+
}
30+
31+
func (h *Header) Set(key, value string) {
32+
if h.index == nil {
33+
h.index = make(map[string]*list.Element)
34+
}
35+
if h.values == nil {
36+
h.values = list.New()
37+
}
38+
values := make([]string, 1)
39+
values[0] = value
40+
h.index[key] = h.values.PushBack(&keyValuePair{
41+
key: key,
42+
values: values,
43+
})
44+
}
45+
46+
func (h *Header) Write(w io.Writer) error {
47+
for front := h.values.Front(); front != nil; front = front.Next() {
48+
kv := front.Value.(*keyValuePair)
49+
if kv.key == "Maintainers" {
50+
if err := h.writeMaintainers(w, kv.values); err != nil {
51+
return err
52+
}
53+
} else if _, err := fmt.Fprintf(w, "%s: %s\n", kv.key, strings.Join(kv.values, ", ")); err != nil {
54+
return err
55+
}
56+
}
57+
return nil
58+
}
59+
60+
func (h *Header) writeMaintainers(w io.Writer, values []string) error {
61+
if _, err := fmt.Fprint(w, "Maintainers: "); err != nil {
62+
return err
63+
}
64+
for i, value := range values {
65+
if _, err := fmt.Fprintf(w, "%s", value); err != nil {
66+
return err
67+
}
68+
if i < len(values)-1 {
69+
if _, err := fmt.Fprint(w, ",\n "); err != nil {
70+
return err
71+
}
72+
}
73+
}
74+
if _, err := fmt.Fprintln(w); err != nil {
75+
return err
76+
}
77+
return nil
78+
}

0 commit comments

Comments
 (0)