|
'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] <[email protected]>')" |
|
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] <[email protected]>')" |
|
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/[email protected] |
|
with: |
|
commit_message: Bump cargo version |
|
branch: ${{ github.head_ref }} |
|
file_pattern: Cargo.toml |
|
- id: create_release |
|
uses: actions/[email protected] |
|
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/[email protected] |
|
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/[email protected] |
|
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/[email protected] |
|
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 |
|
|