You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
git-view/.github/workflows/deploy.yml

170 lines
5.2 KiB
YAML

name: deploy
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
env:
bin: git-view
jobs:
windows:
runs-on: windows-latest
strategy:
matrix:
target:
- x86_64-pc-windows-gnu
- x86_64-pc-windows-msvc
steps:
- uses: actions/checkout@v3
- name: Cache Cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
./target
# Example key: windows-stable-x86_64-pc-windows-gnu-3k4j234lksjfd9
key: windows-stable-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
windows-stable-${{ matrix.target }}-
windows-stable-
windows-
- name: Set Rust Channel
run: rustup default stable
shell: bash
- name: Set Rust Target
run: rustup target add ${{ matrix.target }}
shell: bash
- name: Build Release Binary
run: cargo build --target ${{ matrix.target }} --release
shell: bash
- name: Compress Windows Binary
run: |
cd ./target/${{ matrix.target }}/release/
7z a "${{ env.bin }}-${{ matrix.target }}.zip" "${{ env.bin }}.exe"
mv "${{ env.bin }}-${{ matrix.target }}.zip" $GITHUB_WORKSPACE
shell: bash
- name: Archive Windows Artifact
uses: actions/upload-artifact@v3
with:
name: Windows
path: |
${{ github.workspace }}/${{ env.bin }}-${{ matrix.target }}.zip
macos:
runs-on: macos-latest
strategy:
matrix:
target:
- x86_64-apple-darwin
steps:
- uses: actions/checkout@v3
- name: Cache Cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
./target
# Example key: macos-stable-x86_64-apple-darwin-3k4j234lksjfd9
key: macos-stable-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
macos-stable-${{ matrix.target }}-
macos-stable-
macos-
- name: Set Rust Channel
run: rustup default stable
- name: Set Rust Target
run: rustup target add ${{ matrix.target }}
- name: Build Release Binary
run: cargo build --target ${{ matrix.target }} --release
- name: Compress macOS Binary
run: tar -czvf ${{ env.bin }}-${{ matrix.target }}.tar.gz --directory=target/${{ matrix.target }}/release ${{ env.bin }}
- name: Archive macOS Artifact
uses: actions/upload-artifact@v3
with:
name: macOS
path: |
./${{ env.bin }}-${{ matrix.target }}.tar.gz
linux:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
steps:
- uses: actions/checkout@v3
- name: Cache Cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
./target
# Example key: linux-stable-x86_64-unknown-linux-gnu-3k4j234lksjfd9
key: linux-stable-${{ matrix.target }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
linux-stable-${{ matrix.target }}-
linux-stable-
linux-
- name: Set Rust Channel
run: rustup default stable
- name: Set Rust Target
run: rustup target add ${{ matrix.target }}
- name: Build Release Binary
run: cargo build --target ${{ matrix.target }} --release
- name: Compress Linux Binary
run: tar -czvf ${{ env.bin }}-${{ matrix.target }}.tar.gz --directory=target/${{ matrix.target }}/release ${{ env.bin }}
- name: Archive Linux Artifact
uses: actions/upload-artifact@v3
with:
name: Linux
path: |
./${{ env.bin }}-${{ matrix.target }}.tar.gz
deploy-artifacts:
name: Deploy Artifacts
needs: [ windows, macos, linux ]
runs-on: ubuntu-latest
steps:
- name: Download Artifacts
uses: actions/download-artifact@v3
- name: Display Structure
run: ls -R
- name: Release
uses: softprops/action-gh-release@v1
with:
files: |
./Linux/*.tar.gz
./macOS/*.tar.gz
./Windows/*.zip
homebrew:
name: Bump Homebrew Formula
needs: deploy-artifacts
runs-on: ubuntu-latest
steps:
- name: Extract Version
run: printf "::set-output name=%s::%s\n" tag-name "${GITHUB_REF#refs/tags/}"
- uses: mislav/bump-homebrew-formula-action@v2
if: "!contains(github.ref, '-')" # Skip Pre-Releases
with:
create-pullrequest: true
formula-name: ${{ env.bin }}
formula-path: Formula/${{ env.bin }}.rb
homebrew-tap: sgoudham/homebrew-tap
download-url: https://github.com/sgoudham/${{ env.bin }}/releases/download/${{ steps.extract-version.outputs.tag-name }}/${{ env.bin }}-x86_64-apple-darwin.tar.gz
commit-message: |
{{formulaName}} -> {{version}}
Created by https://github.com/mislav/bump-homebrew-formula-action
env:
COMMITTER_TOKEN: ${{ secrets.HOMEBREW }}