filestash/.drone.yml
2022-11-16 18:01:20 +11:00

176 lines
No EOL
4.6 KiB
YAML

kind: pipeline
name: default
workspace:
base: /go
path: filestash
clone:
depth: 1
steps:
- name: build_prepare
image: alpine:latest
depends_on: [ clone ]
commands:
- mkdir -p ./dist/data/state/config
- cp config/config.json ./dist/data/state/config/
- mkdir -p ./filestash/data/state/config
- cp config/config.json ./filestash/data/state/config/
- name: build_frontend
image: node:13-alpine
depends_on: [ build_prepare ]
commands:
- apk add make git > /dev/null
- npm install --silent
- make build_frontend
- cp -R ./dist/data/public ./filestash/data/public
- name: build_backend
image: golang:1.16-stretch
depends_on: [ build_prepare ]
environment:
CGO_LDFLAGS_ALLOW: "-fopenmp"
GO111MODULE: "on"
commands:
- apt-get update > /dev/null && apt-get install -y libglib2.0-dev curl make > /dev/null
- make build_init
- make build_backend
- timeout 1 ./dist/filestash || true
- cp dist/filestash filestash/
- chmod -R o+r+w+x ./dist/data
- name: test_prepare
image: alpine:latest
depends_on: [ clone ]
environment:
PASSWORD:
from_secret: GIT_PASSWORD
commands:
- apk add git > /dev/null
- git clone https://mickael-kerjean:$PASSWORD@github.com/mickael-kerjean/filestash-test test
- chmod -R 777 ./test/
- name: test_frontend
image: node:8-alpine
depends_on: [ test_prepare, build_frontend ]
commands:
- cd ./test/unit_js
- npm install --silent
- npm test
- name: test_backend_unit
image: golang:1.16-alpine
depends_on: [ test_prepare, build_backend, build_frontend ]
environment:
GO111MODULE: "on"
commands:
- apk add git gcc libc-dev poppler-utils > /dev/null
- cp ./test/assets/* /tmp/
- rm -rf server/generator/ && rm -rf server/plugin/plg_image_light
- sed -i '/plg_image_light/d' server/plugin/index.go
- go generate ./test/unit_go/...
- echo "==== UNIT TEST ====="
- go test -mod=vendor --tags "fts5" -count=1 $(go list ./server/... | grep -v "server/plugin" | grep -v "server/generator")
- name: test_e2e
image: machines/puppeteer
depends_on: [ test_prepare, build_backend, build_frontend ]
environment:
ADMIN_PASSWORD: $$2a$$10$$9OFbPZV4lYpYjU5eUi91o.kgeMyCuW11j878YBRri3gBwccq2lSFy
APP_URL: http://127.0.0.1:8334
CI: true
commands:
- ./dist/filestash > /dev/null &
- cd ./test/e2e
- npm install > /dev/null
- node servers/webdav.js > /dev/null &
- npm test
- name: release_prepare
image: debian:stable-slim
depends_on: [ test_frontend, test_backend_unit, test_e2e ]
when:
branch:
- master
environment:
GPG_PASSPHRASE:
from_secret: GPG_PASSPHRASE
commands:
- apt-get update > /dev/null && apt-get install -y gnupg1 curl > /dev/null
- chmod -R o-r-w-x- ./filestash
- tar -cf filestash_Linux-x86_64.tar ./filestash
- curl -s "https://downloads.filestash.app/gpg?private=$GPG_PASSPHRASE" > /tmp/private.key
- echo $GPG_PASSPHRASE | gpg1 --import /tmp/private.key
- echo $GPG_PASSPHRASE | gpg1 --sign --passphrase-fd 0 --default-key mickael@kerjean.me --no-tty filestash_Linux-x86_64.tar
- name: release_publish
image: appleboy/drone-scp
depends_on: [ release_prepare ]
when:
branch:
- master
settings:
command_timeout: 30m
host: rick.kerjean.me
username:
from_secret: SSH_USERNAME
password:
from_secret: SSH_PASSWORD
source: filestash_Linux-x86_64.tar.gpg
target: /mnt/me-kerjean-pages/projects/filestash/downloads/latest/
overwrite: true
- name: release_docker
image: plugins/docker
depends_on: [ release_publish ]
when:
branch:
- master
settings:
dockerfile: ./docker/Dockerfile
repo: machines/filestash
username:
from_secret: DOCKER_USERNAME
password:
from_secret: DOCKER_PASSWORD
tags:
- latest
- "${DRONE_COMMIT_SHA:0:7}"
- name: deployment
image: quay.io/honestbee/drone-kubernetes
depends_on: [ release_docker ]
when:
branch:
- master
kubernetes_server: ${KUBERNETES_SERVER}
kubernetes_cert: ${KUBERNETES_CERT}
kubernetes_token: ${KUBERNETES_TOKEN}
deployment: app-filestash-demo
repo: machines/filestash
namespace: filestash
container: app-filestash-demo
tag: latest
- name: release_report
image: plugins/irc
failure: ignore
depends_on: [ release_docker ]
when:
branch:
- master
settings:
prefix: build
nick: blipblip
channel: filestash
host: chat.freenode.net
port: 6667
template: >
{{#success build.status}}
Build success: https://github.com/mickael-kerjean/filestash/commit/{{build.commit}}
{{else}}
Build failure: er}} https://github.com/mickael-kerjean/filestash/commit/{{build.commit}}
{{/success}}