diff options
author | BlackDex <[email protected]> | 2020-12-16 19:31:39 +0100 |
---|---|---|
committer | BlackDex <[email protected]> | 2020-12-16 19:31:39 +0100 |
commit | feefe690943e42d87b76acd8e78bdbd48bf826d5 (patch) | |
tree | 97ed697456f160727c553b65cfae6db4e80d94bc /.github | |
parent | 46df3ee7cdcece0181209d2a3c17fbee828d0eb1 (diff) | |
download | vaultwarden-feefe690943e42d87b76acd8e78bdbd48bf826d5.tar.gz vaultwarden-feefe690943e42d87b76acd8e78bdbd48bf826d5.zip |
Updated Github Actions, Fixed Dockerfile
- Updated the Github Actions to build just one binary with all DB
Backends.
- Created a hadolint workflow to check and verify Dockerfiles.
- Fixed current hadolint errors.
- Fixed a bug in the Dockerfile.j2 which prevented the correct libraries
and tools to be installed on the Alpine images.
- Deleted travis.yml since that is not used anymore
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/build.yml | 125 | ||||
-rw-r--r-- | .github/workflows/hadolint.yml | 34 | ||||
-rw-r--r-- | .github/workflows/workspace.yml | 148 |
3 files changed, 159 insertions, 148 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..d7ed5618 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,125 @@ +name: Build + +on: + push: + # Ignore when there are only changes done too one of these paths + paths-ignore: + - "**.md" + - "**.txt" + - "azure-pipelines.yml" + - "docker/**" + - "hooks/**" + - "tools/**" + +jobs: + build: + 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" + 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: + # - target-triple: x86_64-unknown-linux-musl + # host-triple: x86_64-unknown-linux-gnu + # features: "sqlite,postgresql" + # channel: nightly + # os: ubuntu-18.04 + # ext: + # - target-triple: x86_64-unknown-linux-musl + # host-triple: x86_64-unknown-linux-gnu + # features: "sqlite,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 }} + # End Uses the rust-toolchain file to determine version + + + # Run cargo tests (In release mode to speed up cargo build afterwards) + - name: '`cargo test --release --features ${{ matrix.features }} --target ${{ matrix.target-triple }}`' + uses: actions-rs/cargo@v1 + with: + command: test + args: --release --features ${{ matrix.features }} --target ${{ matrix.target-triple }} + # End Run cargo tests + + + # Build the binary + - name: '`cargo build --release --features ${{ matrix.features }} --target ${{ matrix.target-triple }}`' + uses: actions-rs/cargo@v1 + with: + command: build + args: --release --features ${{ 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: bitwarden_rs-${{ matrix.target-triple }}${{ matrix.ext }} + path: target/${{ matrix.target-triple }}/release/bitwarden_rs${{ 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: bitwarden_rs-${{ matrix.target-triple }}${{ matrix.ext }} + # path: target/${{ matrix.target-triple }}/release/bitwarden_rs${{ matrix.ext }} + # repo-token: ${{ secrets.GITHUB_TOKEN }} + # End Upload to github actions release diff --git a/.github/workflows/hadolint.yml b/.github/workflows/hadolint.yml new file mode 100644 index 00000000..7b799554 --- /dev/null +++ b/.github/workflows/hadolint.yml @@ -0,0 +1,34 @@ +name: Hadolint + +on: + pull_request: + # Ignore when there are only changes done too one of these paths + paths: + - "docker/**" + +jobs: + hadolint: + name: Validate Dockerfile syntax + runs-on: ubuntu-20.04 + steps: + # Checkout the repo + - name: Checkout + uses: actions/checkout@v2 + # End Checkout the repo + + + # Download hadolint + - name: Download hadolint + shell: bash + run: | + sudo curl -L https://github.com/hadolint/hadolint/releases/download/v$HADOLINT_VERSION/hadolint-$(uname -s)-$(uname -m) -o /usr/local/bin/hadolint && \ + sudo chmod +x /usr/local/bin/hadolint + env: + HADOLINT_VERSION: 1.19.0 + # End Download hadolint + + # Test Dockerfiles + - name: Run hadolint + shell: bash + run: git ls-files --exclude='docker/*/Dockerfile*' --ignored | xargs hadolint + # End Test Dockerfiles diff --git a/.github/workflows/workspace.yml b/.github/workflows/workspace.yml deleted file mode 100644 index b7c73285..00000000 --- a/.github/workflows/workspace.yml +++ /dev/null @@ -1,148 +0,0 @@ -name: Workflow - -on: - push: - paths-ignore: - - "**.md" - #pull_request: - # paths-ignore: - # - "**.md" - -jobs: - build: - name: Build - strategy: - fail-fast: false - matrix: - db-backend: [sqlite, mysql, postgresql] - target: - - x86_64-unknown-linux-gnu - # - x86_64-unknown-linux-musl - # - x86_64-apple-darwin - # - x86_64-pc-windows-msvc - include: - - target: x86_64-unknown-linux-gnu - os: ubuntu-latest - ext: - # - target: x86_64-unknown-linux-musl - # os: ubuntu-latest - # ext: - # - target: x86_64-apple-darwin - # os: macOS-latest - # ext: - # - target: x86_64-pc-windows-msvc - # os: windows-latest - # ext: .exe - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v1 - - # - name: Cache choco cache - # uses: actions/[email protected] - # if: matrix.os == 'windows-latest' - # with: - # path: ~\AppData\Local\Temp\chocolatey - # key: ${{ runner.os }}-choco-cache-${{ matrix.db-backend }} - - - name: Cache vcpkg installed - uses: actions/[email protected] - if: matrix.os == 'windows-latest' - with: - path: $VCPKG_ROOT/installed - key: ${{ runner.os }}-vcpkg-cache-${{ matrix.db-backend }} - env: - VCPKG_ROOT: 'C:\vcpkg' - - - name: Cache vcpkg downloads - uses: actions/[email protected] - if: matrix.os == 'windows-latest' - with: - path: $VCPKG_ROOT/downloads - key: ${{ runner.os }}-vcpkg-cache-${{ matrix.db-backend }} - env: - VCPKG_ROOT: 'C:\vcpkg' - - # - name: Cache homebrew - # uses: actions/[email protected] - # if: matrix.os == 'macOS-latest' - # with: - # path: ~/Library/Caches/Homebrew - # key: ${{ runner.os }}-brew-cache - - # - name: Cache apt - # uses: actions/[email protected] - # if: matrix.os == 'ubuntu-latest' - # with: - # path: /var/cache/apt/archives - # key: ${{ runner.os }}-apt-cache - - # Install dependencies - - name: Install dependencies macOS - run: brew update; brew install openssl sqlite libpq mysql - if: matrix.os == 'macOS-latest' - - - name: Install dependencies Ubuntu - run: sudo apt-get update && sudo apt-get install --no-install-recommends openssl sqlite libpq-dev libmysql++-dev - if: matrix.os == 'ubuntu-latest' - - - name: Install dependencies Windows - run: vcpkg integrate install; vcpkg install sqlite3:x64-windows openssl:x64-windows libpq:x64-windows libmysql:x64-windows - if: matrix.os == 'windows-latest' - env: - VCPKG_ROOT: 'C:\vcpkg' - # End Install dependencies - - # Install rust nightly toolchain - - name: Cache cargo registry - uses: actions/[email protected] - with: - path: ~/.cargo/registry - key: ${{ runner.os }}-${{matrix.db-backend}}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - - name: Cache cargo index - uses: actions/[email protected] - with: - path: ~/.cargo/git - key: ${{ runner.os }}-${{matrix.db-backend}}-cargo-index-${{ hashFiles('**/Cargo.lock') }} - - name: Cache cargo build - uses: actions/[email protected] - with: - path: target - key: ${{ runner.os }}-${{matrix.db-backend}}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - - - name: Install latest nightly - uses: actions-rs/[email protected] - with: - # Uses rust-toolchain to determine version - profile: minimal - target: ${{ matrix.target }} - - # Build - - name: Build Win - if: matrix.os == 'windows-latest' - run: cargo.exe build --features ${{ matrix.db-backend }} --release --target ${{ matrix.target }} - env: - RUSTFLAGS: -Ctarget-feature=+crt-static - VCPKG_ROOT: 'C:\vcpkg' - - - name: Build macOS / Ubuntu - if: matrix.os == 'macOS-latest' || matrix.os == 'ubuntu-latest' - run: cargo build --verbose --features ${{ matrix.db-backend }} --release --target ${{ matrix.target }} - - # Test - - name: Run tests - run: cargo test --features ${{ matrix.db-backend }} - - # Upload & Release - - name: Upload artifact - uses: actions/[email protected] - with: - name: bitwarden_rs-${{ matrix.db-backend }}-${{ matrix.target }}${{ matrix.ext }} - path: target/${{ matrix.target }}/release/bitwarden_rs${{ matrix.ext }} - - - name: Release - uses: Shopify/[email protected] - if: startsWith(github.ref, 'refs/tags/') - with: - name: bitwarden_rs-${{ matrix.db-backend }}-${{ matrix.target }}${{ matrix.ext }} - path: target/${{ matrix.target }}/release/bitwarden_rs${{ matrix.ext }} - repo-token: ${{ secrets.GITHUB_TOKEN }} |