name: build

on:
  push:
    branches: [ 'main' ]
  pull_request:
    branches: [ 'main' ]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  build:
    strategy:
      matrix:
        platform: [ubuntu-latest]
        target: 
          - darwin-amd64
          - darwin-arm64
          - windows-amd64
          - linux-arm64-musl
          - linux-amd64-musl
          - windows-arm64
          - android-arm64
    name: Build
    runs-on: ${{ matrix.platform }}
    env:
      GOPROXY: https://proxy.golang.org,direct
    steps:

      - name: Checkout
        uses: actions/checkout@v4

      - uses: benjlevesque/short-sha@v3.0
        id: short-sha

      - name: Setup Go
        uses: actions/setup-go@v5
        with:
          go-version: '1.22'

      - name: Setup web
        run: bash build.sh dev web

      - name: Build
        uses: go-cross/cgo-actions@v1
        with:
          targets: ${{ matrix.target }}
          musl-target-format: $os-$musl-$arch
          out-dir: build
          x-flags: |
            github.com/alist-org/alist/v3/internal/conf.BuiltAt=$built_at
            github.com/alist-org/alist/v3/internal/conf.GitAuthor=Xhofe
            github.com/alist-org/alist/v3/internal/conf.GitCommit=$git_commit
            github.com/alist-org/alist/v3/internal/conf.Version=$tag
            github.com/alist-org/alist/v3/internal/conf.WebVersion=dev

      - name: Upload artifact
        uses: actions/upload-artifact@v4
        with:
          name: alist_${{ env.SHA }}_${{ matrix.target }}
          path: build/*