2.0.0-rc (#9)
Some checks failed
BlockStorage/repertory_osx/pipeline/head This commit looks good
BlockStorage/repertory_windows/pipeline/head This commit looks good
BlockStorage/repertory/pipeline/head There was a failure building this commit
BlockStorage/repertory_linux_builds/pipeline/head This commit looks good
BlockStorage/repertory_osx_builds/pipeline/head There was a failure building this commit

### Issues

* \#1 \[bug\] Unable to mount S3 due to 'item_not_found' exception
* \#2 Require bucket name for S3 mounts
* \#3 \[bug\] File size is not being updated in S3 mount
* \#4 Upgrade to libfuse-3.x.x
* \#5 Switch to renterd for Sia support
* \#6 Switch to cpp-httplib to further reduce dependencies
* \#7 Remove global_data and calculate used disk space per provider
* \#8 Switch to libcurl for S3 mount support

### Changes from v1.x.x

* Added read-only encrypt provider
  * Pass-through mount point that transparently encrypts source data using `XChaCha20-Poly1305`
* Added S3 encryption support via `XChaCha20-Poly1305`
* Added replay protection to remote mounts
* Added support base64 writes in remote FUSE
* Created static linked Linux binaries for `amd64` and `aarch64` using `musl-libc`
* Removed legacy Sia renter support
* Removed Skynet support
* Fixed multiple remote mount WinFSP API issues on \*NIX servers
* Implemented chunked read and write
  * Writes for non-cached files are performed in chunks of 8Mib
* Removed `repertory-ui` support
* Removed `FreeBSD` support
* Switched to `libsodium` over `CryptoPP`
* Switched to `XChaCha20-Poly1305` for remote mounts
* Updated `GoogleTest` to v1.14.0
* Updated `JSON for Modern C++` to v3.11.2
* Updated `OpenSSL` to v1.1.1w
* Updated `RocksDB` to v8.5.3
* Updated `WinFSP` to 2023
* Updated `boost` to v1.78.0
* Updated `cURL` to v8.3.0
* Updated `zlib` to v1.3
* Use `upload_manager` for all providers
  * Adds a delay to uploads to prevent excessive API calls
  * Supports re-upload after mount restart for incomplete uploads
  * NOTE: Uploads for all providers are full file (no resume support)
    * Multipart upload support is planned for S3

Reviewed-on: #9
This commit is contained in:
2023-10-29 06:55:59 +00:00
parent 3ff46723b8
commit f43c41f88a
839 changed files with 98214 additions and 92959 deletions

View File

@ -1,282 +1,94 @@
#!groovy
pipeline {
agent none
environment {
BUILD_ARGS = '--build . -j 8'
CONFIGURE_ARGS = '../.. -DCMAKE_BUILD_TYPE=Release -DREPERTORY_ENABLE_S3=ON'
CONFIGURE_MINGW64_ARGS = '../.. -DCMAKE_BUILD_TYPE=Release -DREPERTORY_ENABLE_S3=ON -DCMAKE_TOOLCHAIN_FILE=../../cmake/mingw-w64-x86_64.cmake'
REPERTORY_TEST_DIR = "${HOME}/.ci/cfg"
}
options {
disableConcurrentBuilds()
retry(2)
}
stages {
stage('arch') {
agent {
dockerfile {
filename 'arch'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/arch'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/arch'
}
}
stage('centos7') {
agent {
dockerfile {
filename 'centos7'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/centos7'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/centos7'
}
}
stage('debian9') {
agent {
dockerfile {
filename 'debian9'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/debian9'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/debian9'
}
}
stage('debian10') {
agent {
dockerfile {
filename 'debian10'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/debian10'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/debian10'
}
}
stage('debian11') {
agent {
dockerfile {
filename 'debian11'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/debian11'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/debian11'
}
}
stage('fedora29') {
agent {
dockerfile {
filename 'fedora29'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora29'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora29'
}
}
stage('fedora30') {
agent {
dockerfile {
filename 'fedora30'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora30'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora30'
}
}
stage('fedora31') {
agent {
dockerfile {
filename 'fedora31'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora31'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora31'
}
}
stage('fedora32') {
agent {
dockerfile {
filename 'fedora32'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora32'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora32'
}
}
stage('fedora33') {
agent {
dockerfile {
filename 'fedora33'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora33'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora33'
}
}
stage('fedora34') {
agent {
dockerfile {
filename 'fedora34'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora34'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora34'
}
}
stage('fedora35') {
agent {
dockerfile {
filename 'fedora35'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora35'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/fedora35'
}
}
stage('opensuse15') {
agent {
dockerfile {
filename 'opensuse15'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15'
}
}
stage('opensuse15.1') {
agent {
dockerfile {
filename 'opensuse15.1'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15.1'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15.1'
}
}
stage('opensuse15.2') {
agent {
dockerfile {
filename 'opensuse15.2'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15.2'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15.2'
}
}
stage('opensuse15.3') {
agent {
dockerfile {
filename 'opensuse15.3'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15.3'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/opensuse15.3'
}
}
stage('solus') {
stage('clean') {
agent any
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/solus'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/solus'
sh 'mkdir -p build/'
sh 'rm -f build/*/librepertory.a'
sh 'rm -f build/*/repertory'
sh 'rm -f build/*/unittests'
}
}
stage('tumbleweed') {
stage('alpine') {
agent {
dockerfile {
filename 'tumbleweed'
filename 'alpine'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/tumbleweed'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/tumbleweed'
retry(2) {
sleep time: 5, unit: 'SECONDS'
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/alpine'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/alpine'
sh 'strip build/alpine/repertory'
}
}
}
stage('ubuntu18.04') {
stage('alpine_arm64') {
agent {
dockerfile {
filename 'ubuntu18.04'
dir 'docker/64_bit'
filename 'alpine'
dir 'docker/aarch64'
args '-v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/ubuntu18.04'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/ubuntu18.04'
retry(2) {
sleep time: 5, unit: 'SECONDS'
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/alpine_arm64'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/alpine_arm64'
sh 'strip build/alpine_arm64/repertory'
}
}
}
stage('ubuntu20.04') {
stage('mingw64') {
agent {
dockerfile {
filename 'ubuntu20.04'
filename 'mingw64'
dir 'docker/64_bit'
}
}
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/ubuntu20.04'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/ubuntu20.04'
retry(2) {
sleep time: 5, unit: 'SECONDS'
cmake arguments: "${env.CONFIGURE_MINGW64_ARGS}", installation: 'InSearchPath', workingDir: 'build/mingw64'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/mingw64'
sh 'strip build/mingw64/repertory.exe'
}
}
}
stage('ubuntu21.10') {
agent {
dockerfile {
filename 'ubuntu21.10'
dir 'docker/64_bit'
}
}
stage('deliver') {
agent any
steps {
cmake arguments: "${env.CONFIGURE_ARGS}", installation: 'InSearchPath', workingDir: 'build/ubuntu21.10'
cmake arguments: "${env.BUILD_ARGS}", installation: 'InSearchPath', workingDir: 'build/ubuntu21.10'
sh 'scripts/make_package.sh alpine /home/sgraves/cert build/alpine_arm64 . /mnt/filebase 1'
sh 'scripts/make_package.sh alpine /home/sgraves/cert build/alpine . /mnt/filebase'
sh 'scripts/make_package.sh mingw64 /home/sgraves/cert build/mingw64 . /mnt/filebase'
}
}
}