To avoid bloating commits, don't commit any auto generated from the book. type: development
		
			
				
	
	
		
			151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: Build
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches:
 | |
|     - master
 | |
|     tags:
 | |
|     - v*.*.*
 | |
|   pull_request:
 | |
|     branches:
 | |
|     - master
 | |
| 
 | |
| jobs:
 | |
|   all:
 | |
|     name: All
 | |
| 
 | |
|     strategy:
 | |
|       matrix:
 | |
|         os:
 | |
|         - macos-latest
 | |
|         - ubuntu-latest
 | |
|         - windows-latest
 | |
|         include:
 | |
|         - os: ubuntu-latest
 | |
|           target: x86_64-unknown-linux-musl
 | |
|         - os: macos-latest
 | |
|           target: x86_64-apple-darwin
 | |
|         - os: windows-latest
 | |
|           target: x86_64-pc-windows-msvc
 | |
| 
 | |
|     runs-on: ${{matrix.os}}
 | |
| 
 | |
|     env:
 | |
|       RUSTFLAGS: "-D warnings"
 | |
| 
 | |
|     steps:
 | |
|     - uses: actions/checkout@v2
 | |
|       if: github.event_name == 'pull_request'
 | |
|       with:
 | |
|         ref: ${{ github.event.pull_request.head.sha }}
 | |
|         fetch-depth: 0
 | |
| 
 | |
|     - uses: actions/checkout@v2
 | |
|       if: github.event_name != 'pull_request'
 | |
|       with:
 | |
|         fetch-depth: 0
 | |
| 
 | |
|     - name: Cache cargo registry
 | |
|       uses: actions/cache@v1
 | |
|       with:
 | |
|         path: ~/.cargo/registry
 | |
|         key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
 | |
| 
 | |
|     - name: Cache cargo index
 | |
|       uses: actions/cache@v1
 | |
|       with:
 | |
|         path: ~/.cargo/git
 | |
|         key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
 | |
| 
 | |
|     - name: Cache cargo build
 | |
|       uses: actions/cache@v1
 | |
|       with:
 | |
|         path: target
 | |
|         key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
 | |
| 
 | |
|     - name: Install Stable
 | |
|       uses: actions-rs/toolchain@v1
 | |
|       with:
 | |
|         toolchain: stable
 | |
|         target: ${{matrix.target}}
 | |
|         profile: minimal
 | |
|         components: clippy, rustfmt
 | |
|         override: true
 | |
| 
 | |
|     - name: Info
 | |
|       run: |
 | |
|         rustup --version
 | |
|         cargo --version
 | |
|         cargo clippy --version
 | |
| 
 | |
|     - name: Build
 | |
|       run: cargo build --all --verbose
 | |
| 
 | |
|     - name: Test
 | |
|       run: cargo test --all --verbose
 | |
| 
 | |
|     - name: Clippy
 | |
|       run: cargo clippy --all
 | |
| 
 | |
|     - name: Lint
 | |
|       if: matrix.os == 'macos-latest'
 | |
|       run: |
 | |
|         brew install ripgrep
 | |
|         ./bin/lint
 | |
| 
 | |
|     - name: Install Nightly
 | |
|       uses: actions-rs/toolchain@v1
 | |
|       with:
 | |
|         toolchain: nightly
 | |
|         target: ${{matrix.target}}
 | |
|         profile: minimal
 | |
|         components: rustfmt
 | |
| 
 | |
|     - name: Check Formatting
 | |
|       run: cargo +nightly fmt --all -- --check
 | |
| 
 | |
|     - name: Check Generated
 | |
|       if: matrix.os == 'macos-latest'
 | |
|       run: |
 | |
|         brew install help2man
 | |
|         cargo run --package gen all
 | |
|         git diff --no-ext-diff --exit-code
 | |
| 
 | |
|     - name: Install `mdbook`
 | |
|       uses: peaceiris/actions-mdbook@v1
 | |
|       with:
 | |
|         mdbook-version: latest
 | |
| 
 | |
|     - name: Build Book
 | |
|       run: |
 | |
|         cargo run --package gen book
 | |
|         mdbook build book --dest-dir ../www/book
 | |
| 
 | |
|     - name: Record Git Revision
 | |
|       if: github.ref == 'refs/heads/master' && matrix.os == 'ubuntu-latest'
 | |
|       run: git rev-parse --verify HEAD > www/head.txt
 | |
| 
 | |
|     - name: Deploy Pages
 | |
|       uses: peaceiris/actions-gh-pages@v3
 | |
|       if: github.ref == 'refs/heads/master' && matrix.os == 'ubuntu-latest'
 | |
|       with:
 | |
|         github_token: ${{secrets.GITHUB_TOKEN}}
 | |
|         publish_branch: gh-pages
 | |
|         publish_dir: ./www
 | |
| 
 | |
|     - name: Package
 | |
|       id: package
 | |
|       if: startsWith(github.ref, 'refs/tags/v')
 | |
|       shell: bash
 | |
|       run: ./bin/package ${{github.ref}} ${{matrix.os}} ${{matrix.target}}
 | |
| 
 | |
|     - name: Publish
 | |
|       uses: softprops/action-gh-release@v1
 | |
|       if: startsWith(github.ref, 'refs/tags/v')
 | |
|       with:
 | |
|         draft: false
 | |
|         files: ${{steps.package.outputs.archive}}
 | |
|         prerelease: false
 | |
|       env:
 | |
|         GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
 |