diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..30d45bd95 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +vendor/ +**/docker-compose.yml diff --git a/.gitignore b/.gitignore index 76ef4d8f9..74e99862c 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,7 @@ _testmain.go .idea .vscode debug -debug.test \ No newline at end of file +debug.test + +# CI +version.txt \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0d4fb385e..000000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: go -go: - - "1.9.5" - - "1.10.1" -sudo: false -install: - - GLIDE_TAG=v0.12.3 - - GLIDE_DOWNLOAD="https://github.com/Masterminds/glide/releases/download/$GLIDE_TAG/glide-$GLIDE_TAG-linux-amd64.tar.gz" - - curl -L $GLIDE_DOWNLOAD | tar -xvz - - export PATH=$PATH:$PWD/linux-amd64/ - - glide install - - go install . ./cmd/... - - go get -u gopkg.in/alecthomas/gometalinter.v2 - - gometalinter.v2 --install -script: - - export PATH=$PATH:$HOME/gopath/bin - - ./goclean.sh diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..3a6069c4d --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,43 @@ +# -- multistage docker build: stage #1: build stage +FROM golang:1.10-alpine AS build + +RUN mkdir -p /go/src/github.com/daglabs/btcd + +WORKDIR /go/src/github.com/daglabs/btcd + +RUN apk add --no-cache curl git openssh binutils gcc musl-dev +RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh +RUN go get -u github.com/golang/lint/golint \ + github.com/kisielk/errcheck \ + github.com/opennota/check/cmd/aligncheck \ + github.com/opennota/check/cmd/structcheck \ + github.com/opennota/check/cmd/varcheck + +COPY ./Gopkg.* ./ + +RUN dep ensure -v --vendor-only + +COPY . . + +RUN gofmt -d -e -s . \ + && go tool vet -all . \ + && golint -set_exit_status . \ + && aligncheck . \ + && structcheck -e . \ + && varcheck -e . +RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o btcd . +RUN strip btcd + +RUN go test ./... + +# --- multistage docker build: stage #2: runtime image +FROM alpine +WORKDIR /app + +RUN apk add --no-cache ca-certificates tini + +COPY --from=build /go/src/github.com/daglabs/btcd/btcd /app/ +COPY --from=build /go/src/github.com/daglabs/btcd/version.txt /app/ + +USER nobody +ENTRYPOINT [ "/sbin/tini", "--" ] \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..3d9f2d3fa --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3' +services: + first: + image: 956501169541.dkr.ecr.us-east-1.amazonaws.com/btcd:latest + command: [ + "btcd", + "--testnet", + "--addrindex", + "--generate", + "--miningaddr=dagtest:qrm4zaetvny2yuh4wudf8y43fd20lunkxs8quragg8", + "--rpcuser=user", + "--rpcpass=pass", + "--rpclisten=0.0.0.0:18334", + "--rpccert=docker/rpc.cert", + "--rpckey=docker/rpc.key" + ] + ports: ["18334:18334"] + second: + image: 956501169541.dkr.ecr.us-east-1.amazonaws.com/btcd:latest + links: ["first"] + command: [ + "btcd", + "--testnet", + "--addrindex", + "--connect=first" + ] diff --git a/docker/rpc.cert b/docker/rpc.cert new file mode 100644 index 000000000..810786628 --- /dev/null +++ b/docker/rpc.cert @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICxjCCAiegAwIBAgIRAPJqXxfYxt2SS4zBDePySIcwCgYIKoZIzj0EAwQwNDEg +MB4GA1UEChMXYnRjZCBhdXRvZ2VuZXJhdGVkIGNlcnQxEDAOBgNVBAMTB1N0YXMt +UEMwHhcNMTgxMDAzMDkyNjI4WhcNMjgxMDAxMDkyNjI4WjA0MSAwHgYDVQQKExdi +dGNkIGF1dG9nZW5lcmF0ZWQgY2VydDEQMA4GA1UEAxMHU3Rhcy1QQzCBmzAQBgcq +hkjOPQIBBgUrgQQAIwOBhgAEAdQ6qvceZamb3kxvznD5WS22j+qZjZbFnakE7hmc +8C9l+7mx110qnGpflvk8kX2YIMeV68S8ZMPQr81zNNiQAc45AfZhKQvGGxeYiUAu +gSEsXyUbKYOZZTRVu3FA5i6fmC8yB0M/2HpVC3AgGViPR/1i/PzxL9olnvYpL2bw +mS61JUD9o4HWMIHTMA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MIGv +BgNVHREEgacwgaSCB1N0YXMtUEOCCWxvY2FsaG9zdIcEfwAAAYcQAAAAAAAAAAAA +AAAAAAAAAYcQ/oAAAAAAAADopxgiQ7Ww/YcEwKgQA4cQ/oAAAAAAAABE0sNmcRO4 +G4cEwKg4AYcQ/oAAAAAAAACxJJdG4/zVLIcEqf7VLIcQ/oAAAAAAAACE0Z2jFy6T +TYcEqf6TTYcQ/oAAAAAAAAAc1wgMEFA684cEwKgSFDAKBggqhkjOPQQDBAOBjAAw +gYgCQgDsBor/CJyCyljrvXTDhWoctL28dsTjb512+KXGjH1Gpr6g+1P1OGKJrVWu +d7M3GzOWT58y4qS63wwVwtL5lSAHhQJCAQZ0HVaGpmrY+S9yMxU1qrFlDyLt1GGA +Z+KWzqPj4NBftX6p5lrcw3reS+aOnAsQNKvIVHCrQl/mhzpPvkLLNqjq +-----END CERTIFICATE----- diff --git a/docker/rpc.key b/docker/rpc.key new file mode 100644 index 000000000..287089c9a --- /dev/null +++ b/docker/rpc.key @@ -0,0 +1,7 @@ +-----BEGIN EC PRIVATE KEY----- +MIHcAgEBBEIA8VXso04KwmMXkgRkJrVMP2uOuB8zhcxzzFsPYUpYDKHDItEL1XBK +Ffa0UXtBxOdOPK7lFtXjoao6iwNvPOxSJSCgBwYFK4EEACOhgYkDgYYABAHUOqr3 +HmWpm95Mb85w+Vktto/qmY2WxZ2pBO4ZnPAvZfu5sdddKpxqX5b5PJF9mCDHlevE +vGTD0K/NczTYkAHOOQH2YSkLxhsXmIlALoEhLF8lGymDmWU0VbtxQOYun5gvMgdD +P9h6VQtwIBlYj0f9Yvz88S/aJZ72KS9m8JkutSVA/Q== +-----END EC PRIVATE KEY-----