Build scripts
This commit is contained in:
parent
9ef7e3b221
commit
e0296bcd5e
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -xeu
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive
|
||||
TARGET="$PWD"
|
||||
|
||||
export DEBIAN_FRONTEND
|
||||
|
||||
dependencies() {
|
||||
# Update system and install basic tools
|
||||
apt-get update -yq && apt-get install -yq aptitude curl git wget
|
||||
# Install dependencies for Vaultwarden
|
||||
aptitude --quiet --assume-yes install pkg-config libssl-dev build-essential libsqlite3-dev
|
||||
}
|
||||
|
||||
install_rust() {
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-host x86_64-unknown-linux-gnu --default-toolchain nightly
|
||||
. ~/.cargo/env
|
||||
}
|
||||
|
||||
get_vault_sources() {
|
||||
# Clone Vaultwarden repo
|
||||
cd "$(mktemp -d)"
|
||||
git clone https://github.com/dani-garcia/vaultwarden
|
||||
cd vaultwarden
|
||||
}
|
||||
|
||||
build_vault() {
|
||||
# Build
|
||||
cargo build --release --features sqlite
|
||||
|
||||
# Move to previous directory
|
||||
cd -
|
||||
}
|
||||
|
||||
get_webgui_sources() {
|
||||
# Get Dani Garcia GPG key
|
||||
gpg --keyserver keyserver.ubuntu.com --recv-keys B9B7A108373276BF3C0406F9FC8A7D14C3CD543A
|
||||
|
||||
# Clone Vault web builds repo
|
||||
git clone https://github.com/dani-garcia/bw_web_builds
|
||||
cd bw_web_builds
|
||||
|
||||
# Get the last version of builded web gui
|
||||
web_vault_version=$(git tag --sort=v:refname | tail -n1)
|
||||
wget "https://github.com/dani-garcia/bw_web_builds/releases/download/${web_vault_version}/bw_web_${web_vault_version}.tar.gz" -O ../bw_web_latest.tar.gz
|
||||
web_vault_version=$(git tag --sort=v:refname | tail -n1)
|
||||
wget "https://github.com/dani-garcia/bw_web_builds/releases/download/${web_vault_version}/bw_web_${web_vault_version}.tar.gz.asc" -O ../bw_web_latest.tar.gz.asc
|
||||
|
||||
# Move to previous directory
|
||||
cd -
|
||||
}
|
||||
|
||||
merge() {
|
||||
# Verify the signature
|
||||
gpg --verify bw_web_latest.tar.gz.asc bw_web_latest.tar.gz || exit 2
|
||||
|
||||
# Extract the builded web gui
|
||||
tar xf bw_web_latest.tar.gz
|
||||
|
||||
# Move the web gui to Vaultwarden
|
||||
mv web-vault vaultwarden/target/release/web-vault
|
||||
|
||||
# Produce an archive of this Vaultwarden release
|
||||
cd vaultwarden/target
|
||||
vaultwarden_version=$(git tag --sort=v:refname | tail -n1)
|
||||
tar czf "/vaultwarden_${vaultwarden_version}.tar.gz" release
|
||||
|
||||
# Move to previous directory
|
||||
cd -
|
||||
}
|
||||
|
||||
copy() {
|
||||
TARGET_UID="$(stat --printf %u "$TARGET")"
|
||||
TARGET_GID="$(stat --printf %g "$TARGET")"
|
||||
install -o "$TARGET_UID" -g "$TARGET_GID" -t "$TARGET/target" /*.tar.gz
|
||||
}
|
||||
|
||||
main() {
|
||||
dependencies
|
||||
install_rust
|
||||
get_vault_sources
|
||||
build_vault
|
||||
get_webgui_sources
|
||||
merge
|
||||
copy
|
||||
}
|
||||
|
||||
main
|
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -xeu
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive
|
||||
TARGET="$PWD"
|
||||
|
||||
export DEBIAN_FRONTEND
|
||||
|
||||
dependencies() {
|
||||
# Update system and install basic tools
|
||||
apt-get update -yq && apt-get install -yq aptitude curl git wget
|
||||
# Install dependencies for Vaultwarden
|
||||
aptitude --quiet --assume-yes install pkg-config libssl-dev build-essential libsqlite3-dev
|
||||
}
|
||||
|
||||
install_rust() {
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-host x86_64-unknown-linux-gnu --default-toolchain nightly
|
||||
. ~/.cargo/env
|
||||
}
|
||||
|
||||
get_vault_sources() {
|
||||
## Clone the Vaultwarden repo
|
||||
cd "$(mktemp -d)"
|
||||
git clone https://github.com/dani-garcia/vaultwarden
|
||||
cd vaultwarden
|
||||
}
|
||||
|
||||
build_vault() {
|
||||
## Build
|
||||
cargo build --release --features sqlite
|
||||
|
||||
## Move to previous directory
|
||||
cd -
|
||||
}
|
||||
|
||||
get_webgui_sources() {
|
||||
## Get Dani Garcia GPG key
|
||||
gpg --keyserver keyserver.ubuntu.com --recv-keys B9B7A108373276BF3C0406F9FC8A7D14C3CD543A
|
||||
|
||||
## Clone Vault web builds repo
|
||||
git clone https://github.com/dani-garcia/bw_web_builds
|
||||
cd bw_web_builds
|
||||
|
||||
## Get the last version of builded web gui
|
||||
web_vault_version=$(git tag --sort=v:refname | tail -n1)
|
||||
wget "https://github.com/dani-garcia/bw_web_builds/releases/download/${web_vault_version}/bw_web_${web_vault_version}.tar.gz" -O ../bw_web_latest.tar.gz
|
||||
web_vault_version=$(git tag --sort=v:refname | tail -n1)
|
||||
wget "https://github.com/dani-garcia/bw_web_builds/releases/download/${web_vault_version}/bw_web_${web_vault_version}.tar.gz.asc" -O ../bw_web_latest.tar.gz.asc
|
||||
|
||||
## Move to previous directory
|
||||
cd -
|
||||
}
|
||||
|
||||
merge() {
|
||||
## Verify the signature
|
||||
gpg --verify bw_web_latest.tar.gz.asc bw_web_latest.tar.gz || exit 2
|
||||
|
||||
## Extract the builded web gui
|
||||
tar xf bw_web_latest.tar.gz
|
||||
|
||||
## Move the web gui to Vaultwarden
|
||||
mv web-vault vaultwarden/target/release/web-vault
|
||||
|
||||
## Produce an archive of this Vaultwarden release
|
||||
cd vaultwarden/target
|
||||
vaultwarden_version=$(git tag --sort=v:refname | tail -n1)
|
||||
tar czf "/vaultwarden_${vaultwarden_version}.tar.gz" release
|
||||
|
||||
## Move to previous directory
|
||||
cd -
|
||||
}
|
||||
|
||||
copy() {
|
||||
TARGET_UID="$(stat --printf %u "$TARGET")"
|
||||
TARGET_GID="$(stat --printf %g "$TARGET")"
|
||||
install -o "$TARGET_UID" -g "$TARGET_GID" -t "$TARGET/target" /*.tar.gz
|
||||
}
|
||||
|
||||
main() {
|
||||
dependencies
|
||||
install_rust
|
||||
get_vault_sources
|
||||
build_vault
|
||||
get_webgui_sources
|
||||
merge
|
||||
copy
|
||||
}
|
||||
|
||||
main
|
Loading…
Reference in New Issue