From 56e500548491c0a294870b11711b6063cbc0f7ed 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 Former-commit-id: 1f1ce1a5350eb1d4d12dc3b90bae20d6df6048f9 [formerly fae0cae6f369574aab49ab952e1aa681c97f7067] [formerly 6f8245ec50d0d2485a263e5877a6a353837b1197 [formerly f91ee24858116d7a313bdf8d57a994abbbc3f2a8]] Former-commit-id: b9bb3ad6a460de55851943bbbc62aee74e32028c [formerly 049f6c239d7a936d70493e68f23838c0ec11af88] Former-commit-id: 81f69427472bbeb3f82e6bd2c3a114e2c5fb47d7 --- .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 32f7efbde57f22b1bd6acadf0840b3c92185f9fd 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 Former-commit-id: 691201333f6c76d5fe8d7134a1d68c4cc50404a7 [formerly a9973160b528bfe6b26bac2a6e1236e6e9192f0c] [formerly 84f8fdb79bd0929ef84a969a688ef1381e6ac691 [formerly d11aa8de6b2a248cb44a4624b2761c01ddde836d]] Former-commit-id: 5d10ebcf1f43a9854aa8b66b1227220e81e34473 [formerly a6e486b7c3a40fa821c2250bcd9edc1841775887] Former-commit-id: 7367476016ce2499441cdb2d050fb2f961eed4d0 --- 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 f9e3923ae799dcc011bbda0aa31a977094fcf064 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 Former-commit-id: 689395356dc1860d0f0f5786986cbbc4238a1fe0 [formerly 0c528dae26624fad221c4fa6b273a02dc030e81c] [formerly f353338b249c2ed818611ac6a91939bc87356de9 [formerly a2e293292ec9f946d14a47d16f6741f2b28d0c8c]] Former-commit-id: 647dac9f8eed2df57191a75e4b199aebb18375fc [formerly 000079405f67a4bff2098c2cddc082a4374e0bd5] Former-commit-id: 89c911c807783e2176994fc6949bf8221ca5e5a3 --- .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 40b0cd4b663cde16ebf5d336e31b39e3f751f672 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 Former-commit-id: a68e501a962cdd7c3a9e5a3d91433cbec34265e3 [formerly ab4763c975794e5997fab6abb51b2e91bda6e08a] [formerly 709e134df8986005308f3e125348fe13cf92919a [formerly 703318c2142a84b12094da66c6cee2aaea3f6fc5]] Former-commit-id: 6672ab0918f84d73819f038cc5a24f1ce22625b4 [formerly 21d926cefe6d46ec2a99eba5e589b264e818d22d] Former-commit-id: 294b3fa3faae6363f483388ccbedcf091d1f837c --- .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 f1e5cd490edb4091b68b9c10aea8558def01a1fe 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 Former-commit-id: dc44ea15987447b0f179bb2011c000f6d7224898 [formerly 3192a7ad777c6ff93fdd0d62a1d9f4c466c5b06e] [formerly 5bb95d586cf0dbf48355142fe17dfa8d162923c5 [formerly de7a8cee605a531bb113a9bf0d87fc355b09ab50]] Former-commit-id: 129d25ece6e5ad704f3ef98bc4a59db70d0c9e10 [formerly f51552b629dbd69810e51142c9a66ab708d96d39] Former-commit-id: 39d64538f9edcb5933c5cff8904f86691bf75ed3 --- .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 578f3e9bdd0735f6a89997eaac673abff8ddcf02 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 Former-commit-id: d416e0328a439e90100a8898b4eecd0d841094f0 [formerly 2ae0702ee23cb54706f34a01e2adadc8d71af201] [formerly e14ada686593af7f4e51df3631388e2564cc48d8 [formerly 569354c4934201a538deabcabe2e419929162e57]] Former-commit-id: 55f994a485f1c19e0f217ef5a0a9eb929c0cb602 [formerly fc5f991702704d2b39bd3d557a7972a8da0190d7] Former-commit-id: 0da0e4d08c933641f4212ec5e528da384eee315a --- .gitignore | 1 + rice-box.go.REMOVED.git-id | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 rice-box.go.REMOVED.git-id 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.REMOVED.git-id b/rice-box.go.REMOVED.git-id deleted file mode 100644 index 151d4414..00000000 --- a/rice-box.go.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5df38dbe052d7325c543606612fe6f4d9a1cdb98 \ No newline at end of file From 0fbde826bfbce009b779faf3dd28f6df3a64dfa3 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Sun, 1 Jul 2018 19:39:39 +0100 Subject: [PATCH 07/20] move caddy to separate repo Former-commit-id: 38db4637c287a3f77a8e3fc39b0344a0d0ea0e94 [formerly aa94394d631efb107b6597e8bf2ec8d68f754fc8] [formerly efcef3211664021f7b23b9e6f1dcb7b5dbfc68a7 [formerly 28952e81bb175d52872a4b3922739a565f788f01]] Former-commit-id: b7c4dbc1a19630c9116d640f96c52eccb6c66ab4 [formerly 5f2c74aa1fd92fdd3cd5917b21b5f6034d024748] Former-commit-id: 3d6ad271b8f507f479ab9375419ad4b74594e719 --- caddy/filemanager/filemanager.go | 52 ------ caddy/hugo/hugo.go | 52 ------ caddy/jekyll/jekyll.go | 52 ------ caddy/parser/parser.go | 308 ------------------------------- 4 files changed, 464 deletions(-) delete mode 100644 caddy/filemanager/filemanager.go delete mode 100644 caddy/hugo/hugo.go delete mode 100644 caddy/jekyll/jekyll.go delete mode 100644 caddy/parser/parser.go diff --git a/caddy/filemanager/filemanager.go b/caddy/filemanager/filemanager.go deleted file mode 100644 index 055fdc13..00000000 --- a/caddy/filemanager/filemanager.go +++ /dev/null @@ -1,52 +0,0 @@ -package filemanager - -import ( - "net/http" - - "github.com/filebrowser/filebrowser" - "github.com/filebrowser/filebrowser/caddy/parser" - h "github.com/filebrowser/filebrowser/http" - "github.com/mholt/caddy" - "github.com/mholt/caddy/caddyhttp/httpserver" -) - -func init() { - caddy.RegisterPlugin("filemanager", caddy.Plugin{ - ServerType: "http", - Action: setup, - }) -} - -type plugin struct { - Next httpserver.Handler - Configs []*filebrowser.FileBrowser -} - -// ServeHTTP determines if the request is for this plugin, and if all prerequisites are met. -func (f plugin) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { - for i := range f.Configs { - // Checks if this Path should be handled by File Manager. - if !httpserver.Path(r.URL.Path).Matches(f.Configs[i].BaseURL) { - continue - } - - h.Handler(f.Configs[i]).ServeHTTP(w, r) - return 0, nil - } - - return f.Next.ServeHTTP(w, r) -} - -// setup configures a new FileManager middleware instance. -func setup(c *caddy.Controller) error { - configs, err := parser.Parse(c, "") - if err != nil { - return err - } - - httpserver.GetConfig(c).AddMiddleware(func(next httpserver.Handler) httpserver.Handler { - return plugin{Configs: configs, Next: next} - }) - - return nil -} diff --git a/caddy/hugo/hugo.go b/caddy/hugo/hugo.go deleted file mode 100644 index 97c55368..00000000 --- a/caddy/hugo/hugo.go +++ /dev/null @@ -1,52 +0,0 @@ -package hugo - -import ( - "net/http" - - "github.com/filebrowser/filebrowser" - "github.com/filebrowser/filebrowser/caddy/parser" - h "github.com/filebrowser/filebrowser/http" - "github.com/mholt/caddy" - "github.com/mholt/caddy/caddyhttp/httpserver" -) - -func init() { - caddy.RegisterPlugin("hugo", caddy.Plugin{ - ServerType: "http", - Action: setup, - }) -} - -type plugin struct { - Next httpserver.Handler - Configs []*filebrowser.FileBrowser -} - -// ServeHTTP determines if the request is for this plugin, and if all prerequisites are met. -func (f plugin) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { - for i := range f.Configs { - // Checks if this Path should be handled by File Manager. - if !httpserver.Path(r.URL.Path).Matches(f.Configs[i].BaseURL) { - continue - } - - h.Handler(f.Configs[i]).ServeHTTP(w, r) - return 0, nil - } - - return f.Next.ServeHTTP(w, r) -} - -// setup configures a new FileManager middleware instance. -func setup(c *caddy.Controller) error { - configs, err := parser.Parse(c, "hugo") - if err != nil { - return err - } - - httpserver.GetConfig(c).AddMiddleware(func(next httpserver.Handler) httpserver.Handler { - return plugin{Configs: configs, Next: next} - }) - - return nil -} diff --git a/caddy/jekyll/jekyll.go b/caddy/jekyll/jekyll.go deleted file mode 100644 index 7dc838d1..00000000 --- a/caddy/jekyll/jekyll.go +++ /dev/null @@ -1,52 +0,0 @@ -package jekyll - -import ( - "net/http" - - "github.com/filebrowser/filebrowser" - "github.com/filebrowser/filebrowser/caddy/parser" - h "github.com/filebrowser/filebrowser/http" - "github.com/mholt/caddy" - "github.com/mholt/caddy/caddyhttp/httpserver" -) - -func init() { - caddy.RegisterPlugin("jekyll", caddy.Plugin{ - ServerType: "http", - Action: setup, - }) -} - -type plugin struct { - Next httpserver.Handler - Configs []*filebrowser.FileBrowser -} - -// ServeHTTP determines if the request is for this plugin, and if all prerequisites are met. -func (f plugin) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) { - for i := range f.Configs { - // Checks if this Path should be handled by File Manager. - if !httpserver.Path(r.URL.Path).Matches(f.Configs[i].BaseURL) { - continue - } - - h.Handler(f.Configs[i]).ServeHTTP(w, r) - return 0, nil - } - - return f.Next.ServeHTTP(w, r) -} - -// setup configures a new FileManager middleware instance. -func setup(c *caddy.Controller) error { - configs, err := parser.Parse(c, "jekyll") - if err != nil { - return err - } - - httpserver.GetConfig(c).AddMiddleware(func(next httpserver.Handler) httpserver.Handler { - return plugin{Configs: configs, Next: next} - }) - - return nil -} diff --git a/caddy/parser/parser.go b/caddy/parser/parser.go deleted file mode 100644 index e238adfb..00000000 --- a/caddy/parser/parser.go +++ /dev/null @@ -1,308 +0,0 @@ -package parser - -import ( - "crypto/md5" - "encoding/hex" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strconv" - "strings" - - "github.com/asdine/storm" - "github.com/filebrowser/filebrowser" - "github.com/filebrowser/filebrowser/bolt" - "github.com/filebrowser/filebrowser/staticgen" - "github.com/hacdias/fileutils" - "github.com/mholt/caddy" - "github.com/mholt/caddy/caddyhttp/httpserver" -) - -var databases = map[string]*storm.DB{} - -// Parse ... -func Parse(c *caddy.Controller, plugin string) ([]*filebrowser.FileBrowser, error) { - var ( - configs []*filebrowser.FileBrowser - err error - ) - - for c.Next() { - u := &filebrowser.User{ - Locale: "en", - AllowCommands: true, - AllowEdit: true, - AllowNew: true, - AllowPublish: true, - Commands: []string{"git", "svn", "hg"}, - CSS: "", - ViewMode: "mosaic", - Rules: []*filebrowser.Rule{}, - } - - baseURL := "/" - scope := "." - database := "" - noAuth := false - alterRecaptcha := false - reCaptchaKey := "" - reCaptchaSecret := "" - - if plugin != "" { - baseURL = "/admin" - } - - // Get the baseURL and scope - args := c.RemainingArgs() - - if plugin == "" { - if len(args) >= 1 { - baseURL = args[0] - } - - if len(args) > 1 { - scope = args[1] - } - } else { - if len(args) >= 1 { - scope = args[0] - } - - if len(args) > 1 { - baseURL = args[1] - } - } - - for c.NextBlock() { - switch c.Val() { - case "database": - if !c.NextArg() { - return nil, c.ArgErr() - } - - database = c.Val() - case "locale": - if !c.NextArg() { - return nil, c.ArgErr() - } - - u.Locale = c.Val() - case "allow_commands": - if !c.NextArg() { - u.AllowCommands = true - continue - } - - u.AllowCommands, err = strconv.ParseBool(c.Val()) - if err != nil { - return nil, err - } - case "allow_edit": - if !c.NextArg() { - u.AllowEdit = true - continue - } - - u.AllowEdit, err = strconv.ParseBool(c.Val()) - if err != nil { - return nil, err - } - case "allow_new": - if !c.NextArg() { - u.AllowNew = true - continue - } - - u.AllowNew, err = strconv.ParseBool(c.Val()) - if err != nil { - return nil, err - } - case "allow_publish": - if !c.NextArg() { - u.AllowPublish = true - continue - } - - u.AllowPublish, err = strconv.ParseBool(c.Val()) - if err != nil { - return nil, err - } - case "commands": - if !c.NextArg() { - return nil, c.ArgErr() - } - - u.Commands = strings.Split(c.Val(), " ") - case "css": - if !c.NextArg() { - return nil, c.ArgErr() - } - - file := c.Val() - css, err := ioutil.ReadFile(file) - if err != nil { - return nil, err - } - - u.CSS = string(css) - case "view_mode": - if !c.NextArg() { - return nil, c.ArgErr() - } - - u.ViewMode = c.Val() - if u.ViewMode != filebrowser.MosaicViewMode && u.ViewMode != filebrowser.ListViewMode { - return nil, c.ArgErr() - } - case "alternative_recaptcha": - if !c.NextArg() { - alterRecaptcha = true - continue - } - - alterRecaptcha, err = strconv.ParseBool(c.Val()) - if err != nil { - return nil, err - } - case "recaptcha_key": - if !c.NextArg() { - return nil, c.ArgErr() - } - - reCaptchaKey = c.Val() - case "recaptcha_secret": - if !c.NextArg() { - return nil, c.ArgErr() - } - - reCaptchaSecret = c.Val() - case "no_auth": - if !c.NextArg() { - noAuth = true - continue - } - - noAuth, err = strconv.ParseBool(c.Val()) - if err != nil { - return nil, err - } - } - } - - caddyConf := httpserver.GetConfig(c) - - path := filepath.Join(caddy.AssetsPath(), "filemanager") - err := os.MkdirAll(path, 0700) - if err != nil { - return nil, err - } - - // if there is a database path and it is not absolute, - // it will be relative to Caddy folder. - if !filepath.IsAbs(database) && database != "" { - database = filepath.Join(path, database) - } - - // If there is no database path on the settings, - // store one in .caddy/filemanager/name.db. - if database == "" { - // The name of the database is the hashed value of a string composed - // by the host, address path and the baseurl of this File Manager - // instance. - hasher := md5.New() - hasher.Write([]byte(caddyConf.Addr.Host + caddyConf.Addr.Path + baseURL)) - sha := hex.EncodeToString(hasher.Sum(nil)) - database = filepath.Join(path, sha+".db") - - fmt.Println("[WARNING] A database is going to be created for your File Manager instance at " + database + - ". It is highly recommended that you set the 'database' option to '" + sha + ".db'\n") - } - - u.Scope = scope - u.FileSystem = fileutils.Dir(scope) - - var db *storm.DB - if stored, ok := databases[database]; ok { - db = stored - } else { - db, err = storm.Open(database) - databases[database] = db - } - - if err != nil { - return nil, err - } - - recaptchaHost := "https://www.google.com" - if alterRecaptcha { - recaptchaHost = "https://recaptcha.net" - } - - m := &filebrowser.FileBrowser{ - NoAuth: noAuth, - BaseURL: "", - PrefixURL: "", - ReCaptchaHost: recaptchaHost, - ReCaptchaKey: reCaptchaKey, - ReCaptchaSecret: reCaptchaSecret, - DefaultUser: u, - Store: &filebrowser.Store{ - Config: bolt.ConfigStore{DB: db}, - Users: bolt.UsersStore{DB: db}, - Share: bolt.ShareStore{DB: db}, - }, - NewFS: func(scope string) filebrowser.FileSystem { - return fileutils.Dir(scope) - }, - } - - err = m.Setup() - if err != nil { - return nil, err - } - - switch plugin { - case "hugo": - // Initialize the default settings for Hugo. - hugo := &staticgen.Hugo{ - Root: scope, - Public: filepath.Join(scope, "public"), - Args: []string{}, - CleanPublic: true, - } - - // Attaches Hugo plugin to this file manager instance. - err = m.Attach(hugo) - if err != nil { - return nil, err - } - case "jekyll": - // Initialize the default settings for Jekyll. - jekyll := &staticgen.Jekyll{ - Root: scope, - Public: filepath.Join(scope, "_site"), - Args: []string{}, - CleanPublic: true, - } - - // Attaches Hugo plugin to this file manager instance. - err = m.Attach(jekyll) - if err != nil { - return nil, err - } - } - - if err != nil { - return nil, err - } - - m.NoAuth = noAuth - m.SetBaseURL(baseURL) - m.SetPrefixURL(strings.TrimSuffix(caddyConf.Addr.Path, "/")) - - configs = append(configs, m) - } - - return configs, nil -} From 42d33cf5957cd26879590ccd0abeddff1673283c Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 2 Jul 2018 04:21:58 +0100 Subject: [PATCH 08/20] add docker static client to filebrowser/dev Former-commit-id: c9e14d35f42c240caf16c7ffaf03b56dac75588f [formerly bf92002b6cac66b3fca8fd68e7a19284983973d1] [formerly 3954699af9e3dad46a0026b07fd5ebb13796fabd [formerly 7459e66b717ebcdba7a34a3a4e0a351d6dcd1a0f]] Former-commit-id: 8f65bfb661773bd587243e84e9381d0e9a77ff50 [formerly 72cb26e555e2dd113a7c7e77fff71ae0abf440de] Former-commit-id: dfe6091913bbcaf6bd87f8e1f3b06d5d5c84d14e --- .travis.yml | 2 +- dockerfiles/dev | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index dbe2fb3e..54b20e39 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,7 @@ jobs: 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 run --rm -itv $(pwd):$WDIR -v /var/run/docker.sock:/var/run/docker.sock filebrowser/dev goreleaser - docker logout if: tag IS present deploy: diff --git a/dockerfiles/dev b/dockerfiles/dev index ceb19ac0..0761a949 100644 --- a/dockerfiles/dev +++ b/dockerfiles/dev @@ -22,4 +22,6 @@ RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/reposit ) && \ chmod +x /go/bin/dep && \ curl -sL https://git.io/goreleaser -o /go/bin/goreleaser && \ - chmod +x /go/bin/goreleaser + chmod +x /go/bin/goreleaser && \ + curl -fsSL https://download.docker.com/linux/static/edge/x86_64/docker-18.05.0-ce.tgz | tar xvz --strip-components=1 docker/docker -C /usr/local/bin && \ + chmod +x /usr/local/bin/docker From 3bc5f6e0df29a61624114ee6f2b262573f94179d Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 2 Jul 2018 02:58:09 +0100 Subject: [PATCH 09/20] build docker images with goreleaser Former-commit-id: 5f8a21053734ba6c507b7d39fca57c0dcb9994fa [formerly 2ecda20825d40484ae2a24fba6dff4dfa63bf5df] [formerly a13bb1c1d1d812c86d8d92521bb48f7102b6725e [formerly 6cb2e30143979b887c28d6e3d0692946633af8b9]] Former-commit-id: 553cb8f6ac4f89a4ab9574a72a2dd54e384f1072 [formerly 64e289831d826b28cc777c7ee7a79c8938f2a706] Former-commit-id: 587e569d59adf142a24513bce9bc764841f8a550 --- .gitignore | 14 ++++++++------ .goreleaser.yml | 19 ++++++++++++++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 1b7bd07b..a6d57c40 100644 --- a/.gitignore +++ b/.gitignore @@ -2,12 +2,14 @@ */dist/* *.db *.db.lock -npm-debug.log* -yarn-debug.log* -yarn-error.log* .idea .vscode -package-lock.json -yarn.lock -vendor +Dockerfile +filebrowser rice-box.go +vendor +npm-debug.log* +package-lock.json +yarn-debug.log* +yarn-error.log* +yarn.lock diff --git a/.goreleaser.yml b/.goreleaser.yml index a7b73f97..84a38345 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,4 +1,8 @@ +project_name: filebrowser + build: + env: + - CGO_ENABLED=0 main: cmd/filebrowser/main.go binary: filebrowser goos: @@ -39,4 +43,17 @@ archive: format: zip release: - disable: true \ No newline at end of file + disable: true + +dockers: + - + goos: linux + goarch: amd64 + goarm: '' + image: filebrowser/filebrowser + skip_push: true + tag_templates: + - "{{ .Tag }}" + - latest + extra_files: + - Docker.json From 41489f9e893e0c6a2710389ee90c89330a935767 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Sat, 4 Aug 2018 16:56:19 +0100 Subject: [PATCH 10/20] chore(gometalinter): gas is renamed to gosec [alecthomas/gometalinter#505] Former-commit-id: 9d049a2544677a82892d61b046d9ca02719fd64e [formerly 75108904316b277fcdbd28145d0abff61c4c7d04] [formerly c28ae59c1ed7230f7f9ac4c5d6b27a014bac506b [formerly 993bab4687edf73c2db93886aa6a8c765ff18437]] Former-commit-id: b2bcc79aa40cb727315e0ec1007deea3a74358c6 [formerly 35c44ec3706ef141489d1c65309b55e21f03b4a0] Former-commit-id: bce721ae0ca43b5b9667c31ccb2a3b64b48b7a71 --- .gometalinter.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gometalinter.json b/.gometalinter.json index 85d6e6aa..638f67c5 100644 --- a/.gometalinter.json +++ b/.gometalinter.json @@ -15,7 +15,6 @@ "Disable": [ "dupl", "errcheck", - "gas", "gochecknoglobals", "gochecknoinits", "goconst", @@ -23,6 +22,7 @@ "gofmt", "goimports", "golint", + "gosec", "gosimple", "lll", "misspell", From 03ab2199d4fe87f7702440f5c48def29377713be Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 5 Aug 2018 11:13:25 +0100 Subject: [PATCH 11/20] update repo License: MIT Signed-off-by: Henrique Dias Former-commit-id: c78a96fbc7f65f0504e28ac2a59130d060cfc3d2 [formerly 5b8124120440eef3f81bef7a1354897c1e88e0ef] [formerly bbfcefaad0bd8e345f8463ad6f3ef7e5a65ea152 [formerly c6c915e38705c8a2b8e82ee3f8b33fe1b1f980b6]] Former-commit-id: 4af0f562b1c42e28e50f51c368544b957e3954b7 [formerly fa4050a8f763b7fea686617842610c526ed077b1] Former-commit-id: 789e64f89019211fc541cbbc2e67655899b294ae --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 54b20e39..8a0c37df 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,7 +37,7 @@ jobs: - docker logout on: tags: false - repo: 1138-4EB/filebrowser + repo: filebrowser/filebrowser branch: master - stage: release script: @@ -53,5 +53,5 @@ jobs: file: "dist/*.tar.gz" file_glob: true on: - repo: 1138-4EB/filebrowser + repo: filebrowser/filebrowser all_branches: true From 292ef7ea8ab6ea05dcd2c59251066aeb8840786c 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 12/20] replace publish.sh with build/release.sh Former-commit-id: 89636040fe653a0e2917a51fd7e557b0a9d2436c [formerly b052d724fe2381766bfd225d451cc7a077f82db4] [formerly e9e6f9066892058cf2780d33db8e561281bb1597 [formerly 2592c5eb4347bf7eb65756818653849f19f5e0ff]] Former-commit-id: d29d1a3284e7e84c80324d7591623644e5c3fac9 [formerly 3417ad7fe90ed523a0bc9bd67beafbb7b7ff3a80] Former-commit-id: 5ac4f1ea442c54a401c66203343fa0373b5ffa9c --- .travis.yml | 2 -- build/build_all.sh | 13 +++++++----- build/release.sh | 53 ++++++++++++++++++++++++++++++++++++++++++++++ publish.sh | 23 -------------------- 4 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 build/release.sh delete mode 100644 publish.sh diff --git a/.travis.yml b/.travis.yml index 8a0c37df..27334cc1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,8 +10,6 @@ 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 diff --git a/build/build_all.sh b/build/build_all.sh index ac14d211..46ef4a11 100755 --- a/build/build_all.sh +++ b/build/build_all.sh @@ -6,15 +6,18 @@ if [ "$USE_DOCKER" != "" ]; then if [ -d "frontend/dist" ]; then rm -rf frontend/dist fi; - WORKDIR="/go/src/github.com/filebrowser/filebrowser" + + if [ "$WDIR" = "" ]; then + WDIR="/go/src/github.com/filebrowser/filebrowser" + fi; $(command -v winpty) docker run -it \ --name filebrowser-tmp \ -v /$(pwd):/src:z \ - -w /${WORKDIR} \ + -w /${WDIR} \ filebrowser/dev \ sh -c "\ - cp -r //src/* /$WORKDIR && \ + cp -r //src/* /$WDIR && \ cd build && \ dos2unix build_assets.sh && \ dos2unix build.sh && \ @@ -25,10 +28,10 @@ if [ "$USE_DOCKER" != "" ]; then if [ $exitcode -eq 0 ]; then for d in "dist/" "node_modules/"; do - docker cp filebrowser-tmp:/$WORKDIR/frontend/$d frontend + docker cp filebrowser-tmp:/$WDIR/frontend/$d frontend done for d in "vendor/" "rice-box.go" "filebrowser"; do - docker cp filebrowser-tmp:/$WORKDIR/$d ./ + docker cp filebrowser-tmp:/$WDIR/$d ./ done fi docker rm -f filebrowser-tmp diff --git a/build/release.sh b/build/release.sh new file mode 100644 index 00000000..1d4b831b --- /dev/null +++ b/build/release.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +cd $(dirname $0)/.. + +echo "> Checking semver format" + +if [ $# -ne 1 ]; then + echo "This release script requires a single argument corresponding to the semver to be released. See semver.org" + exit 1 +fi + +semver=$(grep -P '^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)' <<< "$1") + +if [ $? -ne 0 ]; then + echo "Not valid semver format. See semver.org" + exit 1 +fi + +echo "> Checking matching $semver in frontend submodule" + +cd frontend + +trash=$(git tag | grep "$semver") +if [ $? -ne 0 ]; then + echo "Tag $semver does not exist in submodule 'frontend'. Tag it and run this script again." + exit 1 +fi + +git rev-parse --verify --quiet release +if [ $? -ne 0 ]; then + git checkout -b release "$semver" +else + git checkout release + git reset --hard "$semver" +fi + +cd .. + +echo "> Updating submodule ref to $semver" + +sed -i "s|(untracked)|$1|g" filebrowser.go +git commit -am "chore: version $semver" +git tag "$1" +git push +git push --tags + +echo "> Commiting untracked version notice..." + +sed -i "s|$1|(untracked)|g" filebrowser.go +git commit -am "chore: setting untracked version [ci skip]" +git push + +echo "> Done!" diff --git a/publish.sh b/publish.sh deleted file mode 100644 index 660ce463..00000000 --- a/publish.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -e - -cd $(dirname $0) - -echo "Building assets" -./build/build_assets.sh - -echo "Updating version number to $1..." -sed -i "s|(untracked)|$1|g" filebrowser.go -git add -A -git commit -m "chore: version $1" -git tag "v$1" -git push -git push --tags - -echo "Commiting untracked version notice..." -sed -i "s|$1|(untracked)|g" filebrowser.go -git add -A -git commit -m "chore: setting untracked version [ci skip]" -git push - -echo "Done!" From bdd7c269ed1de51589309fa9d3c64db48b34184f Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 00:37:16 +0100 Subject: [PATCH 13/20] add docker-credential-pass to dev img and use it in travis Former-commit-id: 3deff7d6b345fd6c1e9bac71b446730631e891c9 [formerly 2525a27cb90b003f72c7d936e2f0224848e3e49f] [formerly c699da2816b0c61bfdaf0a8b40612b9d50734d73 [formerly 5ab5c7c24305b426b26778c92b17e711a269779e]] Former-commit-id: 7ed9366f3c83f50afef6b40d0006c32256d053f7 [formerly 0fc1beb902fbadc6f6388b10b7ed319e15fcb7d4] Former-commit-id: 7bd6bacacb114d72808ded8c102f8f14de450625 --- .travis.yml | 11 ++++++----- build/docker_login.sh | 27 +++++++++++++++++++++++++++ dockerfiles/dev | 11 +++++++++-- 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100755 build/docker_login.sh diff --git a/.travis.yml b/.travis.yml index 27334cc1..7dc6b578 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,14 +6,15 @@ addons: apt: packages: - docker-ce + - pass env: global: - USE_DOCKER="true" - WDIR=/go/src/github.com/filebrowser/filebrowser stages: -- lint -- test -- release + - lint + - test + - release cache: directories: - vendor @@ -30,7 +31,7 @@ jobs: script: - cp dockerfiles/filebrowser Dockerfile - docker build -t filebrowser/filebrowser . - - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - ./build/docker_login.sh - docker push filebrowser/filebrowser - docker logout on: @@ -40,7 +41,7 @@ jobs: - stage: release script: - cp dockerfiles/filebrowser Dockerfile - - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - ./build/docker_login.sh - docker run --rm -itv $(pwd):$WDIR -v /var/run/docker.sock:/var/run/docker.sock filebrowser/dev goreleaser - docker logout if: tag IS present diff --git a/build/docker_login.sh b/build/docker_login.sh new file mode 100755 index 00000000..fedeaf5a --- /dev/null +++ b/build/docker_login.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +set -e + +# init key for pass +gpg --batch --gen-key <<-EOF +%echo Generating a standard key +Key-Type: DSA +Key-Length: 1024 +Subkey-Type: ELG-E +Subkey-Length: 1024 +Name-Real: Meshuggah Rocks +Name-Email: meshuggah@example.com +Expire-Date: 0 +# Do a commit here, so that we can later print "done" :-) +%commit +%echo done +EOF + +key=$(gpg --no-auto-check-trustdb --list-secret-keys | grep ^sec | cut -d/ -f2 | cut -d" " -f1) +pass init $key + +if [ "$(command -v docker-credential-pass)" = "" ]; then + docker run --rm -itv /usr/local/bin:/src filebrowser/dev sh -c "cp /go/bin/docker-credential-pass /src" +fi + +echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin diff --git a/dockerfiles/dev b/dockerfiles/dev index 0761a949..b6c3cc57 100644 --- a/dockerfiles/dev +++ b/dockerfiles/dev @@ -23,5 +23,12 @@ RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/reposit chmod +x /go/bin/dep && \ curl -sL https://git.io/goreleaser -o /go/bin/goreleaser && \ chmod +x /go/bin/goreleaser && \ - curl -fsSL https://download.docker.com/linux/static/edge/x86_64/docker-18.05.0-ce.tgz | tar xvz --strip-components=1 docker/docker -C /usr/local/bin && \ - chmod +x /usr/local/bin/docker + curl -fsSL https://download.docker.com/linux/static/edge/x86_64/docker-18.05.0-ce.tgz | tar xvz --strip-components=1 docker/docker -C /go/bin && \ + chmod +x /go/bin/docker && \ + curl -fsSL $( \ + curl -s https://api.github.com/repos/docker/docker-credential-helpers/releases/latest \ + | grep "browser_download_url.*pass-.*-amd64" \ + | cut -d : -f 2,3 \ + | tr -d \" \ + ) | tar xv -C /go/bin && \ + chmod + /go/bin/docker-credential-pass From 08ebe0fbb057cc9c4dc61ff077313212ad28715e Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 03:34:10 +0100 Subject: [PATCH 14/20] release all the files in dist Former-commit-id: 9ac3858d788425d5c447f5a5ce068db71ba3bac2 [formerly 1eb037fc961dcb2d288d3f9edb7ee0867456aeef] [formerly 8633b5ef520ec3d4873a8b93925f90b4d129713e [formerly 6c98dfc9fc7b76cf73cc82b37095b32a708434ce]] Former-commit-id: 80f9ee49a48f953108813af26d8d576b17793245 [formerly 8cb7931e12674c248c68a90a3de2d5054646e089] Former-commit-id: 2f0a1639a58ed6c8b56c178675829b05d8b08f30 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7dc6b578..2fc3318b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,7 +49,7 @@ jobs: 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: "dist/*.*" file_glob: true on: repo: filebrowser/filebrowser From bf1ef5b0f8d6799a523a260339953f3956b29f2e Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 03:50:16 +0100 Subject: [PATCH 15/20] setup travis releases with filebrowserbot Former-commit-id: 0593d1dd3883e25a44588131fa6fe69df815fd87 [formerly 429f789e0c54719595830f2290985be1f5899fb1] [formerly bb5b0328aa951f5534ab29e5070a1aa4da9ec2e2 [formerly 52aebd04447452cb6945cd32f8abcf47745431ab]] Former-commit-id: 0cd117cb81b2a38b2646cc880c8774fed786d45c [formerly bf046ec317be577c8c3c4613d81272f6ae7fcabc] Former-commit-id: 5066ef1dc9b898e8cf9909c03dede43690325815 --- .travis.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2fc3318b..0de98adb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,11 +29,11 @@ jobs: provider: script skip_cleanup: true script: - - cp dockerfiles/filebrowser Dockerfile - - docker build -t filebrowser/filebrowser . - - ./build/docker_login.sh - - docker push filebrowser/filebrowser - - docker logout + - cp dockerfiles/filebrowser Dockerfile + - docker build -t filebrowser/filebrowser . + - ./build/docker_login.sh + - docker push filebrowser/filebrowser + - docker logout on: tags: false repo: filebrowser/filebrowser @@ -48,9 +48,9 @@ jobs: 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= + secure: GCURbl9xmjOmeNc7cYSvfSwbEp46cacWmJRczcsU6rQa0aWqzjELYdyIsl6HWW+o0dzuZvbWRD6muxYqIud92oPLYDuXSnra9tM3mCjswrjiPCJ57bksWkSPBfFQcxIyB6c3o+A/FMnX3nnSE/2r5HYZnPNFbEcBbC7WSgwx9ejXUuyWn1PUFK9YQWANdl6J7b7EKsk+9MxS9Pmw6M2ycBwX8ScUQdofkUPvR/nqlXISm+3hs30VubqQi9Ha6DM9Bw3aFK3/Ts/ujCOxP1ZoMCBZ6tfnaQOElIG96WTwnt77eDYlZezBOLym3Z18iif+Qny+XndFKDbexaiUT06VlWFXCKtt3iLs6HJwRcjmiHmB0Z3v+W4cKPl3cEyxxrU2aal54k1PBhU+5L0Xc8ileKbDMYg5tps88zWHNefeZVfaxYSVrmUHkuygMe481oaBLacDXTxs4t6XEpStREuLmvx9NLTwTFAbWjMNM0PqlueDMxO4bdwNvzXg/TcKLWV9FezqAlre8lFNZK5wX6lKFVSZ3hFjxCfwrJL2cPwg5A8Yd5EOC4Nh81WdgYuFGOxZzMAoSJlaVRvQS1trCUP/++ONnDep3ExSxvw4B7vijGZWeXUhrOMiPQHXu+t6BnrlnDjQ4gi44QTW0y/iM2WC2DBKfgYjAKwyHx13hFrmOCg= file: "dist/*.*" file_glob: true on: repo: filebrowser/filebrowser - all_branches: true + branch: master From bb5c041d5c80c1774f0cbb0e77bd9fd6c313942a Mon Sep 17 00:00:00 2001 From: Filebrowser Bot Date: Mon, 6 Aug 2018 03:13:59 +0000 Subject: [PATCH 16/20] add deploy_key.enc 9ca81b5594f5 Former-commit-id: ed1098dcc37748ac3253be57416ba10aed0786e2 [formerly 4f791e75150f7947ea9bfac6e7e13bf3316f21d7] [formerly 140301afea7e83c08649870eb8cd6ee8bd111353 [formerly 43288e9b86245edda6ae6fdb769d070efad30353]] Former-commit-id: a8e5cee586fadff0a107d47cdb10573eb9aa30f5 [formerly 2eaf33fe47c4c56277284733251be36cfc0956e9] Former-commit-id: 6d7a694ae4b0328c092ee342b96b226f464e526b --- build/deploy_key.enc | Bin 0 -> 3248 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 build/deploy_key.enc diff --git a/build/deploy_key.enc b/build/deploy_key.enc new file mode 100644 index 0000000000000000000000000000000000000000..af98a5d43a69f54c02241acbb87ea06a777ff4b3 GIT binary patch literal 3248 zcmV;h3{Ue!Pc|7ux4$v0zwC<}5OzJsrkJ`ef`H%!K~ew}52YrWfjTMi$DU?eD7?w$ zC36h{>T~|bj#I=)vzYtvr9eW7CzP^9C2u~aD6ASX-ok*@K0F0^4qK~>+JSP=%!_Ek!lMu1&uAKA41 zh=(CLymUo4Z9)E48=4-`Xr5N!7~X%}T0PI`FZDfVI#Bd~j}t6Pv7E!XEz0}Rs6eu@ zBS^}cvg@E{AyN_!^EX9NY%H?vD zll@oROzwGWU7>#4^+hZj@tFRw|2GL)>{Hv3TTxPtr!*Fz5NF#$Ih`9TtT{;rVZJ;S zThMT{-5dGr=)wokRr&PUZ{KKeR3~+_b8hW);>z>UaMV?oX z3YF$E+&_+~7?8kc*X7+|HM?9D%fe+5cvG^f|BbqVf?|2E_?&M8u`}So=&ub_A3(1h z%Ou%XR(8z61H}f&9*0#!prZ!mPK8!}%!-)eZfxaLn2O zZst!ir_x?wnnOR z0lF_PZHhASw-Y;vIcxUOme|TOPN>}*ck!_Rfdgdc4(ZD3ojEc#yw@!0OraHe;&{HI zY8T33H8=UZj1M!?=B0%Jq5zU%lWr?ZXWoJCpdmy-(_IWGD~Oe7f;2XNo?Y@_UO?3g zIdH6bXf!yUri66s4ZflEcQ091OeFQ3urXMc{*54Y0dJlguWhlCh$dys!$qoA6GD>y zupH-q7uN3oK@K~Lyc(*3@#WjdkcV-=Jql~jxKk6R`Fx+4+kF#-pv$NX#aXrK%m$3m zgu{?Fp)z*pwzFUW7Lh5-@Z;P@#berw6tr@&RcRH$OGbXwH<3#m7#sCFf`x9`{)u`i+sxW7Hv|uIJ*B@oMaa>g;#D zgTprt6kVdyYm14SHYAYJ8tmM@UyKS7p(hX{7ZZZB-zC^6qBYF^kW4bddn_4Eq*{SR zG$;uNCOrFhuwUa84u{$MMAGUZdNVdUyEs!&N|}Dm+>PFsX90IrIwa_L!deyHdFNMQ z%v&!o?9U_rz3>7~rc%O1JRU%x&+3@=B*;Ak4+=VSv}ZL@buxC)z+bNWn@f5M@$*g$ zJIAy^Vlayuk8-7H5>NF`Z)l;oAGd&sG}aAF{K)Z{_SHJx{)A)@rQF}cFOSLY%LOy&0&}{*#LlZh2lP`TKb5sC>$Ql(df?mJ zV9ELS)T*$6|EZJvA4E%zQ$z z82O25-5PUnd$=YKW*Emhi#d!Ml(gB-qzEJCl%qaR9D%v{R42}oz2^8C;!c?%MS*K4 z5!=stJYp=Tnb4zw^jI;_z%64`1u6#PKRB*sdwp-e_Q7lv6C6;a7l#chQmIaDLcabmN1(D##i}@D|}wT2)fKIpGK<&&HsBgYr6KmEyqBZpZ$>hO8A& ztZ;gr&6~Gw6&*$bNnTk;;pmEZX}D|N#@$uL4sI12A#|g6Odi+U%&^Zk%6SO-!KB3D zjS&r${oQ^QXODO2haQ)47|@+g-@x7`iu|4K@E|Xzo#A_lTTBRS)7=E`6#?l0gAF&T zTnBxG6XO*c^-vEwTQw#?{T^ zW=BIF_~aC?e&ICiaMi`^h_@bqDDa&Zz5U-KwvTdMEofPQh=+Xw7(KHPIqDL2lN7B^ zlnQ=Nwbh(NVN|D01dO!ZJVag3kYQ*@fl96ow^P_-Mduo3>OjL&qGp*zK2D>y$477? z?NAiwAtt<)UXlS9{Y#>y-P9-H8pWpX87qu}%t=k=d6k*^dM)guK*XjxU&T``IpLEC z*srz#+*rjI*EjbyfgnnoRMR}HgM35RjX?9v`LrzjjlJe+19PaQV}sScf&18NZ5KH& z7Oc0nTf=54jWUchG-DE!sQ@nV<95?%n1k zvUOm%DlymV7`Q`dtcfq=+?RoG*D&-`3_}!zd$H8GbNnA^urtQzts%!BZYeHux6oZx z`tDx6RD15fj-p;le5a((FwWca3QbjSZe)6>ozLr-JVduV@{hb$y%deJQ$T1RsVk#*Q7ZrEY1VzDt?!!y{w(nb9NI_0yuuh|V06N@WB zhj>hAl1`AlT2>e3PQRlXF0zjb<)g2PilU`3B(@968*dqCb>$#~XP z1deUW#5U)`r(B*BmW)H}5%Gk`0X$9KL_=u_D`He0Oe4aYTjxchm@KNGgM};(IrbP4 zU%X2{V4IWs#ksXYqG4t!IW#=@*Kub@Li~(3Eaas`vZ#S9m(?Y!8eH#{1AXYZk=_b% z!9n(RtZ-p{MC}ZyK0mwZqy={+kR(z2s2OX;C}vjcj+ER0e!X~2!PQ1C6>OCox(EIN z#7c2eHw=K`QiT^HAErZ(8712^i1Jzed{n@3swAK8<2_{R8Ngd}r#UVThS)xo>bSU9 z=~^^tW>*jONG}?&#E6j5NTB0I_4aZHrz|%6>(p<#?D#Js+&V^kEZ4iu#LSr_6Bk1g+E_FEb{ePfU ir`Z(hn|4{<9jQ28gZt9MmT%!Vf>>2|t1S58y_ literal 0 HcmV?d00001 From cea4d2aae9a177c3a0a314a469df6cfb2923b460 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 05:15:57 +0100 Subject: [PATCH 17/20] fix rice-box dir in travis Former-commit-id: a4de4d83ab964c11bb0375a66af7b011f39990bc [formerly e93bcfd8f83c089d72245ffa79785860f00b3758] [formerly 364f472f6e27004dab8bffa8674c855e9e6d4213 [formerly ac3ad47a923d593883e57474900b9a2fff44dc7e]] Former-commit-id: 4c8cebdea67e8cd88c58563702489f7549aaa222 [formerly 1d6a75e82822a33f8edde2d64077196454f460ed] Former-commit-id: 4230de67e7923ef7450385c8c9d25654f19f18c7 --- build/build_all.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/build_all.sh b/build/build_all.sh index 46ef4a11..24860c0e 100755 --- a/build/build_all.sh +++ b/build/build_all.sh @@ -2,6 +2,10 @@ cd $(dirname $0)/.. +if [ -d "rice-box.go" ]; then + rm -rf rice-box.go +fi + if [ "$USE_DOCKER" != "" ]; then if [ -d "frontend/dist" ]; then rm -rf frontend/dist From 557e5922d2bf02231b237842ed3d127c3c6ab113 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 12:46:30 +0100 Subject: [PATCH 18/20] fix(publish): fetch all before checking a matching semver in the frontend Former-commit-id: 922b633d536f4102d8ec3e68a7d7fa12270e21c9 [formerly 7c8b0295aebc6819a162f94d23821e7728ebabc0] [formerly efad5cfea2c8bf1a1617dea5e9e6d0903d2d44d7 [formerly 18a9d977c2c5a91c79eb523ee7f63517ffdfa69a]] Former-commit-id: c48391a56546742845c697d0b6494b1230bdf529 [formerly 4609f232086d4c5096c2a937cdf980f1b1a786cc] Former-commit-id: 50ac09f7bca6d3541c0b8eb70ad672ed6768b2ca --- build/release.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build/release.sh b/build/release.sh index 1d4b831b..b91c83fc 100644 --- a/build/release.sh +++ b/build/release.sh @@ -19,6 +19,7 @@ fi echo "> Checking matching $semver in frontend submodule" cd frontend +git fetch --all trash=$(git tag | grep "$semver") if [ $? -ne 0 ]; then From e0c91bb7472cf802be295eb19a1d53619f0dfd47 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 18:19:21 +0100 Subject: [PATCH 19/20] update frontend submodule Former-commit-id: d1cbaf35191dfbdf499909baed77d16daa54ce4c [formerly edb3f13a7a6fd20a8377bee0c1eb9814dedcb615] [formerly b5566691de3d26ffaaaa0a9df77d517a8290a2cd [formerly 1149092d7364abed89453f23c7166b10488de720]] Former-commit-id: 642d0481907ba86e2fde0940e02bdfad4e04c898 [formerly 4f90dfe05f65af83234eb32e62fc4476ecdc5a75] Former-commit-id: c858f5c393bfdc4de23c7fcc50cd1f2145ec44cf --- frontend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend b/frontend index f5c48c96..157b2da1 160000 --- a/frontend +++ b/frontend @@ -1 +1 @@ -Subproject commit f5c48c9679ef16f2d2dfb88d7cdcea929463f2ed +Subproject commit 157b2da133c76f429c86087cace21f08db934407 From 4ace991b8acbbb3b567c349e4fb894610f2cf4ca Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 6 Aug 2018 05:02:59 +0100 Subject: [PATCH 20/20] update ricebox in caddy/assets Former-commit-id: af8d9982d961f4c8e5a301dc0eeb1dc790f35231 [formerly 6f678bfadf1e1db8c8dc5e368087a23a3dba8b65] [formerly 3d06b4d8d6b2ffe209f10b9ae4ce30955839e721 [formerly 6f7fded3f19a8357f0a36f8a50b0ff83f76f5c9c]] Former-commit-id: 4016e6b9b12d5f945c67fd0960a3460cd1fbfda1 [formerly 1ead636502f6b0991e1b18f3de5889546cedfa24] Former-commit-id: 03bb7d11a2062ca3fe4ffd5d3efc702e4652c260 --- .travis.yml | 1 + build/push_ricebox.sh | 34 ++++++++++++++++++++++++++++++++++ build/release.sh | 3 +-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100755 build/push_ricebox.sh diff --git a/.travis.yml b/.travis.yml index 0de98adb..99187c03 100644 --- a/.travis.yml +++ b/.travis.yml @@ -44,6 +44,7 @@ jobs: - ./build/docker_login.sh - docker run --rm -itv $(pwd):$WDIR -v /var/run/docker.sock:/var/run/docker.sock filebrowser/dev goreleaser - docker logout + - ./build/push_ricebox.sh if: tag IS present deploy: provider: releases diff --git a/build/push_ricebox.sh b/build/push_ricebox.sh new file mode 100755 index 00000000..12f1ffd5 --- /dev/null +++ b/build/push_ricebox.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +cd $(dirname $0) + +COMMIT_SHA="$(git rev-parse --verify HEAD | cut -c1-8)" + +eval `ssh-agent -s` +openssl aes-256-cbc -K $encrypted_9ca81b5594f5_key -iv $encrypted_9ca81b5594f5_iv -in ./deploy_key.enc -d | ssh-add - + +git clone git@github.com:filebrowser/caddy caddy +cd caddy +cp ../../rice-box.go assets/ +git checkout -b update-rice-box origin/master +git commit -am "update rice-box $COMMIT_SHA" + +if [ $(git tag | grep "$TRAVIS_TAG" | wc -l) -ne 0 ]; then + git tag -d "$TRAVIS_TAG" +fi + +git tag "$TRAVIS_TAG" + +if [ "$(git ls-remote --heads origin update-rice-box)" != "" ]; then + git push -u origin update-rice-box +else + git push origin +update-rice-box +fi + +if [ "$(git ls-remote --heads origin update-rice-box)" != "" ]; then + git push origin "$TRAVIS_TAG" +else + git push origin :"$TRAVIS_TAG" + git push origin "$TRAVIS_TAG" +fi + diff --git a/build/release.sh b/build/release.sh index b91c83fc..cf285d46 100644 --- a/build/release.sh +++ b/build/release.sh @@ -21,8 +21,7 @@ echo "> Checking matching $semver in frontend submodule" cd frontend git fetch --all -trash=$(git tag | grep "$semver") -if [ $? -ne 0 ]; then +if [ $(git tag | grep "$semver" | wc -l) -eq 0 ]; then echo "Tag $semver does not exist in submodule 'frontend'. Tag it and run this script again." exit 1 fi