Merge pull request #481 from tktcorporation/feature/479/upgrade-songb… #54
Workflow file for this run
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
name: Release | |
on: | |
push: | |
tags: | |
- "v*" | |
jobs: | |
# Publish discord-tts-bot to Crates.io | |
# cargo_publish: | |
# name: Publish Cargo Package | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Setup | Checkout | |
# uses: actions/checkout@v2 | |
# - name: Setup | Rust | |
# uses: actions-rs/toolchain@v1 | |
# with: | |
# toolchain: stable | |
# profile: minimal | |
# override: true | |
# - name: Build | Publish | |
# run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }} | |
github_build: | |
name: Build release binaries | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- target: x86_64-unknown-linux-gnu | |
os: ubuntu-latest | |
name: discord-tts-bot-x86_64-unknown-linux-gnu.tar.gz | |
# - target: x86_64-unknown-linux-musl | |
# os: ubuntu-latest | |
# name: discord-tts-bot-x86_64-unknown-linux-musl.tar.gz | |
# | |
# - target: i686-unknown-linux-musl | |
# os: ubuntu-latest | |
# name: discord-tts-bot-i686-unknown-linux-musl.tar.gz | |
# | |
# - target: aarch64-unknown-linux-musl | |
# os: ubuntu-latest | |
# name: discord-tts-bot-aarch64-unknown-linux-musl.tar.gz | |
# | |
# - target: arm-unknown-linux-musleabihf | |
# os: ubuntu-latest | |
# name: discord-tts-bot-arm-unknown-linux-musleabihf.tar.gz | |
# | |
# - target: x86_64-apple-darwin | |
# os: macOS-latest | |
# name: discord-tts-bot-x86_64-apple-darwin.tar.gz | |
# | |
# - target: aarch64-apple-darwin | |
# os: macOS-latest | |
# name: discord-tts-bot-aarch64-apple-darwin.tar.gz | |
# | |
# - target: x86_64-pc-windows-msvc | |
# os: windows-latest | |
# name: discord-tts-bot-x86_64-pc-windows-msvc.zip | |
# | |
# - target: i686-pc-windows-msvc | |
# os: windows-latest | |
# name: discord-tts-bot-i686-pc-windows-msvc.zip | |
# | |
# - target: aarch64-pc-windows-msvc | |
# os: windows-latest | |
# name: discord-tts-bot-aarch64-pc-windows-msvc.zip | |
# | |
# - target: x86_64-unknown-freebsd | |
# os: ubuntu-latest | |
# name: discord-tts-bot-x86_64-unknown-freebsd.tar.gz | |
runs-on: ${{ matrix.os }} | |
continue-on-error: true | |
steps: | |
- name: Setup | Checkout | |
uses: actions/checkout@v4 | |
# Cache files between builds | |
- name: Setup | Cache Cargo | |
uses: actions/cache@v4.0.2 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Setup | Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
profile: minimal | |
target: ${{ matrix.target }} | |
- name: Install musl tools | |
if: matrix.target == 'x86_64-unknown-linux-musl' | |
# Install libssl-dev for openssl-sys | |
run: sudo apt-get install -y musl-tools libssl-dev libopus-dev build-essential libssl-dev pkg-config autoconf automake libtool m4 ffmpeg curl python3 | |
- name: Build | Build | |
uses: actions-rs/cargo@v1 | |
# TODO: Remove this once it's the default | |
# env: | |
# SDKROOT: /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk | |
with: | |
command: build | |
args: --release --target ${{ matrix.target }} | |
# use-cross: ${{ matrix.os == 'ubuntu-latest' }} | |
# - name: Post Build | Prepare artifacts [Windows] | |
# if: matrix.os == 'windows-latest' | |
# run: | | |
# cd target/${{ matrix.target }}/release | |
# strip discord-tts-bot.exe | |
# 7z a ../../../${{ matrix.name }} discord-tts-bot.exe | |
# cd - | |
- name: Post Build | Prepare artifacts [-nix] | |
if: matrix.os != 'windows-latest' | |
run: | | |
cd target/${{ matrix.target }}/release | |
# TODO: investigate better cross platform stripping | |
strip discord-tts-bot || true | |
tar czvf ../../../${{ matrix.name }} discord-tts-bot | |
cd - | |
- name: Deploy | Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.name }} | |
path: ${{ matrix.name }} | |
# Create GitHub release with Rust build targets and release notes | |
github_release: | |
name: Create GitHub Release | |
needs: github_build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup | Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup | Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: "^1.15.7" | |
- name: Setup | Artifacts | |
uses: actions/download-artifact@v4 | |
- name: Setup | Checksums | |
run: for file in discord-tts-bot-*/discord-tts-bot-*; do openssl dgst -sha256 -r "$file" | awk '{print $1}' > "${file}.sha256"; done | |
- name: Setup | Release notes | |
run: | | |
go install github.com/git-chglog/git-chglog/cmd/git-chglog@latest | |
git-chglog -c .github/chglog/release.yml $(git describe --tags) > RELEASE.md | |
- name: Build | Publish | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: discord-tts-bot-*/discord-tts-bot-* | |
body_path: RELEASE.md | |
env: | |
# Use personal token for hook other workflows | |
# ref: https://docs.github.com/ja/actions/reference/events-that-trigger-workflows#status | |
GITHUB_TOKEN: ${{ secrets.MY_PERSONAL_ACCESS_TOKEN }} |