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.
		
		
		
		
		
			
		
			
				
					
					
						
							197 lines
						
					
					
						
							7.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							197 lines
						
					
					
						
							7.1 KiB
						
					
					
				| name: Build | |
| 
 | |
| on: | |
|   push: | |
|     paths: | |
|       - ".github/workflows/build.yml" | |
|       - "src/**" | |
|       - "migrations/**" | |
|       - "Cargo.*" | |
|       - "build.rs" | |
|       - "rust-toolchain" | |
|   pull_request: | |
|     paths: | |
|       - ".github/workflows/build.yml" | |
|       - "src/**" | |
|       - "migrations/**" | |
|       - "Cargo.*" | |
|       - "build.rs" | |
|       - "rust-toolchain" | |
| 
 | |
| jobs: | |
|   build: | |
|     runs-on: ubuntu-20.04 | |
|     # 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: | |
|           - "rust-toolchain" # The version defined in rust-toolchain | |
|           - "1.60.0" # The supported MSRV | |
| 
 | |
|     name: Build and Test ${{ matrix.channel }} | |
| 
 | |
|     steps: | |
|       # Checkout the repo | |
|       - name: "Checkout" | |
|         uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 | |
|       # End Checkout the repo | |
| 
 | |
|       # 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 pkg-config | |
|       # End Install dependencies | |
| 
 | |
| 
 | |
|       # Uses the rust-toolchain file to determine version | |
|       - name: "Install rust-toolchain version" | |
|         uses: actions-rs/toolchain@b2417cde72dcf67f306c0ae8e0828a81bf0b189f # v1.0.6 | |
|         if: ${{ matrix.channel == 'rust-toolchain' }} | |
|         with: | |
|           profile: minimal | |
|           components: clippy, rustfmt | |
|       # End Uses the rust-toolchain file to determine version | |
| 
 | |
| 
 | |
|       # Install the MSRV channel to be used | |
|       - name: "Install MSRV version" | |
|         uses: actions-rs/toolchain@b2417cde72dcf67f306c0ae8e0828a81bf0b189f # v1.0.6 | |
|         if: ${{ matrix.channel != 'rust-toolchain' }} | |
|         with: | |
|           profile: minimal | |
|           override: true | |
|           toolchain: ${{ matrix.channel }} | |
|       # End Install the MSRV channel to be used | |
| 
 | |
| 
 | |
|       # Enable Rust Caching | |
|       - uses: Swatinem/rust-cache@6720f05bc48b77f96918929a9019fb2203ff71f8 # v2.0.0 | |
|       # End Enable Rust Caching | |
| 
 | |
| 
 | |
|       # Show environment | |
|       - name: "Show environment" | |
|         run: | | |
|           rustc -vV | |
|           cargo -vV           | |
|       # End Show environment | |
| 
 | |
| 
 | |
|       # Run cargo tests (In release mode to speed up future builds) | |
|       # First test all features together, afterwards test them separately. | |
|       - name: "test features: sqlite,mysql,postgresql,enable_mimalloc" | |
|         id: test_sqlite_mysql_postgresql_mimalloc | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: $${{ always() }} | |
|         with: | |
|           command: test | |
|           args: --release --features sqlite,mysql,postgresql,enable_mimalloc | |
| 
 | |
|       - name: "test features: sqlite,mysql,postgresql" | |
|         id: test_sqlite_mysql_postgresql | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: $${{ always() }} | |
|         with: | |
|           command: test | |
|           args: --release --features sqlite,mysql,postgresql | |
| 
 | |
|       - name: "test features: sqlite" | |
|         id: test_sqlite | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: $${{ always() }} | |
|         with: | |
|           command: test | |
|           args: --release --features sqlite | |
| 
 | |
|       - name: "test features: mysql" | |
|         id: test_mysql | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: $${{ always() }} | |
|         with: | |
|           command: test | |
|           args: --release --features mysql | |
| 
 | |
|       - name: "test features: postgresql" | |
|         id: test_postgresql | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: $${{ always() }} | |
|         with: | |
|           command: test | |
|           args: --release --features postgresql | |
|       # End Run cargo tests | |
| 
 | |
| 
 | |
|       # Run cargo clippy, and fail on warnings (In release mode to speed up future builds) | |
|       - name: "clippy features: sqlite,mysql,postgresql,enable_mimalloc" | |
|         id: clippy | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: ${{ always() && matrix.channel == 'rust-toolchain' }} | |
|         with: | |
|           command: clippy | |
|           args: --release --features sqlite,mysql,postgresql,enable_mimalloc -- -D warnings | |
|       # End Run cargo clippy | |
| 
 | |
| 
 | |
|       # Run cargo fmt (Only run on rust-toolchain defined version) | |
|       - name: "check formatting" | |
|         id: formatting | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: ${{ always() && matrix.channel == 'rust-toolchain' }} | |
|         with: | |
|           command: fmt | |
|           args: --all -- --check | |
|       # End Run cargo fmt | |
| 
 | |
| 
 | |
|       # Check for any previous failures, if there are stop, else continue. | |
|       # This is useful so all test/clippy/fmt actions are done, and they can all be addressed | |
|       - name: "Some checks failed" | |
|         if: ${{ failure() }} | |
|         run: | | |
|           echo "### :x: Checks Failed!" >> $GITHUB_STEP_SUMMARY | |
|           echo "" >> $GITHUB_STEP_SUMMARY | |
|           echo "|Job|Status|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|---|------|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|test (sqlite,mysql,postgresql,enable_mimalloc)|${{ steps.test_sqlite_mysql_postgresql_mimalloc.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|test (sqlite,mysql,postgresql)|${{ steps.test_sqlite_mysql_postgresql.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|test (sqlite)|${{ steps.test_sqlite.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|test (mysql)|${{ steps.test_mysql.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|test (postgresql)|${{ steps.test_postgresql.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|clippy (sqlite,mysql,postgresql,enable_mimalloc)|${{ steps.clippy.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "|fmt|${{ steps.formatting.outcome }}|" >> $GITHUB_STEP_SUMMARY | |
|           echo "" >> $GITHUB_STEP_SUMMARY | |
|           echo "Please check the failed jobs and fix where needed." >> $GITHUB_STEP_SUMMARY | |
|           echo "" >> $GITHUB_STEP_SUMMARY | |
|           exit 1           | |
| 
 | |
| 
 | |
|       # Check for any previous failures, if there are stop, else continue. | |
|       # This is useful so all test/clippy/fmt actions are done, and they can all be addressed | |
|       - name: "All checks passed" | |
|         if: ${{ success() }} | |
|         run: | | |
|           echo "### :tada: Checks Passed!" >> $GITHUB_STEP_SUMMARY | |
|           echo "" >> $GITHUB_STEP_SUMMARY           | |
| 
 | |
| 
 | |
|       # Build the binary to upload to the artifacts | |
|       - name: "build features: sqlite,mysql,postgresql" | |
|         uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3 | |
|         if: ${{ matrix.channel == 'rust-toolchain' }} | |
|         with: | |
|           command: build | |
|           args: --release --features sqlite,mysql,postgresql | |
|       # End Build the binary | |
| 
 | |
| 
 | |
|       # Upload artifact to Github Actions | |
|       - name: "Upload artifact" | |
|         uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 | |
|         if: ${{ matrix.channel == 'rust-toolchain' }} | |
|         with: | |
|           name: vaultwarden | |
|           path: target/${{ matrix.target-triple }}/release/vaultwarden | |
|       # End Upload artifact to Github Actions
 | |
| 
 |