You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							181 lines
						
					
					
						
							6.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							181 lines
						
					
					
						
							6.4 KiB
						
					
					
				
								name: Build
							 | 
						|
								
							 | 
						|
								on:
							 | 
						|
								  push:
							 | 
						|
								    paths-ignore:
							 | 
						|
								      - "*.md"
							 | 
						|
								      - "*.txt"
							 | 
						|
								      - ".dockerignore"
							 | 
						|
								      - ".env.template"
							 | 
						|
								      - ".gitattributes"
							 | 
						|
								      - ".gitignore"
							 | 
						|
								      - "azure-pipelines.yml"
							 | 
						|
								      - "docker/**"
							 | 
						|
								      - "hooks/**"
							 | 
						|
								      - "tools/**"
							 | 
						|
								      - ".github/FUNDING.yml"
							 | 
						|
								      - ".github/ISSUE_TEMPLATE/**"
							 | 
						|
								      - ".github/security-contact.gif"
							 | 
						|
								  pull_request:
							 | 
						|
								    # Ignore when there are only changes done too one of these paths
							 | 
						|
								    paths-ignore:
							 | 
						|
								      - "*.md"
							 | 
						|
								      - "*.txt"
							 | 
						|
								      - ".dockerignore"
							 | 
						|
								      - ".env.template"
							 | 
						|
								      - ".gitattributes"
							 | 
						|
								      - ".gitignore"
							 | 
						|
								      - "azure-pipelines.yml"
							 | 
						|
								      - "docker/**"
							 | 
						|
								      - "hooks/**"
							 | 
						|
								      - "tools/**"
							 | 
						|
								      - ".github/FUNDING.yml"
							 | 
						|
								      - ".github/ISSUE_TEMPLATE/**"
							 | 
						|
								      - ".github/security-contact.gif"
							 | 
						|
								
							 | 
						|
								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
							 | 
						|
								
							 |