mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-15 21:04:46 +01:00
176 lines
No EOL
4.6 KiB
YAML
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:12-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.12-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://readonly:$PASSWORD@git.kerjean.me/filestash/test.git"
|
|
- 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.12-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/
|
|
- go test -mod=vendor -v --tags "fts5" ./test/unit_go/...
|
|
|
|
- name: test_backend_integration
|
|
image: golang:1.12-alpine
|
|
depends_on: [ test_prepare, build_backend, build_frontend ]
|
|
environment:
|
|
GO111MODULE: "on"
|
|
commands:
|
|
- apk add git gcc libc-dev poppler-utils > /dev/null
|
|
- go test -mod=vendor -v ./test/integration_go/
|
|
|
|
- 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_backend_integration, 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_publish ]
|
|
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}} |