Skip to content

action

action #12

Workflow file for this run

name: Release
on:
# schedule:
# - cron: '0 0 * * *' # midnight UTC
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
## - release
env:
BIN_NAME: clade
PROJECT_NAME: clade
REPO_NAME: eric9n/clade
# BREW_TAP: eric9n/homebrew-tap
jobs:
dist:
permissions:
contents: write
name: Dist
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false # don't fail other jobs if one fails
matrix:
build: [x86_64-linux, x86_64-macos, x86_64-windows, aarch64-macos] # Added platforms
include:
- build: x86_64-linux
os: ubuntu-latest
rust: stable
target: x86_64-unknown-linux-gnu
cross: false
# - build: aarch64-linux
# os: ubuntu-latest
# rust: stable
# target: aarch64-unknown-linux-gnu
# cross: false
- build: x86_64-macos
os: macos-latest
rust: stable
target: x86_64-apple-darwin
cross: false
- build: x86_64-windows
os: windows-latest
rust: stable
target: x86_64-pc-windows-msvc
cross: false
- build: aarch64-macos
os: macos-latest
rust: stable
target: aarch64-apple-darwin
cross: false
# - build: x86_64-win-gnu
# os: windows-2019
# rust: stable-x86_64-gnu
# target: x86_64-pc-windows-gnu
# - build: win32-msvc
# os: windows-2019
# rust: stable
# target: i686-pc-windows-msvc
steps:
- name: Checkout sources
uses: actions/checkout@v2
with:
submodules: true
- name: Install ${{ matrix.rust }} toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.cross }}
command: test
args: --release --locked --target ${{ matrix.target }}
- name: Build release binary
uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.cross }}
command: build
args: --release --locked --target ${{ matrix.target }}
- name: Build archive
shell: bash
run: |
mkdir dist
if [ "${{ matrix.os }}" = "windows-latest" ]; then
cp "target/${{ matrix.target }}/release/$BIN_NAME.exe" "dist/"
else
cp "target/${{ matrix.target }}/release/$BIN_NAME" "dist/"
fi
# Set up the GitHub CLI
- name: Install GitHub CLI (macOS)
run: |
brew install gh
if: matrix.os == 'macos-latest'
- name: Install GitHub CLI (Ubuntu)
run: |
sudo apt install -y gh
if: matrix.os == 'ubuntu-latest'
- name: Install GitHub CLI (Windows)
run: |
choco install gh
if: matrix.os == 'windows-latest'
# Log in to the GitHub CLI
- name: Login to GitHub CLI
run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
- name: Upload Release Asset
run: |
if [ "${{ matrix.os }}" = "windows-latest" ]; then
ASSET_NAME="${{ env.BIN_NAME }}.exe"
else
ASSET_NAME="${{ env.BIN_NAME }}"
fi
gh release upload ${{ github.ref_name }} \
"./dist/$ASSET_NAME" \
--clobber
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
# - uses: actions/upload-artifact@v2.2.4
# with:
# # name: bins-${{ matrix.build }}
# path: dist
# publish:
# name: Publish
# needs: [dist]
# runs-on: ubuntu-latest
# steps:
# - name: Checkout sources
# uses: actions/checkout@v2
# with:
# submodules: false
# - uses: actions/download-artifact@v4
# - name: Calculate tag name
# run: |
# name=dev
# if [[ $GITHUB_REF == refs/tags/v* ]]; then
# name=${GITHUB_REF:10}
# fi
# echo "val=$name" >> $GITHUB_OUTPUT
# echo "TAG=$name" >> $GITHUB_ENV
# id: tagname
# - name: Build archive
# shell: bash
# run: |
# set -ex
# rm -rf tmp
# mkdir tmp
# mkdir dist
# for dir in bins-* ; do
# platform=${dir#"bins-"}
# unset exe
# if [[ $platform =~ "windows" ]]; then
# exe=".exe"
# fi
# pkgname=$PROJECT_NAME-$TAG-$platform
# mkdir tmp/$pkgname
# # cp LICENSE README.md tmp/$pkgname
# mv bins-$platform/$BIN_NAME$exe tmp/$pkgname
# chmod +x tmp/$pkgname/$BIN_NAME$exe
# if [ "$exe" = "" ]; then
# tar cJf dist/$pkgname.tar.xz -C tmp $pkgname
# else
# (cd tmp && 7z a -r ../dist/$pkgname.zip $pkgname)
# fi
# done
# - name: Upload binaries to release
# uses: svenstaro/upload-release-action@v2
# with:
# repo_token: ${{ secrets.GITHUB_TOKEN }}
# file: dist/*
# file_glob: true
# tag: ${{ steps.tagname.outputs.val }}
# overwrite: true
# - name: Extract version
# id: extract-version
# run: |
# echo "tag-name=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
# # - uses: mislav/bump-homebrew-formula-action@v1
# # with:
# # formula-path: ${{env.PROJECT_NAME}}.rb
# # homebrew-tap: ${{ env.BREW_TAP }}
# # download-url: "https://github.com/${{ env.REPO_NAME }}/releases/download/${{ steps.extract-version.outputs.tag-name }}/${{env.PROJECT_NAME}}-${{ steps.extract-version.outputs.tag-name }}-x86_64-macos.tar.xz"
# # commit-message: updating formula for ${{ env.PROJECT_NAME }}
# # env:
# # COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}
# #
# # you can use this initial file in your homebrew-tap if you don't have an initial formula:
# # <projectname>.rb
# #
# # class <Projectname capitalized> < Formula
# # desc "A test formula"
# # homepage "http://www.example.com"
# # url "-----"
# # version "-----"
# # sha256 "-----"
# # def install
# # bin.install "<bin-name>"
# # end
# # end
# # Uncomment this section if you want to release your package to crates.io
# # Before publishing, make sure you have filled out the following fields:
# # license or license-file, description, homepage, documentation, repository, readme.
# # Read more: https://doc.rust-lang.org/cargo/reference/publishing.html
# # - name: Install ${{ matrix.rust }} toolchain
# # uses: actions-rs/toolchain@v1
# # with:
# # profile: minimal
# # toolchain: ${{ matrix.rust }}
# # target: ${{ matrix.target }}
# # - run: cargo publish --token ${CRATES_TOKEN}
# # env:
# # CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }}