Skip to content

pre release

pre release #8

Workflow file for this run

name: pre release
on:
push:
branches:
- ignore
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: Build ${{ matrix.target }}
strategy:
fail-fast: false
matrix:
target:
- x86_64-unknown-linux-musl
- x86_64-unknown-linux-gnu
- x86_64-apple-darwin
- x86_64-pc-windows-msvc
- i686-pc-windows-msvc
- aarch64-pc-windows-msvc
- aarch64-apple-darwin
include:
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
name: rnacos-x86_64-unknown-linux-musl-${GITHUB_REF#refs/*/}.tar.gz
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
name: rnacos-x86_64-unknown-linux-gnu-${GITHUB_REF#refs/*/}.tar.gz
- target: x86_64-apple-darwin
os: macos-13
name: rnacos-x86_64-apple-darwin-${GITHUB_REF#refs/*/}.tar.gz
- target: x86_64-pc-windows-msvc
os: windows-latest
name: rnacos-x86_64-pc-windows-msvc-${GITHUB_REF#refs/*/}.zip
- target: i686-pc-windows-msvc
os: windows-latest
name: rnacos-i686-pc-windows-msvc-${GITHUB_REF#refs/*/}.zip
- target: aarch64-pc-windows-msvc
os: windows-latest
name: rnacos-aarch64-pc-windows-msvc-${GITHUB_REF#refs/*/}.zip
- target: aarch64-apple-darwin
os: macos-latest
name: rnacos-aarch64-apple-darwin-${GITHUB_REF#refs/*/}.tar.gz
runs-on: ${{ matrix.os }}
steps:
# Largely inspired by https://github.com/starship/starship/blob/35a0a20f5c4fea6a08e1b91ff631b089eef8fc50/.github/workflows/deploy.yml
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install musl tools
if: matrix.target == 'x86_64-unknown-linux-musl'
run: sudo apt-get install -y musl-tools
# Install gnu-tar because BSD tar is buggy
# https://github.com/actions/cache/issues/403
- name: Install GNU tar (macOS)
if: matrix.os == 'macos-latest'
run: |
brew install gnu-tar
echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH
- name: Build
if: matrix.target != 'x86_64-unknown-linux-musl'
run: cargo build --release
- name: Build linux-musl
if: matrix.target == 'x86_64-unknown-linux-musl'
run: |
cargo build --release --target ${{ matrix.target }}
- name: Archive binary (windows)
if: matrix.os == 'windows-latest'
run: |
cd target/release
cp ../../doc/conf/.env.example .env
7z a ../../${{ matrix.name }} rnacos.exe .env
cd -
- name: Archive binary (linux and macOS)
if: ${{ matrix.os != 'windows-latest' && matrix.target !='x86_64-unknown-linux-musl' }}
run: |
cd target/release
cp ../../doc/conf/.env.example .env
tar czvf ../../${{ matrix.name }} rnacos .env
cd -
echo ${{ matrix.name }}
echo ${GITHUB_REF#refs/*/}
- name: Archive binary (linux-musl)
if: matrix.target =='x86_64-unknown-linux-musl'
run: |
# 注意,下面进入了三级目录,与上面两个打包操作路径不同
cd target/x86_64-unknown-linux-musl/release
cp ../../../doc/conf/.env.example .env
tar czvf ../../../${{ matrix.name }} rnacos .env
cd -
echo ${{ matrix.name }}
echo ${GITHUB_REF#refs/*/}
- name: Upload binary artifacts
uses: actions/upload-artifact@v3
with:
name: binaries
path: |
*.tar.gz
*.zip
build-musl:
name: Build ${{ matrix.platform.target }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
platform:
- target: "aarch64-unknown-linux-musl"
image: "rust-musl-cross:aarch64-musl"
compatibility: "manylinux2014 musllinux_1_1"
name: rnacos-aarch64-unknown-linux-musl-${GITHUB_REF#refs/*/}.tar.gz
container:
image: docker://ghcr.io/rust-cross/${{ matrix.platform.image }}
env:
RUSTUP_HOME: /root/.rustup
CARGO_HOME: /root/.cargo
steps:
- uses: actions/checkout@v3
- run: rustup target add --toolchain stable ${{ matrix.platform.target }}
if: matrix.platform.target != 'powerpc64le-unknown-linux-musl' && matrix.platform.target != 's390x-unknown-linux-gnu'
- name: Build
run: |
cargo build --release --target ${{ matrix.platform.target }}
- name: Archive binary
run: |
cp doc/conf/.env.example target/${{ matrix.platform.target }}/release/.env
tar czvf ${{ matrix.platform.name }}.tar.gz -C target/${{ matrix.platform.target }}/release rnacos .env
echo ${{ matrix.platform.name }}
echo ${GITHUB_REF#refs/*/}
- name: Upload binary artifacts
uses: actions/upload-artifact@v3
with:
name: binaries
path: |
*.tar.gz