name: Release X-ui
on:
  push:
    tags:
      - "*"
  workflow_dispatch:

jobs:
  release:
    runs-on: ubuntu-18.04
    outputs:
      upload_url: ${{ steps.create_release.outputs.upload_url }}
    steps:
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}
          draft: true
          prerelease: true
  linuxamd64build:
    name: build x-ui amd64 version
    needs: release
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v3
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.20'
      - name: build linux amd64 version
        run: |
          CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -o xui-release -v main.go
          mkdir x-ui
          cp xui-release x-ui/xui-release
          cp x-ui.service x-ui/x-ui.service
          cp x-ui.sh x-ui/x-ui.sh
          cd x-ui
          mv xui-release x-ui
          mkdir bin
          cd bin
          wget https://github.com/xtls/xray-core/releases/latest/download/Xray-linux-64.zip
          unzip Xray-linux-64.zip
          rm -f Xray-linux-64.zip geoip.dat geosite.dat
          wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
          wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
          mv xray xray-linux-amd64
          cd ..
          cd ..
      - name: package
        run: tar -zcvf x-ui-linux-amd64.tar.gz x-ui
      - name: upload
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release.outputs.upload_url }}
          asset_path: x-ui-linux-amd64.tar.gz
          asset_name: x-ui-linux-amd64.tar.gz
          asset_content_type: application/gzip
  linuxarm64build:
    name: build x-ui arm64 version
    needs: release
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v3
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.20'
      - name: build linux arm64 version
        run: |
          sudo apt-get update
          sudo apt install gcc-aarch64-linux-gnu
          CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=aarch64-linux-gnu-gcc go build -o xui-release -v main.go
          mkdir x-ui
          cp xui-release x-ui/xui-release
          cp x-ui.service x-ui/x-ui.service
          cp x-ui.sh x-ui/x-ui.sh
          cd x-ui
          mv xui-release x-ui
          mkdir bin
          cd bin
          wget https://github.com/xtls/xray-core/releases/latest/download/Xray-linux-arm64-v8a.zip
          unzip Xray-linux-arm64-v8a.zip
          rm -f Xray-linux-arm64-v8a.zip geoip.dat geosite.dat
          wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
          wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
          mv xray xray-linux-arm64
          cd ..
          cd ..
      - name: package
        run: tar -zcvf x-ui-linux-arm64.tar.gz x-ui
      - name: upload
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release.outputs.upload_url }}
          asset_path: x-ui-linux-arm64.tar.gz
          asset_name: x-ui-linux-arm64.tar.gz
          asset_content_type: application/gzip
  linuxs390xbuild:
    name: build x-ui s390x version
    needs: release
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v3
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: '1.20'
      - name: build linux s390x version
        run: |
          sudo apt-get update
          sudo apt install gcc-s390x-linux-gnu -y
          CGO_ENABLED=1 GOOS=linux GOARCH=s390x CC=s390x-linux-gnu-gcc go build -o xui-release -v main.go
          mkdir x-ui
          cp xui-release x-ui/xui-release
          cp x-ui.service x-ui/x-ui.service
          cp x-ui.sh x-ui/x-ui.sh
          cd x-ui
          mv xui-release x-ui
          mkdir bin
          cd bin
          wget https://github.com/xtls/xray-core/releases/latest/download/Xray-linux-s390x.zip
          unzip Xray-linux-s390x.zip
          rm -f Xray-linux-s390x.zip geoip.dat geosite.dat
          wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat
          wget https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
          mv xray xray-linux-s390x
          cd ..
          cd ..
      - name: package
        run: tar -zcvf x-ui-linux-s390x.tar.gz x-ui
      - name: upload
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release.outputs.upload_url }}
          asset_path: x-ui-linux-s390x.tar.gz
          asset_name: x-ui-linux-s390x.tar.gz
          asset_content_type: application/gzip
