Skip to content

feat: version 命令 #193

feat: version 命令

feat: version 命令 #193

Workflow file for this run

name: build cli
permissions:
contents: write
on:
push:
tags:
- 'v*'
branches:
- '**'
paths:
- '.github/workflows/ci.yml'
- 'source/cli/**'
- 'assets/**'
- 'cmake/**'
- 'CMakelists.txt'
- 'CMakePresets.json'
pull_request:
branches:
- '**'
paths:
- '.github/workflows/ci.yml'
- 'source/cli/**'
- 'assets/**'
- 'cmake/**'
- 'CMakelists.txt'
- 'CMakePresets.json'
workflow_dispatch:
jobs:
meta:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- id: set_tag
run: |
is_release=${{ startsWith(github.ref, 'refs/tags/v') }}
tag=$(git describe --tags --match "v*" ${{ github.ref }} || true)
if [[ $tag != v* ]]; then
tag=$(curl -sX GET "https://api.github.com/repos/MaaAssistantArknights/MaaFramework/releases/latest" --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' | awk '/tag_name/{print $4}' FS='["]')
if [[ $tag != v* ]]; then
tag="v0.0.0"
fi
tag=$(date "+$tag-%y%m%d-$(git rev-parse --short HEAD)")
fi
if ! $($is_release) ; then
prefix=${tag%-*-*}
suffix=${tag#$prefix-}
tag="$prefix-ci.$suffix"
fi
echo tag=$tag | tee -a $GITHUB_OUTPUT
echo is_release=$is_release | tee -a $GITHUB_OUTPUT
- if: ${{ startsWith(github.ref, 'refs/tags/v') }}
run: |
this_tag=${{ steps.set_tag.outputs.tag }}
last_tag=$(git describe --tags --match "v*" --abbrev=0 --exclude='${{ steps.set_tag.outputs.tag }}')
echo >> CHANGELOG.md
echo "**Full Changelog**: [$last_tag -> $this_tag](https://github.com/MaaAssistantArknights/MAABH3/compare/${last_tag}...${this_tag})" >> CHANGELOG.md
- uses: actions/upload-artifact@v3
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
with:
name: changelog
path: CHANGELOG.md
outputs:
tag: ${{ steps.set_tag.outputs.tag }}
is_release: ${{ steps.set_tag.outputs.is_release }}
windows:
needs: meta
runs-on: windows-latest
strategy:
matrix:
arch: [aarch64, x86_64]
fail-fast: false
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Update resource version
run: |
python3 .github/update_resource_version.py assets/resource/properties.json ${{ needs.meta.outputs.tag }}
- name: Download MaaFramework
uses: robinraju/[email protected]
with:
repository: MaaAssistantArknights/MaaFramework
latest: true
fileName: "MAA-win-${{ matrix.arch }}*"
out-file-path: "deps"
extract: true
- name: Build MAABH3
run: |
cmake --preset "${{ matrix.arch == 'x86_64' && 'MSVC 2022' || 'MSVC 2022 ARM' }}" -DMAABH3_HASH_VERSION='${{ needs.meta.outputs.tag }}'
cmake --build build --config Release -j 16
- name: Install
shell: bash
run: |
cmake --install build --prefix install
- uses: actions/upload-artifact@v3
with:
name: MAABH3-win-${{ matrix.arch }}
path: "install"
ubuntu:
needs: meta
runs-on: ubuntu-latest
container: archlinux:base-devel
strategy:
matrix:
arch: [aarch64, x86_64]
fail-fast: false
steps:
# maybe should explicitly update some pkg instead of all?
- name: Update system
run: |
pacman -Syu --noconfirm
- name: Install dep
run: |
pacman -Sy
pacman -S --noconfirm cmake python ccache ninja git
# https://github.com/MaaAssistantArknights/MaaFramework/actions/runs/5643408179/job/15285186255
- uses: actions/checkout@v3
with:
submodules: true
- name: Install cross compile toolchains
if: ${{ matrix.arch != 'x86_64' }}
run: |
pacman -Sy
pacman -S --noconfirm aarch64-linux-gnu-gcc
- name: Setup ccache
uses: Chocobo1/setup-ccache-action@v1
with:
remove_stale_cache: false
- name: Update resource version
run: |
python3 .github/update_resource_version.py assets/resource/properties.json ${{ needs.meta.outputs.tag }}
- name: Download MaaFramework
uses: robinraju/[email protected]
with:
repository: MaaAssistantArknights/MaaFramework
latest: true
fileName: "MAA-linux-${{ matrix.arch }}*"
out-file-path: "deps"
extract: true
- name: Build MAABH3
env:
CC: ${{ matrix.arch == 'x86_64' && 'ccache gcc' || 'ccache aarch64-linux-gnu-gcc' }}
CXX: ${{ matrix.arch == 'x86_64' && 'ccache g++' || 'ccache aarch64-linux-gnu-g++' }}
run: |
cmake --preset 'NinjaMulti' \
-DMAABH3_HASH_VERSION='${{ needs.meta.outputs.tag }}'
cmake --build build --config Release -j 16
- name: Install
shell: bash
run: |
cmake --install build --prefix install
- uses: actions/upload-artifact@v3
with:
name: MAABH3-linux-${{ matrix.arch }}
path: "install"
macos:
needs: meta
runs-on: macos-latest
strategy:
matrix:
arch: [aarch64, x86_64]
fail-fast: false
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Install dep
run: |
brew install cmake python ninja
# ccache?
- name: Install compiler
run: |
brew install llvm
# 16
- name: Update resource version
run: |
python3 .github/update_resource_version.py assets/resource/properties.json ${{ needs.meta.outputs.tag }}
- name: Download MaaFramework
uses: robinraju/[email protected]
with:
repository: MaaAssistantArknights/MaaFramework
latest: true
fileName: "MAA-macos-${{ matrix.arch }}*"
out-file-path: "deps"
extract: true
- name: Build MAABH3
env:
CC: "/usr/local/opt/llvm/bin/clang"
CXX: "/usr/local/opt/llvm/bin/clang++"
run: |
cmake --preset 'NinjaMulti' \
-DARCH='${{ matrix.arch == 'x86_64' && 'x64' || 'arm64' }}' \
-DMAABH3_HASH_VERSION='${{ needs.meta.outputs.tag }}'
cmake --build build --config Release -j 16
- name: Install
shell: bash
run: |
cmake --install build --prefix install
- uses: actions/upload-artifact@v3
with:
name: MAABH3-macos-${{ matrix.arch }}
path: "install"
release:
if: ${{ needs.meta.outputs.is_release == 'true' }}
needs: [meta, windows, ubuntu, macos]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
path: assets
- run: |
mv -vf assets/changelog/* .
rm -rf assets/changelog
cd assets
for f in *; do
(cd $f && zip -r ../$f-${{ needs.meta.outputs.tag }}.zip .)
done
- uses: softprops/action-gh-release@v1
with:
body_path: CHANGELOG.md
files: assets/*
tag_name: ${{ needs.meta.outputs.tag }}