mirror of
https://github.com/dani-garcia/vaultwarden.git
synced 2024-12-27 12:42:41 +00:00
20535065d7
Since docker hub stopped Autobuild, we need to switch to something else. This will trigger building of images on Github Actions and pushes them to Docker Hub. You only need to add 3 secrets before you merge this PR to have it working directly. - DOCKERHUB_USERNAME : The username of the account you are going to push the builds to - DOCKERHUB_TOKEN : The token needed to login and push builds - DOCKERHUB_REPO : The repo name in the following form `index.docker.io/<user>/<repo>` So for vaultwarden that would be `index.docker.io/vaultwarden/server` Also some small modifications to the other workflows.
169 lines
6.0 KiB
YAML
169 lines
6.0 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- ".github/workflows/build.yml"
|
|
- "src/**"
|
|
- "migrations/**"
|
|
- "Cargo.*"
|
|
- "build.rs"
|
|
- "diesel.toml"
|
|
- "rust-toolchain"
|
|
pull_request:
|
|
paths:
|
|
- ".github/workflows/build.yml"
|
|
- "src/**"
|
|
- "migrations/**"
|
|
- "Cargo.*"
|
|
- "build.rs"
|
|
- "diesel.toml"
|
|
- "rust-toolchain"
|
|
|
|
jobs:
|
|
build:
|
|
# Make warnings errors, this is to prevent warnings slipping through.
|
|
# This is done globally to prevent rebuilds when the RUSTFLAGS env variable changes.
|
|
env:
|
|
RUSTFLAGS: "-D warnings"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
channel:
|
|
- nightly
|
|
# - stable
|
|
target-triple:
|
|
- x86_64-unknown-linux-gnu
|
|
# - x86_64-unknown-linux-musl
|
|
include:
|
|
- target-triple: x86_64-unknown-linux-gnu
|
|
host-triple: x86_64-unknown-linux-gnu
|
|
features: [sqlite,mysql,postgresql] # Remember to update the `cargo test` to match the amount of features
|
|
channel: nightly
|
|
os: ubuntu-18.04
|
|
ext: ""
|
|
# - target-triple: x86_64-unknown-linux-gnu
|
|
# host-triple: x86_64-unknown-linux-gnu
|
|
# features: "sqlite,mysql,postgresql"
|
|
# channel: stable
|
|
# os: ubuntu-18.04
|
|
# ext: ""
|
|
|
|
name: Building ${{ matrix.channel }}-${{ matrix.target-triple }}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
# Checkout the repo
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
# End Checkout the repo
|
|
|
|
|
|
# Install musl-tools when needed
|
|
- name: Install musl tools
|
|
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends musl-dev musl-tools cmake
|
|
if: matrix.target-triple == 'x86_64-unknown-linux-musl'
|
|
# End Install musl-tools when needed
|
|
|
|
|
|
# Install dependencies
|
|
- name: Install dependencies Ubuntu
|
|
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends openssl sqlite build-essential libmariadb-dev-compat libpq-dev libssl-dev pkgconf
|
|
if: startsWith( matrix.os, 'ubuntu' )
|
|
# End Install dependencies
|
|
|
|
|
|
# Enable Rust Caching
|
|
- uses: Swatinem/rust-cache@v1
|
|
# End Enable Rust Caching
|
|
|
|
|
|
# Uses the rust-toolchain file to determine version
|
|
- name: 'Install ${{ matrix.channel }}-${{ matrix.host-triple }} for target: ${{ matrix.target-triple }}'
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
target: ${{ matrix.target-triple }}
|
|
components: clippy, rustfmt
|
|
# End Uses the rust-toolchain file to determine version
|
|
|
|
|
|
# Run cargo tests (In release mode to speed up future builds)
|
|
# First test all features together, afterwards test them separately.
|
|
- name: "`cargo test --release --features ${{ join(matrix.features, ',') }} --target ${{ matrix.target-triple }}`"
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --release --features ${{ join(matrix.features, ',') }} --target ${{ matrix.target-triple }}
|
|
# Test single features
|
|
# 0: sqlite
|
|
- name: "`cargo test --release --features ${{ matrix.features[0] }} --target ${{ matrix.target-triple }}`"
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --release --features ${{ matrix.features[0] }} --target ${{ matrix.target-triple }}
|
|
if: ${{ matrix.features[0] != '' }}
|
|
# 1: mysql
|
|
- name: "`cargo test --release --features ${{ matrix.features[1] }} --target ${{ matrix.target-triple }}`"
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --release --features ${{ matrix.features[1] }} --target ${{ matrix.target-triple }}
|
|
if: ${{ matrix.features[1] != '' }}
|
|
# 2: postgresql
|
|
- name: "`cargo test --release --features ${{ matrix.features[2] }} --target ${{ matrix.target-triple }}`"
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --release --features ${{ matrix.features[2] }} --target ${{ matrix.target-triple }}
|
|
if: ${{ matrix.features[2] != '' }}
|
|
# End Run cargo tests
|
|
|
|
|
|
# Run cargo clippy, and fail on warnings (In release mode to speed up future builds)
|
|
- name: "`cargo clippy --release --features ${{ join(matrix.features, ',') }} --target ${{ matrix.target-triple }}`"
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: clippy
|
|
args: --release --features ${{ join(matrix.features, ',') }} --target ${{ matrix.target-triple }} -- -D warnings
|
|
# End Run cargo clippy
|
|
|
|
|
|
# Run cargo fmt
|
|
- name: '`cargo fmt`'
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: fmt
|
|
args: --all -- --check
|
|
# End Run cargo fmt
|
|
|
|
|
|
# Build the binary
|
|
- name: "`cargo build --release --features ${{ join(matrix.features, ',') }} --target ${{ matrix.target-triple }}`"
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: build
|
|
args: --release --features ${{ join(matrix.features, ',') }} --target ${{ matrix.target-triple }}
|
|
# End Build the binary
|
|
|
|
|
|
# Upload artifact to Github Actions
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: vaultwarden-${{ matrix.target-triple }}${{ matrix.ext }}
|
|
path: target/${{ matrix.target-triple }}/release/vaultwarden${{ matrix.ext }}
|
|
# End Upload artifact to Github Actions
|
|
|
|
|
|
## This is not used at the moment
|
|
## We could start using this when we can build static binaries
|
|
# Upload to github actions release
|
|
# - name: Release
|
|
# uses: Shopify/upload-to-release@1
|
|
# if: startsWith(github.ref, 'refs/tags/')
|
|
# with:
|
|
# name: vaultwarden-${{ matrix.target-triple }}${{ matrix.ext }}
|
|
# path: target/${{ matrix.target-triple }}/release/vaultwarden${{ matrix.ext }}
|
|
# repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
# End Upload to github actions release
|