name: Continuous Deployment
on:
push:
tags:
- "*"
jobs:
release:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Get version
id: get_version
run: echo ::set-output name=version::${GITHUB_REF/refs\/tags\//}
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
components: clippy
- name: Build Release Mac
if: matrix.os == 'macos-latest'
run: |
cargo build --release
strip target/release/git-cm
mkdir -p release
tar -C ./target/release/ -czvf ./release/git-cm-mac.tar.gz ./git-cm
ls -lisah ./release/git-cm-mac.tar.gz
- name: Build Release Linux
if: matrix.os == 'ubuntu-latest'
run: |
cargo build --release
strip target/release/git-cm
mkdir -p release
tar -C ./target/release/ -czvf ./release/git-cm-linux.tar.gz ./git-cm
- name: Build Release Win
if: matrix.os == 'windows-latest'
run: |
cargo build --release
mkdir -p release
tar -C ./target/release/ -czvf ./release/git-cm-win.tar.gz ./git-cm.exe
- name: Set SHA
if: matrix.os == 'macos-latest'
id: shasum
run: |
echo ::set-output name=sha::"$(shasum -a 256 ./release/git-cm-mac.tar.gz | awk '{printf $1}')"
- name: Release
uses: softprops/action-gh-release@v1
with:
prerelease: ${{ contains(github.ref, '-') }}
files: |
./release/*.tar.gz
./release/*.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create new branch to update brew formula
if: "matrix.os == 'macos-latest' && !contains(github.ref, '-')" run: git checkout -b chore/${{ github.event.repository.name }}
- name: Bump sirwindfield/homebrew-tap formula
uses: mislav/bump-homebrew-formula-action@v1
if: "matrix.os == 'macos-latest' && !contains(github.ref, '-')" env:
COMMITTER_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
with:
homebrew-tap: sirwindfield/homebrew-tap
formula-name: git-cm
base-branch: chore/${{ github.event.repository.name }}
commit-message: |
{{formulaName}} {{version}}
- name: Create Pull Request
if: "matrix.os == 'macos-latest' && !contains(github.ref, '-')" uses: peter-evans/create-pull-request@v3.9.2
with:
delete-branch: true
- name: Publish to crates.io
if: matrix.os == 'ubuntu-latest'
uses: actions-rs/cargo@v1
with:
command: publish
args: --allow-dirty --token ${{ secrets.CRATES_IO_TOKEN }}