Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(workflow): Added release,yml #3

Merged
merged 1 commit into from
Dec 30, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: release

on:
push:
tags:
- v1.*

jobs:
create-release:
name: ${{ matrix.name }}

runs-on: ${{ matrix.os }}

strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
name: Linux Binary 64-Bit
target: x86_64-unknown-linux-musl

- os: macos-latest
name: MacOS Binary 64-Bit
target: x86_64-apple-darwin
target2: aarch64-apple-darwin
env:
MACOSX_DEPLOYMENT_TARGET: 10.7

- os: windows-latest
name: Windows Binary 64-Bit
target: x86_64-pc-windows-msvc

steps:
- name: Check out repository
uses: actions/checkout@v3

- name: Add rustup default target
run: rustup target add ${{ matrix.target }}

- name: Add rustup Apple ARM64 target
if: ${{ matrix.os == 'macos-latest' }}
run: rustup target add ${{ matrix.target2 }}

- name: Build default target in release mode
run: cargo build --release --target ${{ matrix.target }} --locked

- name: Build Apple ARM64 target in release mode
if: ${{ matrix.os == 'macos-latest' }}
run: cargo build --release --target ${{ matrix.target2 }} --locked

- name: Get latest release version number
id: get_version
uses: battila7/get-version-action@v2

- name: Create zip file on Windows
if: ${{ matrix.os == 'windows-latest' }}
run: |
choco install zip
cd target/${{ matrix.target }}/release
zip grex-${{ steps.get_version.outputs.version }}-${{ matrix.target }}.zip grex.exe
cd ../../..

- name: Create tar.gz file on macOS
if: ${{ matrix.os == 'macos-latest' }}
run: |
chmod +x target/${{ matrix.target }}/release/grex
tar -zcf target/${{ matrix.target }}/release/grex-${{ steps.get_version.outputs.version }}-${{ matrix.target }}.tar.gz -C target/${{ matrix.target }}/release grex
chmod +x target/${{ matrix.target2 }}/release/grex
tar -zcf target/${{ matrix.target2 }}/release/grex-${{ steps.get_version.outputs.version }}-${{ matrix.target2 }}.tar.gz -C target/${{ matrix.target2 }}/release grex

- name: Create tar.gz file on Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
run: |
chmod +x target/${{ matrix.target }}/release/grex
tar -zcf target/${{ matrix.target }}/release/grex-${{ steps.get_version.outputs.version }}-${{ matrix.target }}.tar.gz -C target/${{ matrix.target }}/release grex

- name: Upload release and assets to GitHub
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
release_name: grex ${{ steps.get_version.outputs.version }}
file_glob: true
file: target/*/release/grex-${{ steps.get_version.outputs.version }}-*.{zip,tar.gz}

- name: Upload release to crates.io
uses: katyo/publish-crates@v1
if: ${{ matrix.os == 'ubuntu-latest' }}
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}