name: Release
on:
release:
types: [created]
permissions:
contents: write
packages: write
env:
CARGO_TERM_COLOR: always
jobs:
create-release:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
outputs:
upload_url: ${{ github.event.release.upload_url }}
steps:
- uses: actions/checkout@v4
build-release:
needs: create-release
runs-on: ${{ matrix.os }}
permissions:
contents: write
packages: write
env:
VERSION: ${{ github.event.release.tag_name }}
strategy:
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
suffix: ""
install_dependencies: |
sudo apt-get update
sudo apt-get install -y pkg-config libssl-dev
- os: windows-latest
target: x86_64-pc-windows-msvc
suffix: ".exe"
install_dependencies: ""
- os: macos-latest
target: x86_64-apple-darwin
suffix: ""
install_dependencies: |
brew update
brew reinstall openssl@3
echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV
echo "OPENSSL_ROOT_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV
echo "OPENSSL_LIB_DIR=$(brew --prefix openssl@3)/lib" >> $GITHUB_ENV
echo "OPENSSL_INCLUDE_DIR=$(brew --prefix openssl@3)/include" >> $GITHUB_ENV
echo "LIBRARY_PATH=$(brew --prefix openssl@3)/lib" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=$(brew --prefix openssl@3)/lib/pkgconfig" >> $GITHUB_ENV
- os: macos-latest
target: aarch64-apple-darwin
suffix: ""
install_dependencies: |
brew reinstall openssl@3
echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: ${{ matrix.install_dependencies }}
shell: bash
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
override: true
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --target ${{ matrix.target }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ./target/${{ matrix.target }}/release/rustytag${{ matrix.suffix }}
asset_name: rustytag-${{ env.VERSION }}-${{ matrix.target }}${{ matrix.suffix }}
asset_content_type: application/octet-stream