wstunnel/.github/workflows/release.yaml
Σrebe - Romain GERARD 417baa8cf4 Add github action
Former-commit-id: 51253536ee07ce92a24e96c7010cbdcf6f09180a [formerly 3a1374914458d32fbb64a533a309a5d82941276f] [formerly 76655144c42dcd09495a77691371134afb39295a [formerly 0859851513f70d9219c71452b33dbeb2baef66e0]]
Former-commit-id: 911d9a41e690f0c2774c4493eafbd37b8dbcb394 [formerly 7e8e2b5f46186f43eef4a470f467c640ce897c28]
Former-commit-id: aa43fd3bf2a928b36e5725ae80ce79d893409e27
Former-commit-id: 1219a86948ec486442f775835b00979e0bd839d0
Former-commit-id: 538b4314060c45259a1dde016dd87b57421e1798
Former-commit-id: 548c2326eb8968801239dec564894f52e79476ba [formerly bee76ecdd773d19fa6bacbdb1dd07c2f00ea0756]
Former-commit-id: 1983ad1d350e99618f9dd3403fad3f4a50d75c28
2023-10-15 19:24:06 +02:00

116 lines
3.6 KiB
YAML

on:
# Indicates I want to run this workflow on all branches, PR, and tags
push:
branches: ["neo"]
tags: ["*"]
pull_request:
branches: [ "main" ]
env:
RUST_VERSION: 1.73.0
BUILD_ARGS: "--release"
BIN_NAME: "wstunnel"
jobs:
build:
name: Build - ${{ matrix.platform.name }}
# By default, runs on Ubuntu, otherwise, override with the desired os
runs-on: ${{ matrix.platform.os || 'ubuntu-22.04' }}
strategy:
matrix:
# Set platforms you want to build your binaries on
platform:
# Linux
- name: Linux x86_64
target: x86_64-unknown-linux-musl
- name: Linux aarch64
target: aarch64-unknown-linux-musl
- name: Linux armv7hf
target: armv7-unknown-linux-musleabihf
#- name: Linux mips
# target: mips-unknown-linux-musl
#- name: Linux mips64
# target: mips64-unknown-linux-muslabi64
# Mac OS
- name: MacOS x86_64
target: x86_64-apple-darwin
- name: iOS x86_64
target: x86_64-apple-ios
#- name: MacOS aarch64
# target: aarch64-apple-darwin
#- name: iOS aarch64
# target: aarch64-apple-ios
# Windows
# - name: Windows x86_64
# # Use another GitHub action OS
# os: windows-latest
# target: x86_64-pc-windows-msvc
steps:
- name: Create annotation for build error
if: contains(matrix.platform.target, 'linux')
run: sudo apt install musl-tools
- name: Checkout Git repo
uses: actions/checkout@v3
# Linux & Windows
- name: Install rust toolchain
if: ${{ !contains(matrix.platform.target, 'apple') }}
uses: actions-rs/toolchain@v1
with:
# We setup Rust toolchain and the desired target
profile: minimal
toolchain: "${{ env.RUST_VERSION }}"
override: true
target: ${{ matrix.platform.target }}
components: rustfmt, clippy
- name: Build ${{ matrix.platform.name }} binary
if: ${{ !contains(matrix.platform.target, 'apple') }}
uses: actions-rs/cargo@v1
# We use cross-rs if not running on x86_64 architecture on Linux
with:
command: build
use-cross: ${{ !contains(matrix.platform.target, 'x86_64') }}
args: ${{ env.BUILD_ARGS }} --target ${{ matrix.platform.target }}
# Mac OS
- name: Build ${{ matrix.platform.name }} binary
if: contains(matrix.platform.target, 'apple')
# We use a dedicated Rust image containing required Apple libraries to cross-compile on multiple archs
run: |
docker run --rm --volume "${PWD}":/root/src --workdir /root/src joseluisq/rust-linux-darwin-builder:$RUST_VERSION \
sh -c "CC=o64-clang CXX=o64-clang++ cargo build $BUILD_ARGS --target ${{ matrix.platform.target }}"
- name: Store artifact
uses: actions/upload-artifact@v3
with:
# Finally, we store the binary as GitHub artifact for later usage
name: ${{ matrix.platform.target }}-${{ env.BIN_NAME }}
path: target/${{ matrix.platform.target }}/release/${{ env.BIN_NAME }}${{ contains(matrix.platform.target, 'windows') && '.exe' || '' }}
retention-days: 1
release:
name: Release
needs: [build]
# We run the release job only if a tag starts with 'v' letter
if: startsWith( github.ref, 'refs/tags/v' )
runs-on: ubuntu-22.04
steps:
- name: Checkout Git repo
uses: actions/checkout@v3
# Download all artifacts
- uses: actions/download-artifact@v3
with:
path: artifacts