name: CI
run-name: ${{ github.actor }} Gitea Actions 🚀🚀🚀
on:
  push:
    # Sequence of patterns matched against refs/heads
    # branches:
      # - main
    # Sequence of patterns matched against refs/tags
    tags:
      - v*

env:
  #  DOCKER_REGISTRY: docker.io
  # DOCKER_USERNAME: softyouling
  # 此处可修改为你任意 docker 镜像仓库地址和用户名
  DOMAIN: gitea.lntu.edu.cn
  IMAGE_NAME: ${{ github.repository }}
  GITOPS_URL: ${{ env.DOMAIN }}/${{ secrets.GITOPS_REPO }}

jobs:
  build:
    runs-on: ubuntu-latest
    # container: catthehacker/ubuntu:act-latest
    steps:
      # - name: 环境检测
      #   run: |
      #     which node
      #     node --version
      #     which npm
      #     npm --version
      #     which docker
      #     docker info
      #     echo ${{ github.token }}
      #     echo ${{ env.GITOPS_URL }}

      - name: 拉取代码
        uses: https://${{ env.DOMAIN }}/actions/checkout@v4

      - name: 安装依赖,构建
        run: |
          npm config set registry https://registry.npmmirror.com
          npm i
          npm run build

      # Docker配置多平台环境
      - name: Docker配置多平台环境
        uses: https://${{ env.DOMAIN }}/actions/setup-buildx-action@v3

      # - name: 修改镜像信息
      #   id: meta
      #   # uses: docker/metadata-action@v4
      #   # GITHUB_OUTPUT 在流水线中传递的变量
      #   run: |
      #     echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
      #     echo REPO_VERSION=$(echo ${{ github.ref }} | awk -F"/" '{print $3}') >> $GITHUB_OUTPUT
      #   需要v1.0.0的形式的时候使用

      - name: 构建 & 推送镜像
        uses: https://${{ env.DOMAIN }}/actions/docker-build-push@v6
        with:
          image: ${{ env.IMAGE_NAME }}
          tags: ${{ github.sha }}
          registry: ${{ env.DOMAIN }}
          dockerfile: Dockerfile
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      #   platforms: |
      #   linux/amd64
      #   linux/arm64
      # tags: ${{ env.DOMAIN }}/${{env.IMAGE_NAME}}:${{ steps.meta.outputs.REPO_VERSION }}

  gtiops:
    runs-on: ubuntu-latest
    if: ${{ success() }}
    needs: [build]

    steps:
      - name: 🐬更新应用镜像
        uses: https://${{ env.DOMAIN }}/actions/gitops_actions@main
        with:
          gitops-token: ${{ secrets.GITOPS_TOKEN }}
          gitops-url: ${{ env.GITOPS_URL }}
          commit-email: "gitops@lntu.edu.cn"
          commit-name: "千里走单骑"
          file-name: ${{ secrets.FILE_NAME }}
          images-value: ${{ env.DOMAIN }}/${{ github.repository }}:${{ github.sha }}
          image-tag: ${{ github.sha }}

      # - name: 🚀更新应用镜像
      #   run: |
      #     git config --global user.email "gitops@lntu.edu.cn"
      #     git config --global user.name "千里走单骑"
      #     git config --global init.defaultBranch main
      #     mkdir repo
      #     cd repo
      #     git init
      #     git remote add origin https://${{ secrets.GITOPS_TOKEN }}@${{ env.GITOPS_URL }}
      #     git config core.sparsecheckout true
      #     echo ${{ secrets.FILE_NAME }} >> .git/info/sparse-checkout
      #     git pull origin main
      #     ls -l
      #     sed -i "s#${{ env.DOMAIN }}.*#${{ env.DOMAIN }}/${{ env.IMAGE_NAME }}:${{ github.sha }}#g" ${{ secrets.FILE_NAME }}
      #     cat ${{secrets.FILE_NAME}}
      #     if ! git diff-index --quiet HEAD --; then
      #     git add ${{secrets.FILE_NAME}}
      #     git status
      #     git commit -m "🐬 tags:  "${{ github.sha }}" "
      #     git push
      #     else
      #     echo "no changes, git repository is up to date"
      #     fi

  微信通知:
    runs-on: ubuntu-latest
    if: ${{success()}}
    needs: [build, gtiops]

    steps:
      # 发送通知
      - name: 微信通知
        uses:
          https://${{ env.DOMAIN }}/actions/action-wechat-work@master
          # 若没有配置机器人WebHook则跳过
        if: ${{ secrets.WECHAT_WORK_BOT_WEBHOOK != '' }}
        env:
          WECHAT_WORK_BOT_WEBHOOK: ${{ secrets.WECHAT_WORK_BOT_WEBHOOK }}
        with:
          msgtype: markdown
          content: "✅ 应用版本更新成功\n
            > 🐬 镜像:\n
            >    ${{ env.DOMAIN }}/${{ env.IMAGE_NAME }}:${{ github.sha}}\n
            > 🍏 就能帮你到这了"