Skip to content

Merge branch 'master' of ssh://github.com/mickael-kerjean/filestash #301

Merge branch 'master' of ssh://github.com/mickael-kerjean/filestash

Merge branch 'master' of ssh://github.com/mickael-kerjean/filestash #301

Workflow file for this run

name: CI
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build_frontend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 14.x
- name: Setup
run: npm install
- name: Build
run: make build_frontend
- uses: actions/upload-artifact@master
with:
name: build-frontend
path: server/ctrl/static/www/
build_backend:
needs: build_frontend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@master
with:
name: build-frontend
path: server/ctrl/static/www/
- uses: actions/setup-go@v3.5.0
with:
go-version: 1.19
- name: Setup
run: |
sudo apt install -y libraw-dev libjpeg-dev libpng-dev libheif-dev libwebp-dev libgif-dev
sudo apt install -y build-essential libstdc++6 libomp-dev
mkdir -p ./dist/data/state/config
cp config/config.json ./dist/data/state/config/
- name: Build
run: |
make build_init
make build_backend
- uses: actions/upload-artifact@master
with:
name: build
path: dist
- name: Verify
run: timeout 5 ./dist/filestash || code=$?; if [[ $code -ne 124 ]]; then exit $code; fi
test_frontend:
needs: [build_frontend, build_backend]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Clone test repo
uses: actions/checkout@v3
with:
repository: mickael-kerjean/filestash-test
ssh-key: ${{ secrets.DEPLOY_KEY_FILESTASH_TEST }}
path: test
- uses: actions/setup-node@v3
with:
node-version: 14.x
- name: Setup
run: |
npm install
cd ./test/unit_js
npm install
- name: Run
run: |
cd ./test/unit_js
npm test
# verify_frontend:
# needs: [build_frontend, build_backend]
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - uses: actions/setup-node@v3
# with:
# node-version: 14.x
# - name: Setup
# run: cd public && npm install
# - name: Run
# run: |
# cd public
# # npx eslint .
# npx tsc
test_backend:
needs: [build_frontend, build_backend]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Clone test repo
uses: actions/checkout@v3
with:
repository: mickael-kerjean/filestash-test
ssh-key: ${{ secrets.DEPLOY_KEY_FILESTASH_TEST }}
path: test
- uses: actions/download-artifact@v3
with:
name: build-frontend
path: server/ctrl/static/www/
- uses: actions/setup-go@v3.5.0
with:
go-version: 1.19
- name: Setup
run: |
sudo apt-get install -y poppler-utils
cp ./test/assets/* /tmp/
mkdir server/ctrl/static/www/ && touch server/ctrl/static/www/index.html
make build_init
rm -rf server/generator/
go generate ./test/unit_go/...
go get github.com/stretchr/testify/assert
go mod vendor
- name: Run
run: go test --tags "fts5" -count=1 $(go list ./server/... | grep -v "server/plugin" | grep -v "server/generator")
test_smoke:
needs: [build_frontend, build_backend]
runs-on: ubuntu-latest
steps:
- name: Init
uses: actions/download-artifact@v3
with:
name: build
- name: Run
run: |
chmod +x filestash
timeout 5 ./filestash > access.log || code=$?; if [[ $code -ne 124 ]]; then exit $code; fi
echo "========= access.log "
cat access.log
echo "====================="
cat access.log | grep -q "Filestash v0.5 starting"
cat access.log | grep -q "listening on :"
cat access.log | grep -vz "WARN"
cat access.log | grep -vz "ERR"
# test_e2e:
# needs: [test_smoke]
# runs-on: ubuntu-latest
# container:
# image: machines/puppeteer
# options: --user root
# env:
# ADMIN_PASSWORD: $2a$10$9OFbPZV4lYpYjU5eUi91o.kgeMyCuW11j878YBRri3gBwccq2lSFy
# APP_URL: http://127.0.0.1:8334
# CI: true
# steps:
# - uses: actions/checkout@v3
# - name: Clone test repo
# uses: actions/checkout@v3
# with:
# repository: mickael-kerjean/filestash-test
# ssh-key: ${{ secrets.DEPLOY_KEY_FILESTASH_TEST }}
# path: test
# - name: Restore Build
# uses: actions/download-artifact@v3
# with:
# name: build
# - name: Setup
# run: |
# cd ./test/e2e
# npm install
# - name: Run
# run: |
# chmod +x ./filestash
# ./filestash > /dev/null &
# cd ./test/e2e
# node servers/webdav.js > /dev/null &
# npm test
release_docker_amd64:
# if: github.ref == 'refs/heads/master'
needs: [ test_backend, test_frontend, test_smoke ]
runs-on: ubuntu-latest
steps:
- name: Init
uses: actions/checkout@v3
- name: Setup
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run
run: |
docker build -t machines/filestash:latest-amd64 ./docker/
docker push machines/filestash:latest-amd64
release_docker_arm64:
if: github.ref == 'refs/heads/master'
needs: [ test_backend, test_frontend, test_smoke ]
runs-on: ubuntu-latest
steps:
- name: Init
uses: actions/checkout@v3
- name: Setup
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Run
run: |
uname -m
uname -a
docker version
# docker build -t machines/filestash:latest-arm64 ./docker/
# echo "DONE"
release_docker:
needs: [ release_docker_amd64, release_docker_arm64 ]
runs-on: ubuntu-latest
steps:
- name: Init
uses: actions/checkout@v3
- name: Setup
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run
run: |
docker manifest create machines/filestash:latest \
--amend machines/filestash:latest-amd64 \
--amend machines/filestash:latest-arm64v8
docker manifest push machines/filestash:latest
deploy:
if: github.ref == 'refs/heads/master'
needs: release_docker
runs-on: ubuntu-latest
steps:
- name: Setup
uses: Azure/k8s-set-context@v1
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBE_CONFIG }}
- name: Deploy
run: kubectl rollout restart deployment app-filestash-demo -n filestash