From 6dd19180d5e738e1d173c7d8456c091be77bfedc Mon Sep 17 00:00:00 2001 From: Tohkahb <95140985+Tohkahb@users.noreply.github.com> Date: Thu, 19 Sep 2024 16:04:29 +0800 Subject: [PATCH] Create main.yml --- .github/workflows/main.yml | 201 +++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..8b4cb259 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,201 @@ +name: install + +on: + push: + tags: + - "v*" + branches: + - "**" + paths: + - ".github/workflows/install.yml" + - "assets/**" + - "**.py" + pull_request: + branches: + - "**" + paths: + - ".github/workflows/install.yml" + - "assets/**" + - "**.py" + 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/${{ github.repository }}/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 + 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: Download MaaFramework + uses: robinraju/release-downloader@v1.8 + with: + repository: MaaXYZ/MaaFramework + fileName: "MAA-win-${{ matrix.arch }}*" + latest: true + preRelease: true + out-file-path: "deps" + extract: true + + - name: Install + shell: bash + run: | + python ./install.py ${{ needs.meta.outputs.tag }} + + - uses: actions/upload-artifact@v3 + with: + name: M9A-win-${{ matrix.arch }} + path: "install" + + ubuntu: + needs: meta + runs-on: ubuntu-latest + strategy: + matrix: + arch: [aarch64, x86_64] + fail-fast: false + + steps: + - uses: actions/checkout@v3 + with: + submodules: true + + - name: Download MaaFramework + uses: robinraju/release-downloader@v1.8 + with: + repository: MaaXYZ/MaaFramework + fileName: "MAA-linux-${{ matrix.arch }}*" + latest: true + preRelease: true + out-file-path: "deps" + extract: true + + - name: Install + shell: bash + run: | + python ./install.py ${{ needs.meta.outputs.tag }} + + - uses: actions/upload-artifact@v3 + with: + name: M9A-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: Download MaaFramework + uses: robinraju/release-downloader@v1.8 + with: + repository: MaaXYZ/MaaFramework + fileName: "MAA-macos-${{ matrix.arch }}*" + latest: true + preRelease: true + out-file-path: "deps" + extract: true + + - name: Install + shell: bash + run: | + python ./install.py ${{ needs.meta.outputs.tag }} + + - uses: actions/upload-artifact@v3 + with: + name: M9A-macos-${{ matrix.arch }} + path: "install" + + android: + needs: meta + runs-on: macos-latest + strategy: + matrix: + arch: [aarch64, x86_64] + fail-fast: false + + steps: + - uses: actions/checkout@v3 + with: + submodules: true + + - name: Download MaaFramework + uses: robinraju/release-downloader@v1.8 + with: + repository: MaaXYZ/MaaFramework + fileName: "MAA-android-${{ matrix.arch }}*" + latest: true + preRelease: true + out-file-path: "deps" + extract: true + + - name: Install + shell: bash + run: | + python ./install.py ${{ needs.meta.outputs.tag }} + + - uses: actions/upload-artifact@v3 + with: + name: M9A-android-${{ 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: | + cd assets + for f in *; do + (cd $f && zip -r ../$f-${{ needs.meta.outputs.tag }}.zip .) + done + - uses: softprops/action-gh-release@v1 + with: + files: assets/* + tag_name: ${{ needs.meta.outputs.tag }}