From f91ee24858116d7a313bdf8d57a994abbbc3f2a8 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Wed, 18 Apr 2018 17:27:28 +0200 Subject: [PATCH 01/20] drop package.json, use yarn instad of npm, add build_in_docker.sh --- .gitignore | 2 +- build.sh | 21 ++++++++++++++++----- build_in_docker.sh | 17 +++++++++++++++++ filebrowser.go | 2 +- package.json | 8 -------- 5 files changed, 35 insertions(+), 15 deletions(-) create mode 100644 build_in_docker.sh delete mode 100644 package.json diff --git a/.gitignore b/.gitignore index 98b81469..aecda952 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .DS_Store -node_modules/ +frontend/ */dist/* *.db *.db.lock diff --git a/build.sh b/build.sh index fc2fca57..6c060753 100644 --- a/build.sh +++ b/build.sh @@ -1,14 +1,25 @@ -#!/bin/bash +#!/bin/sh set -e +cd $(dirname $0) + +# Clean the dist folder and build the assets +if [ ! -d "frontend" ]; then + git clone -b master https://github.com/filebrowser/frontend +fi; +cd frontend +if [ -d "dist" ]; then + rm -rf dist/* +fi; +yarn install +yarn build + +cd .. + # Install rice tool if not present if ! [ -x "$(command -v rice)" ]; then go get github.com/GeertJohan/go.rice/rice fi -# Clean the dist folder and build the assets -rm -rf node_modules -npm install - # Embed the assets using rice rice embed-go diff --git a/build_in_docker.sh b/build_in_docker.sh new file mode 100644 index 00000000..21312ef2 --- /dev/null +++ b/build_in_docker.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +cd $(dirname $0) + +docker pull golang:alpine + +$(command -v winpty) docker run --rm -it \ + -v /$(pwd)://src \ + -w //src \ + golang:alpine \ + sh -c '\ + 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 add -U --no-cache yarn git && \ + go get github.com/GeertJohan/go.rice/rice && \ + ./build.sh \ + ' diff --git a/filebrowser.go b/filebrowser.go index 1b23e24a..3879bbb1 100644 --- a/filebrowser.go +++ b/filebrowser.go @@ -119,7 +119,7 @@ type FSBuilder func(scope string) FileSystem func (m *FileBrowser) Setup() error { // Creates a new File Browser instance with the Users // map and Assets box. - m.Assets = rice.MustFindBox("./node_modules/filebrowser-frontend/dist") + m.Assets = rice.MustFindBox("./frontend/dist") m.Cron = cron.New() // Tries to get the encryption key from the database. diff --git a/package.json b/package.json deleted file mode 100644 index 76d69197..00000000 --- a/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "filebrowser", - "author": "File Browser contributors", - "private": true, - "dependencies": { - "filebrowser-frontend": "1.6.0" - } -} From d11aa8de6b2a248cb44a4624b2761c01ddde836d Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Thu, 19 Apr 2018 08:16:01 +0200 Subject: [PATCH 02/20] add filebrowser/filebrowser:dev, move dep execution to build.sh --- Dockerfile | 9 +-------- Dockerfile.dev | 13 +++++++++++++ build.sh | 3 +++ build_in_docker.sh | 15 +++++++-------- 4 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 Dockerfile.dev diff --git a/Dockerfile b/Dockerfile index 024f6be1..38f3f35f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,13 @@ FROM golang:alpine COPY . /go/src/github.com/filebrowser/filebrowser - -WORKDIR /go/src/github.com/filebrowser/filebrowser -RUN apk --no-cache --update upgrade && apk --no-cache add ca-certificates git curl && \ - curl -fsSL -o /usr/local/bin/dep https://github.com/golang/dep/releases/download/v0.4.1/dep-linux-amd64 && \ - chmod +x /usr/local/bin/dep -RUN dep ensure -vendor-only - WORKDIR /go/src/github.com/filebrowser/filebrowser/cmd/filebrowser RUN CGO_ENABLED=0 go build -a RUN mv filebrowser /go/bin/filebrowser FROM scratch COPY --from=0 /go/bin/filebrowser /filebrowser -COPY --from=0 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY --from=filebrowser/dev /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt VOLUME /tmp VOLUME /srv diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 00000000..fbbaaecd --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,13 @@ +FROM golang:alpine + +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 -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 diff --git a/build.sh b/build.sh index 6c060753..89ee9981 100644 --- a/build.sh +++ b/build.sh @@ -1,4 +1,5 @@ #!/bin/sh + set -e cd $(dirname $0) @@ -16,6 +17,8 @@ yarn build cd .. +dep ensure -vendor-only + # Install rice tool if not present if ! [ -x "$(command -v rice)" ]; then go get github.com/GeertJohan/go.rice/rice diff --git a/build_in_docker.sh b/build_in_docker.sh index 21312ef2..767660b1 100644 --- a/build_in_docker.sh +++ b/build_in_docker.sh @@ -1,17 +1,16 @@ #!/bin/sh +set -e + cd $(dirname $0) -docker pull golang:alpine +WORKDIR="/go/src/github.com/filebrowser/filebrowser" $(command -v winpty) docker run --rm -it \ - -v /$(pwd)://src \ - -w //src \ - golang:alpine \ + -v /$(pwd):/${WORKDIR} \ + -w /${WORKDIR} \ + filebrowser/filebrowser:dev \ sh -c '\ - 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 add -U --no-cache yarn git && \ - go get github.com/GeertJohan/go.rice/rice && \ + dos2unix build.sh && \ ./build.sh \ ' From a2e293292ec9f946d14a47d16f6741f2b28d0c8c Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Wed, 6 Jun 2018 20:55:18 +0100 Subject: [PATCH 03/20] add filebrowser/frontend as a submodule --- .gitignore | 1 - .gitmodules | 3 +++ build.sh | 4 ---- frontend | 1 + 4 files changed, 4 insertions(+), 5 deletions(-) create mode 100644 .gitmodules create mode 160000 frontend diff --git a/.gitignore b/.gitignore index aecda952..d6c1e4fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .DS_Store -frontend/ */dist/* *.db *.db.lock diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..41ab3862 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "frontend"] + path = frontend + url = https://github.com/filebrowser/frontend diff --git a/build.sh b/build.sh index 89ee9981..ae818c56 100644 --- a/build.sh +++ b/build.sh @@ -5,16 +5,12 @@ set -e cd $(dirname $0) # Clean the dist folder and build the assets -if [ ! -d "frontend" ]; then - git clone -b master https://github.com/filebrowser/frontend -fi; cd frontend if [ -d "dist" ]; then rm -rf dist/* fi; yarn install yarn build - cd .. dep ensure -vendor-only diff --git a/frontend b/frontend new file mode 160000 index 00000000..f5c48c96 --- /dev/null +++ b/frontend @@ -0,0 +1 @@ +Subproject commit f5c48c9679ef16f2d2dfb88d7cdcea929463f2ed From 703318c2142a84b12094da66c6cee2aaea3f6fc5 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Wed, 6 Jun 2018 21:02:00 +0100 Subject: [PATCH 04/20] add travis --- .travis.yml | 23 +++++++++++++++++++ Dockerfile | 18 --------------- build/build.sh | 12 ++++++++++ build/build_all.sh | 38 +++++++++++++++++++++++++++++++ build.sh => build/build_assets.sh | 4 +--- build/build_img.sh | 9 ++++++++ build/build_img_dev.sh | 12 ++++++++++ build_in_docker.sh | 16 ------------- Dockerfile.dev => dockerfiles/dev | 0 dockerfiles/filebrowser | 12 ++++++++++ publish.sh | 4 +++- 11 files changed, 110 insertions(+), 38 deletions(-) create mode 100644 .travis.yml delete mode 100644 Dockerfile create mode 100755 build/build.sh create mode 100755 build/build_all.sh rename build.sh => build/build_assets.sh (88%) mode change 100644 => 100755 create mode 100755 build/build_img.sh create mode 100755 build/build_img_dev.sh delete mode 100644 build_in_docker.sh rename Dockerfile.dev => dockerfiles/dev (100%) create mode 100644 dockerfiles/filebrowser diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..0d39b4d4 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +os: linux +services: docker +language: minimal +install: skip +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: + - 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= diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 38f3f35f..00000000 --- a/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM golang:alpine - -COPY . /go/src/github.com/filebrowser/filebrowser -WORKDIR /go/src/github.com/filebrowser/filebrowser/cmd/filebrowser -RUN CGO_ENABLED=0 go build -a -RUN mv filebrowser /go/bin/filebrowser - -FROM scratch -COPY --from=0 /go/bin/filebrowser /filebrowser -COPY --from=filebrowser/dev /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt - -VOLUME /tmp -VOLUME /srv -EXPOSE 80 - -COPY Docker.json /config.json - -ENTRYPOINT ["/filebrowser", "--config", "/config.json"] diff --git a/build/build.sh b/build/build.sh new file mode 100755 index 00000000..4ba8ad8f --- /dev/null +++ b/build/build.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +cd $(dirname $0)/.. + +dep ensure -vendor-only + +cd cmd/filebrowser +CGO_ENABLED=0 go build -a +cd ../.. +cp cmd/filebrowser/filebrowser ./ diff --git a/build/build_all.sh b/build/build_all.sh new file mode 100755 index 00000000..ac14d211 --- /dev/null +++ b/build/build_all.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +cd $(dirname $0)/.. + +if [ "$USE_DOCKER" != "" ]; then + if [ -d "frontend/dist" ]; then + rm -rf frontend/dist + fi; + WORKDIR="/go/src/github.com/filebrowser/filebrowser" + + $(command -v winpty) docker run -it \ + --name filebrowser-tmp \ + -v /$(pwd):/src:z \ + -w /${WORKDIR} \ + filebrowser/dev \ + sh -c "\ + cp -r //src/* /$WORKDIR && \ + cd build && \ + dos2unix build_assets.sh && \ + dos2unix build.sh && \ + ./build_assets.sh && \ + ./build.sh \ + " + exitcode=$? + + if [ $exitcode -eq 0 ]; then + for d in "dist/" "node_modules/"; do + docker cp filebrowser-tmp:/$WORKDIR/frontend/$d frontend + done + for d in "vendor/" "rice-box.go" "filebrowser"; do + docker cp filebrowser-tmp:/$WORKDIR/$d ./ + done + fi + docker rm -f filebrowser-tmp +else + ./build/build_assets.sh + ./build/build.sh +fi diff --git a/build.sh b/build/build_assets.sh old mode 100644 new mode 100755 similarity index 88% rename from build.sh rename to build/build_assets.sh index ae818c56..bd86ac6f --- a/build.sh +++ b/build/build_assets.sh @@ -2,7 +2,7 @@ set -e -cd $(dirname $0) +cd $(dirname $0)/.. # Clean the dist folder and build the assets cd frontend @@ -13,8 +13,6 @@ yarn install yarn build cd .. -dep ensure -vendor-only - # Install rice tool if not present if ! [ -x "$(command -v rice)" ]; then go get github.com/GeertJohan/go.rice/rice diff --git a/build/build_img.sh b/build/build_img.sh new file mode 100755 index 00000000..af1bcee5 --- /dev/null +++ b/build/build_img.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +cd $(dirname $0)/.. + +cp dockerfiles/filebrowser Dockerfile +docker build -t filebrowser/filebrowser . +rm -f Dockerfile diff --git a/build/build_img_dev.sh b/build/build_img_dev.sh new file mode 100755 index 00000000..d196069e --- /dev/null +++ b/build/build_img_dev.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +cd $(dirname $0)/.. + +mkdir -p tmp-dev +cd tmp-dev +cp ../dockerfiles/dev Dockerfile +docker build -t filebrowser/dev . +cd .. +rm -rf tmp-dev diff --git a/build_in_docker.sh b/build_in_docker.sh deleted file mode 100644 index 767660b1..00000000 --- a/build_in_docker.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -set -e - -cd $(dirname $0) - -WORKDIR="/go/src/github.com/filebrowser/filebrowser" - -$(command -v winpty) docker run --rm -it \ - -v /$(pwd):/${WORKDIR} \ - -w /${WORKDIR} \ - filebrowser/filebrowser:dev \ - sh -c '\ - dos2unix build.sh && \ - ./build.sh \ - ' diff --git a/Dockerfile.dev b/dockerfiles/dev similarity index 100% rename from Dockerfile.dev rename to dockerfiles/dev diff --git a/dockerfiles/filebrowser b/dockerfiles/filebrowser new file mode 100644 index 00000000..c02c3037 --- /dev/null +++ b/dockerfiles/filebrowser @@ -0,0 +1,12 @@ +FROM scratch + +COPY --from=filebrowser/dev /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt + +VOLUME /tmp +VOLUME /srv +EXPOSE 80 + +COPY filebrowser /filebrowser +COPY Docker.json /config.json + +ENTRYPOINT ["/filebrowser", "--config", "/config.json"] diff --git a/publish.sh b/publish.sh index e119218a..660ce463 100644 --- a/publish.sh +++ b/publish.sh @@ -1,8 +1,10 @@ #!/bin/bash set -e +cd $(dirname $0) + echo "Building assets" -./build.sh +./build/build_assets.sh echo "Updating version number to $1..." sed -i "s|(untracked)|$1|g" filebrowser.go From de7a8cee605a531bb113a9bf0d87fc355b09ab50 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Sun, 1 Jul 2018 05:35:53 +0100 Subject: [PATCH 05/20] add gometalinter and goreleaser to travis, drop circleci --- .circleci/config.yml | 84 --------------------------------------- .gometalinter.json | 38 ++++++++++++++++++ .goreleaser.yml | 3 ++ .travis.yml | 56 +++++++++++++++++++++----- build/run_gometalinter.sh | 15 +++++++ dockerfiles/dev | 16 +++++++- 6 files changed, 115 insertions(+), 97 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .gometalinter.json create mode 100755 build/run_gometalinter.sh 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 From 569354c4934201a538deabcabe2e419929162e57 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Sun, 1 Jul 2018 09:30:23 +0100 Subject: [PATCH 06/20] ignore rice-box.go --- .gitignore | 1 + rice-box.go | 259 ---------------------------------------------------- 2 files changed, 1 insertion(+), 259 deletions(-) delete mode 100644 rice-box.go diff --git a/.gitignore b/.gitignore index d6c1e4fe..1b7bd07b 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ yarn-error.log* package-lock.json yarn.lock vendor +rice-box.go diff --git a/rice-box.go b/rice-box.go deleted file mode 100644 index 5df38dbe..00000000 --- a/rice-box.go +++ /dev/null @@ -1,259 +0,0 @@ -package filebrowser - -import ( - "github.com/GeertJohan/go.rice/embedded" - "time" -) - -func init() { - - // define files - file2 := &embedded.EmbeddedFile{ - Filename: "index.html", - FileModTime: time.Unix(499162500, 0), - Content: string("
{\xcf1J\xf5\xa1\xa4\x0fg\xb6\xc5\x00\x1c\x8f\x11\x17 \xcbN\xfb\x9ai\xee\fj\xb5\xdd\xf4+\x17IkZf\xb6\f\x1b\x9b\x8c\xfe\xe9\xef\x8dVUK\v\x8b\xa4\x8f\xd6Jw\xad0jutـs\x8f>\xf7\x8a\x0ev\xf7k0<\xae\xc1\xf0\xb8\x9e;xL\xbb\x0e\x1cM\xebYq#u\x84-}\xbd\xc3\xd2W\xf6JÓ\xd3+ۚ\x96T[\xdb\xd5\x19\xd4\xeaӾf\x9a3\xdbb\x00\x8eG\xe0\x02d٢Z\xfd0\xe9`\xea\xc6\xc9\xfa\v;\xe6ϓ\xaeX\xfc\x0e\xefj6\x19]\xb1\x9f8\xc1\x9cU\"9\xbd\xf9\x9ep\xdc\xd2o\x83\x96n{%1\xed\xf29i\xeb\xa4I\xf5\xe5̷\x12\x80wC\xe0\x02dQK\x9bi\xe8\fj\x8d\xdd\xf4k\xdf+\xadX8\xb3ex_\x85\xe4y\x87褪@:y\x06\xb7\x1cg\x8b\x91\x94\x8c\x8d+\x91\x98^\xf0\xb2ba\xaa\xcd\xed\xea\fjMK\x9bip\xbb\xfe@>!p\x01\xb2\xe8\x94\x06]\xefd\xfb\xf3\xa6sf~U\xed\xc4\x14\x03\x1c\xd1\x19Z\xf0\x9au\xc6(\xd8\xd7'3͕țα\xbf\x9e(\x91\x94uJ\x83\xaew\xbb\xea@>!p\x01\xb2h8\xa2\xcb\xec\xa6\xfd\xf4\xfb\xa5&\a;]\xec\xda5(\r\xc6N\xfc\xbd\x97F\xa5\xbe\xa8[\xad3}\xb1XL\x83\x03\xd3[a\xdc\x14H\xb5\xbd]N\xfa\x14\xc0\xf4\x11\xb8\x00Y\xb2\xe2\x1bfE\xef\x88l\x85\"\xf3\n\xa4\x8dk3\xb3\x87y$.]\xffWK\x03\xc7\x05/\xc7ƥ\x1b^\x9a\xfdgR\x86\xc3a\x8d\x85\xc3\xd3z\xc6ƵF\xf3\n\xec\xa5\xed\x1dQ`\xc57\xcc\n\xb7\xeb\r\xe4\v\xb6C\x03Y\xb2\xb8F7\xbc\xd2c/\xed\xfaUR\xa0,seyzP\xfa\x87\xbfX\xfah\xadt\xd2<\xa9+\"=\x11\x9a\xc5\xd3D\xc7\x19\x18\x18P\x81\xdf/\xbf?\xbd\xeb\t\x02e\xa9>\xb8\xfb\x8f\xf6\xd2/\xae\xd1\r{\xa4\x8bܮ7\x90\x0f\x18q\x01\xb2\xa0\xa5\xcdx\xbb\x87\xb5\xcen\xfaϜ\x91\xf9\x13\xe3F\xe2\xd2#=\xd2]]\xd2\xef\xfa\xe6N\xd0\"I\xc6\x18\x85\x82A%\xa7\xb1c\xc9I\x1ft\x0fk]K\x9b\xf1\xba]o \x1f\x10\xb8\x00YPZ\xa8\xb3G\xc6ek\xbfΊ\x85Ң\x1a\xb7K<\xfb\xc5\xe3q\x85B\xa1\xb4\xf3/\xaa\xb1\xbf\xa3kd\\E\xa5\x85:\xdb\xed:\x03\xf9\x80\xc0\x05Ȃ\x93\xab\xed\xdf&ܺr\x8e\x9c\xcf\u007f\x02'U\xbd}\xfe\xab\xb1\xaa {{ text }} {{ $t('search.images') }} {{ $t('search.music') }} {{ $t('search.video') }} {{ $t('search.pdf') }} autorenew 1\\\">{{ $t('prompts.filesSelected', { count: selected.length }) }} {{ $t('prompts.displayName') }} {{ name() }} {{ $t('prompts.size') }}: {{ humanSize() }} {{ $t('prompts.lastModified') }}: {{ humanTime() }} {{ $t('prompts.numberFiles') }}: {{ req.numFiles }} {{ $t('prompts.numberDirs') }}: {{ req.numDirs }} SHA1: SHA256: SHA512: {{ $t('prompts.deleteMessageSingle') }} {{ $t('prompts.deleteMessageMultiple', { count: selectedCount}) }} {{ $t('prompts.renameMessage') }} {{ $t('prompts.downloadMessage') }} {{ $t('prompts.currentlyNavigating') }} {{ $t('prompts.copyMessage') }} {{ $t('prompts.newFileMessage') }} {{ $t('prompts.newDirMessage') }} {{ $t('prompts.newArchetype') }} {{ $t('prompts.replaceMessage') }} {{ $t('prompts.scheduleMessage') }} \\n {{ $t('files.name') }}\\n {{ nameIcon }}\\n \\n {{ $t('files.size') }}\\n {{ sizeIcon }}\\n \\n {{ $t('files.lastModified') }}\\n {{ modifiedIcon }}\\n {{ $t('files.multipleSelectionEnabled') }} {{ name }} — {{ humanSize() }} \\n \\n Are you sure you want to delete this user?\xcf\xdb\xc0\xd0v\b.\bEgB\x17\xb8hwz\xb7t\xf6\t\xbeG\x87\xc3a&\xf8\xe7\xa91ͽCp\x10\x04^7\xa7;\xfb\x84\xda|q\xc1\xd5\xfc\x06\xf6\x86\xe0\x82PD\x8c\x9b\xc7D\xcbN\x91\xb3\xc3\xe4\x10\x8e\x93\xe6\x1d\xa1\x89d\x92\x93\x8em\xe2Mzv\xc9\xe7\xf3\x1a\xcdO`\xa3\x1e\a\xa2\x11w\xe7\x17\xb9\x9a\xdf\xc0\xdepɇs錝\x93/j\x8e\x8b\xb6/<\x95\xc7D\xcd\xee\x98\xd9Su\xf6\x82y\xfb\xfd5\xc9XL\x17\x9f\xdd\x1a+\xb0\a\x06\x06\x14\x04\xc1\xe17t\b\\͗|Qs\xd2\x19\xebd\x8e\x03\xaf\xc5>.\b\xc3\x12\x17\x8d\x9e0KJs\xa9l\t_\xfa\xc0\xf9z\U00019d7ag\xe5j\x05\xa5Wo\t\xb2\xf0\x98\xd7\xe9=g\x9f\xa4\xa9\xdd)\xdfeօ\xb5V}\xbd\xbdz\xdd\x11G(\x12\t\xf7g\xc7\xf4\x9cڼyi\x87\x93\xe6\x97H\xfaa\xa8\x03B[\"\xb8\xc0\xb9\xee\x0e-\xcb;x\x1b\x94E\xb9\xad#\x121Zr\xca\tZrJ{,X*\x97\xcb\xea\xef\xeb\xd3\xccY\xb3B\xef\xfb\xc2Ӭ\xbe\xf6\x1f\xf5_/\xd4ݡe\"\xb8 \x04<*\x82sժ\xde\xea\xa2\xdd\vN\xf6=2\xe0\xd0\x15\n\x05\r\r\x0e\x86ޯ\xaby\xe3j\x9e\x03\xafEp\x81S\xe9\x8c=v,P\xdd\xf7\xe7L\xa9͟z\x1b\v43\x9d\xb1dž:\x18\xb4%\x82\v\\s\xb2\xbe\xe5M\xc7\xf9\x1e\x16P\x1f\xfd}}*\x97\xc3=\xea\xc7\xe1\xfcq2߁=\x11\\\xe0TOJ\xefr\xd1\xeeYdz\xbe\x05\xad\xa1Z\xad\xaa\xaf\xb77\xd4\xcd\xe9\\\xcd\x1fW\xf3\x1d\xd8\x13\xc1\x05N\x95\xcazK\xbd\xdb4F:\x93;.h!A\x10h\xa0\xbf?\xb4\xfe\xce0&&(n=Do,c=s,d=a.length):t===To?l>0&&(n=To,c=l,d=u.length):(c=Math.max(s,l),n=c>0?s>l?Do:To:null,d=n?n===Do?a.length:u.length:0),{type:n,timeout:c,propCount:d,hasTransform:n===Do&&Ho.test(r[So+\"Property\"])}}function gr(e,t){for(;e.length{{ $t('search.types') }}
\\n 0\\\">\\n
\\n\\n 0\\\">\\n {{ c }}\\n \\n {{ $t('help.help') }}
\\n \\n
\\n {{ $t('prompts.fileInfo') }}
\\n {{ $t('prompts.show') }}{{ $t('prompts.show') }}{{ $t('prompts.show') }}{{ $t('prompts.rename') }}
\\n {{ oldName() }}:{{ $t('prompts.download') }}
\\n {{ $t('prompts.move') }}
\\n \\n
\\n\\n {{ nav }}.{{ $t('prompts.copy') }}
\\n {{ $t('prompts.newFile') }}
\\n {{ $t('prompts.newDir') }}
\\n {{ $t('prompts.newFile') }}
\\n {{ $t('prompts.replace') }}
\\n {{ $t('prompts.schedule') }}
\\n \\n
\\n {{ $t('files.loading') }}\\n
\\n \\n error\\n {{ $t('errors.forbidden') }}\\n
\\n \\n gps_off\\n {{ $t('errors.notFound') }}\\n
\\n \\n error_outline\\n {{ $t('errors.internal') }}\\n
\\n \\n sentiment_dissatisfied\\n {{ $t('files.lonely') }}\\n
\\n \\n 0\\\">{{ $t('files.folders') }}
\\n 0\\\">{{ $t('files.files') }}
\\n {{ $t('settings.users') }}
\\n \\n
\\n \\n \\n\\n {{ $t('settings.username') }} \\n {{ $t('settings.admin') }} \\n {{ $t('settings.scope') }} \\n \\n \\n \\n {{ user.username }} \\n doneclose \\n {{ user.filesystem }} \\n \\n \\n