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.
		
		
		
		
		
			
		
			
				
					
					
						
							148 lines
						
					
					
						
							4.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							148 lines
						
					
					
						
							4.6 KiB
						
					
					
				
								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/cache@v1.0.3
							 | 
						|
								    #   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/cache@v1.0.3
							 | 
						|
								      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/cache@v1.0.3
							 | 
						|
								      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/cache@v1.0.3
							 | 
						|
								    #   if: matrix.os == 'macOS-latest'
							 | 
						|
								    #   with:
							 | 
						|
								    #     path: ~/Library/Caches/Homebrew
							 | 
						|
								    #     key: ${{ runner.os }}-brew-cache
							 | 
						|
								
							 | 
						|
								    # - name: Cache apt
							 | 
						|
								    #   uses: actions/cache@v1.0.3
							 | 
						|
								    #   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/cache@v1.0.3
							 | 
						|
								      with:
							 | 
						|
								        path: ~/.cargo/registry
							 | 
						|
								        key: ${{ runner.os }}-${{matrix.db-backend}}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
							 | 
						|
								    - name: Cache cargo index
							 | 
						|
								      uses: actions/cache@v1.0.3
							 | 
						|
								      with:
							 | 
						|
								        path: ~/.cargo/git
							 | 
						|
								        key: ${{ runner.os }}-${{matrix.db-backend}}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
							 | 
						|
								    - name: Cache cargo build
							 | 
						|
								      uses: actions/cache@v1.0.3
							 | 
						|
								      with:
							 | 
						|
								        path: target
							 | 
						|
								        key: ${{ runner.os }}-${{matrix.db-backend}}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
							 | 
						|
								
							 | 
						|
								    - name: Install latest nightly
							 | 
						|
								      uses: actions-rs/toolchain@v1.0.5
							 | 
						|
								      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/upload-artifact@v1.0.0
							 | 
						|
								      with:
							 | 
						|
								        name: bitwarden_rs-${{ matrix.db-backend }}-${{ matrix.target }}${{ matrix.ext }}
							 | 
						|
								        path: target/${{ matrix.target }}/release/bitwarden_rs${{ matrix.ext }}
							 | 
						|
								
							 | 
						|
								    - name: Release
							 | 
						|
								      uses: Shopify/upload-to-release@1.0.0
							 | 
						|
								      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 }}
							 | 
						|
								
							 |