'on': push: branches: - '*' pull_request: null jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/cache@v1 with: path: ~/.cargo/registry key: '${{ runner.os }}-cargo-registry-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: ~/.cargo/git key: '${{ runner.os }}-cargo-index-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: check test: runs-on: '${{ matrix.os }}' strategy: matrix: include: - os: macos-latest - os: ubuntu-latest - os: windows-latest steps: - uses: actions/checkout@v2 - uses: actions/cache@v1 with: path: ~/.cargo/registry key: '${{ runner.os }}-cargo-registry-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: ~/.cargo/git key: '${{ runner.os }}-cargo-index-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: test - uses: actions-rs/cargo@v1 with: command: run args: '-- -h' lints: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/cache@v1 with: path: ~/.cargo/registry key: '${{ runner.os }}-cargo-registry-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: ~/.cargo/git key: '${{ runner.os }}-cargo-index-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: 'rustfmt, clippy' - uses: actions-rs/cargo@v1 with: command: fmt args: '--all -- --check' - uses: actions-rs/cargo@v1 with: command: clippy args: '-- -D warnings' version: runs-on: ubuntu-latest steps: - uses: actions/checkout@master with: lfs: true - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* - id: get_previous_version run: echo ::set-output name=PREVIOUS_VERSION::$(git describe --tags "$(git rev-list --tags --max-count=1)") shell: bash - id: semvers uses: WyriHaximus/github-action-next-semvers@master with: version: '${{ steps.get_previous_version.outputs.PREVIOUS_VERSION }}' - run: mkdir -p ./version - if: "!contains(github.event.head_commit.message, 'BC BREAK') && !contains(github.event.head_commit.message, 'Signed-off-by: dependabot-preview[bot] ')" run: echo "$VERSION" >./version/version env: VERSION: ${{ steps.semvers.outputs.v_minor }} - if: "contains(github.event.head_commit.message, 'Signed-off-by: dependabot-preview[bot] ')" run: echo "$VERSION" >./version/version env: VERSION: ${{ steps.semvers.outputs.v_patch }} - run: echo "$VERSION" > ./version/version env: VERSION: ${{ steps.semvers.outputs.v_major }} if: "contains(github.event.head_commit.message, 'BC BREAK')" - uses: actions/upload-artifact@master with: name: version path: ./version/version build: needs: - version - lints - test - check runs-on: '${{ matrix.os }}' strategy: matrix: include: - os: macos-latest target: x86_64-apple-darwin suffix: '' - os: ubuntu-latest target: x86_64-unknown-linux-gnu suffix: '' - os: windows-latest target: x86_64-pc-windows-msvc suffix: .exe steps: - uses: actions/checkout@master with: lfs: true - id: get_repository_name run: echo ::set-output name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") shell: bash - uses: actions/download-artifact@master with: name: version - id: get_version run: 'echo ::set-output "name=VERSION::$(cat ./version/version)"' shell: bash - uses: actions/cache@v1 with: path: ~/.cargo/registry key: '${{ runner.os }}-cargo-registry-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: ~/.cargo/git key: '${{ runner.os }}-cargo-index-${{ hashFiles(''**/Cargo.lock'') }}' - uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: install args: 'toml-cli' - shell: bash env: VERSION: '${{ steps.get_version.outputs.VERSION }}' run: | TEMP_FILE="$(mktemp)" toml set Cargo.toml package.version "${VERSION:1}" > "$TEMP_FILE" mv "$TEMP_FILE" Cargo.toml - uses: actions-rs/cargo@v1 env: VERSION: '${{ steps.get_version.outputs.VERSION }}' REPOSITORY_NAME: '${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}' with: command: build args: '--release' - uses: actions/upload-artifact@master with: name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-${{ matrix.target }} path: ./target/release/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}${{ matrix.suffix }} release: if: github.ref == 'refs/heads/master' needs: - build runs-on: ubuntu-latest steps: - uses: actions/checkout@master with: lfs: true - id: get_repository_name run: echo ::set-output name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") shell: bash - uses: actions/download-artifact@master with: name: version - id: get_version run: 'echo ::set-output name=VERSION::$(cat ./version/version)' shell: bash - uses: actions/download-artifact@master with: name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-unknown-linux-gnu - uses: actions/download-artifact@master with: name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-apple-darwin - uses: actions/download-artifact@master with: name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-pc-windows-msvc - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions-rs/cargo@v1 with: command: install args: 'toml-cli' - run: | TEMP_FILE="$(mktemp)" toml set Cargo.toml package.version "${VERSION:1}" > "$TEMP_FILE" mv "$TEMP_FILE" Cargo.toml shell: bash env: VERSION: '${{ steps.get_version.outputs.VERSION }}' - uses: stefanzweifel/git-auto-commit-action@v4.1.3 with: commit_message: Bump cargo version branch: ${{ github.head_ref }} file_pattern: Cargo.toml - id: create_release uses: actions/create-release@v1.0.0 env: GITHUB_TOKEN: '${{ secrets.COMMITTER_TOKEN }}' with: tag_name: '${{ steps.get_version.outputs.VERSION }}' release_name: 'Release ${{ steps.get_version.outputs.VERSION }}' draft: false prerelease: false - uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' with: upload_url: '${{ steps.create_release.outputs.upload_url }}' asset_path: ./${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-unknown-linux-gnu/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }} asset_name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-unknown-linux-gnu asset_content_type: application/octet-stream - uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' with: upload_url: '${{ steps.create_release.outputs.upload_url }}' asset_path: ./${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-apple-darwin/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }} asset_name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-apple-darwin asset_content_type: application/octet-stream - uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' with: upload_url: '${{ steps.create_release.outputs.upload_url }}' asset_path: ./${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-pc-windows-msvc/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}.exe asset_name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-pc-windows-msvc.exe asset_content_type: application/octet-stream