-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
278 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,278 @@ | ||
name: Test, build and release binary | ||
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 |