diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 96a638ed..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,84 +0,0 @@ -version: 2 -jobs: - linting: - docker: - - image: circleci/golang:1.10 - working_directory: /go/src/github.com/filebrowser/filebrowser - steps: - - checkout - - run: - name: Install Dependencies - command: | - curl -sL -o $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 - chmod +x $GOPATH/bin/dep - dep ensure -v - go get github.com/alecthomas/gometalinter - gometalinter --install - - run: - name: Run linting - command: | - gometalinter --exclude="rice-box.go" \ - --deadline=300s \ - -D goconst \ - -D gocyclo \ - -D vetshadow \ - -D errcheck \ - -D golint \ - -D gas \ - -D gosec - build: - docker: - - image: circleci/golang:1.10 - working_directory: /go/src/github.com/filebrowser/filebrowser - steps: - - checkout - - run: - name: Install Dependencies - command: | - curl -sL -o $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 - chmod +x $GOPATH/bin/dep - dep ensure -v - - run: - name: Building - command: go build github.com/filebrowser/filebrowser/cmd/filebrowser - deploy: - docker: - - image: circleci/golang:1.10 - working_directory: /go/src/github.com/filebrowser/filebrowser - steps: - - checkout - - run: - name: Install Dependencies - command: | - curl -sL -o $GOPATH/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 - chmod +x $GOPATH/bin/dep - dep ensure -v - - run: - name: Deploy - command: curl -sL https://git.io/goreleaser | bash - -workflows: - version: 2 - lint-build-deploy: - jobs: - - linting: - filters: - tags: - only: /.*/ - branches: - only: /.*/ - - build: - filters: - tags: - only: /.*/ - branches: - only: /.*/ - - deploy: - requires: - - linting - - build - filters: - tags: - only: /v[0-9]+(\.[0-9]+)*(-.*)*/ - branches: - ignore: /.*/ diff --git a/.gometalinter.json b/.gometalinter.json new file mode 100644 index 00000000..85d6e6aa --- /dev/null +++ b/.gometalinter.json @@ -0,0 +1,38 @@ +{ + "Enable": [ + "deadcode", + "gotype", + "gotypex", + "ineffassign", + "interfacer", + "maligned", + "megacheck", + "structcheck", + "unconvert", + "varcheck", + "vet" + ], + "Disable": [ + "dupl", + "errcheck", + "gas", + "gochecknoglobals", + "gochecknoinits", + "goconst", + "gocyclo", + "gofmt", + "goimports", + "golint", + "gosimple", + "lll", + "misspell", + "nakedret", + "safesql", + "staticcheck", + "test", + "testify", + "unparam", + "unused", + "vetshadow" + ] +} diff --git a/.goreleaser.yml b/.goreleaser.yml index 84543a50..a7b73f97 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -37,3 +37,6 @@ archive: format_overrides: - goos: windows format: zip + +release: + disable: true \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 0d39b4d4..dbe2fb3e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,18 +6,52 @@ addons: apt: packages: - docker-ce -script: - - USE_DOCKER="true" ./build/build_all.sh - - "./build/build_img.sh" -deploy: - provider: script - skip_cleanup: true - script: - - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin && docker push filebrowser/filebrowser && docker logout - on: - repo: 1138-4EB/filebrowser - branch: master env: global: + - USE_DOCKER="true" + - WDIR=/go/src/github.com/filebrowser/filebrowser - secure: YtxLrM3z2A/wDh5yLXrMXgsMRr+c7v5auS/2SpNxra0E6fcFKNPtk2g6JB4JfpFRp6feeuwtT61b16OdHjNVcwtZPLEdM1o7nUaLd+UxxKYlXwMSl+Hqaclx5KbBwlVCU3BKJjPVY/RujjSgOGG7C9b40E8YBssVIxyM51qV+u4C7Odu99ZC42OnFG8n+SsdP2xdI7BFw5qJTmNAgnns4QEAiZi++YMtsYmoo828mNpYX093N1VeW81JHeHo82Xwifpeij2fxuOkGAf2JMOuYrH+Mn+jgAiSUGkNRKhaA5do3ov6tSiCWZtQjrAIFk56knXaeeIO+ysryJ+BO9w2qquI1IYktpIemZjjoz24qKeUY0suxPdEe7cH17/P6n2LHUyXiUyUpjRX2bFqo6kfAoMc6oPqgOWu8Ls5GwuEHqCwsZXTVy4ZqNYiAIgk85lUecm9uy+Ubtu4bCdJpDlkC9jGow4Wn/6lHNxsuGWfBR1P94WtC+qmrZf/xje3A5xKATtZtLrfc0tLdsH5VYDyIZ4WYWOIrCemayjXK3RJxN+qQDxaPWPG0cmHAxPslUyHE1eDxy1hCkCZx82Qjr1dX8Xx5tO4SoBayV9pmJo4+IyEb711NQyYrA/EdDswMmrVJNLBY+yDK6umkMlcIuRkVQanOydgRrusbKuQoAGOQRE= - secure: d+4aM/IGqszna5Yv7M+6wWmdzafSkPH5qJtvd5Jac6QUxMhDIzIN+br+Sf2PNougZso7EsaFHlZQKatSmCM+DsVy2Ke5DB82icTsMyBzano8GF+eYm9BJUhgOk933ygsDKRFvfaiwAPjGgyFDwLAc4CPc/Lly/mqs4wyyekFgTWvIF+AG9GaigCkQB14Ud70BJ0PBCGh82lqKSY32r7ti/G5uNrD5DFIOpUmoq9NWeX7tAvWi6iWWCdndmAnT7aRpb7oprgMTm4Jc7CguJvz2pKh6a2ncY29nuvr0DNEfXRGiGKAZAck852ad/pwSa04Uwi1j5arFAZuRgtldhksFQPWZM4s7SP9e6LpSWU4+QyuXY5R1Rs5KtdREd3J27z2RmFm0m5vMkUTGMMHvw+qOrITVovWKme+ptOKytpIVgoxmzA/Y2/aS0JxN78nuLfX5v24+yDQ1aIxtjTzQufkGyFPMqwDPV0ZO5/Ez0FP1lPWd5cRrL77ako1sTVje4Up08VwcmJueJH2Xv7YfmvYR0w/VMymEliKpDsTJ6A7/o+Y2gyi6mwTjg7q/6aXTBoxVH/3LFABJeBQWqhIaDTdk5xjutEGUKyUMoHjW6fqTvoErLRfwz8dSh1GBtLNz7AqVd2v7tnVzo0iFPIlyqvhUiHQX7M0+lPOz0hQ581VlHw= +stages: +- lint +- test +- release +cache: + directories: + - vendor + - rice-box.go +jobs: + include: + - stage: lint + script: "./build/run_gometalinter.sh" + - stage: test + script: "./build/build_all.sh" + deploy: + provider: script + skip_cleanup: true + script: + - cp dockerfiles/filebrowser Dockerfile + - docker build -t filebrowser/filebrowser . + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker push filebrowser/filebrowser + - docker logout + on: + tags: false + repo: 1138-4EB/filebrowser + branch: master + - stage: release + script: + - cp dockerfiles/filebrowser Dockerfile + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker run --rm -itv $(pwd):$WDIR filebrowser/dev goreleaser + - docker logout + if: tag IS present + deploy: + provider: releases + api_key: + secure: fEJu6vcxplTZ3ZR/fALLBp4mPWViIba4aeoiwNVJ9zqKmiZ5KG0pRqTMyevt8JUlR9yW0QNAfzkpd+wCqBHVWKIOy9Sy1Ocp3D0TY23ZAV29qKWwON9alBPqs6X6v6FiO0JFf5tARd+bpTmB3gFEUL1AGJ/UADv15fjwTERWlueloP6jmUCTCZEaTxkwrWxM8eBcMb3RlQykVKCMAZ5lGILWEKvJ8eBA7eP6GQtscCyS4tud+UWUb60VAufSPFv5K99dapm/1EXTTjgbtiY/zPP6FigR2RN/F6U0IUeEZbmftWcuDsp6lG4qInfwB1wK22F62KV193h8kgFDd8fB3hZuBVqBMtCxhuDFUFpULo2nAK8yyJP4/nc8SejHTxgFmIMhnUxLcE0om0E6bD6dFGNON08Bb/DheIvTzJSl44x6BomC/6xKKUp/GI6jGIxhV7YuWSJB4V3/5kG2ePbjEn/L+9BLY6L0kY7eea31xpSdDk881p0NOCN0lrD8RcDFf9qBtVhsh/RG2nbloC9mJI1iLTX/JRK4Rg1FROtsOE7PWPy3DbDB1rEweea2qahIbThbvfYbIhCYi0Oly6aeSJYfphQFY/hyNNrZZmWCq9gejVZelLDiYEV8Zkorhn4i/hPQ13nkVn1Rbd8jacoM1i3M4S4hkhjzlBIB+N2qudE= + file: "dist/*.tar.gz" + file_glob: true + on: + repo: 1138-4EB/filebrowser + all_branches: true diff --git a/build/run_gometalinter.sh b/build/run_gometalinter.sh new file mode 100755 index 00000000..2e7a7f20 --- /dev/null +++ b/build/run_gometalinter.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +cd $(dirname $0)/.. + +dolint='gometalinter --exclude="rice-box.go" --deadline=300s' + +if [ "$USE_DOCKER" != "" ]; then + docker run --rm -itv $(pwd):/src filebrowser/dev sh -c "\ + cp -r /src/. ./ && dep ensure -v -vendor-only && \ + CGO_ENABLED=0 $dolint" +else + $dolint +fi \ No newline at end of file diff --git a/dockerfiles/dev b/dockerfiles/dev index fbbaaecd..ceb19ac0 100644 --- a/dockerfiles/dev +++ b/dockerfiles/dev @@ -1,13 +1,25 @@ +FROM golang:alpine AS base + +RUN apk add -U --no-cache git && \ + go get github.com/alecthomas/gometalinter && \ + gometalinter --install + FROM golang:alpine +WORKDIR /go/src/github.com/filebrowser/filebrowser + +COPY --from=base /go/bin /go/bin + RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories && \ sed -i -e "s/v[0-9]\.[0-9]/edge/g" /etc/apk/repositories && \ apk --no-cache -U upgrade && apk --no-cache add ca-certificates yarn git curl dos2unix && \ go get github.com/GeertJohan/go.rice/rice && \ - curl -fsSL -o /usr/local/bin/dep $( \ + curl -fsSL -o /go/bin/dep $( \ curl -s https://api.github.com/repos/golang/dep/releases/latest \ | grep "browser_download_url.*linux-amd64\"" \ | cut -d : -f 2,3 \ | tr -d \" \ ) && \ - chmod +x /usr/local/bin/dep + chmod +x /go/bin/dep && \ + curl -sL https://git.io/goreleaser -o /go/bin/goreleaser && \ + chmod +x /go/bin/goreleaser