name: Build and Push to ACR

on:
  push:
    ### Production
    branches: [ "master" ]

env:
  REGION_ID: cn-shenzhen
  REGISTRY: mmc-registry.cn-shenzhen.cr.aliyuncs.com
  NAMESPACE: sharefly
  IMAGE: cms
  TAG: ${{ github.sha }}

  ACR_EE_REGISTRY: mmc-registry.cn-shenzhen.cr.aliyuncs.com
  ACR_EE_INSTANCE_ID: cri-yhk5zgfc2v1sia6l
  ACR_EE_NAMESPACE: sharefly
  ACR_EE_IMAGE: cms
  ACR_EE_TAG: ${{ github.sha }}
  JAVA_VERSION: '8'
  GITLAB_URL: https://oauth2:MjVJKxB7m4tCy7symBzn@git.mmcuav.cn/iuav/cms.git

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    ### Production
    environment: prod
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: WeChat Work notification by markdown
        uses: chf007/action-wechat-work@master
        env:
          WECHAT_WORK_BOT_WEBHOOK: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9be1b073-1760-442d-8e3d-faa0fd32ea16
        with:
          msgtype: markdown
          content: "
          ### GitHub提交信息 \n
          > - 提交人: ${{github.actor}} \n
          > - 提交信息: ${{ github.event.head_commit.message }} \n
          > - 提交到仓库: ${{github.repository}} \n
          > - 提交到分支: ${{github.ref}} \n
          即将开始更新，请关注Argocd同步状态...
          "

      - name: Set up JDK 8
        uses: actions/setup-java@v1
        with:
          java-version: ${{env.JAVA_VERSION}}

      - name: Login to ACR EE with the AccessKey pair
        uses: aliyun/acr-login@v1
        with:
          login-server: "https://${{ env.ACR_EE_REGISTRY }}"
          region-id: "${{ env.REGION_ID }}"
          username: "QD--KeBiTeHangKong@1354706964800968"
          password: "MMC@2023&ACR"
          instance-id: "${{ env.ACR_EE_INSTANCE_ID }}"

      - name: Build and push image to ACR EE
        run: |
          mvn clean package
          docker build -t "$ACR_EE_REGISTRY/$ACR_EE_NAMESPACE/$ACR_EE_IMAGE:$TAG" .
          docker push "$ACR_EE_REGISTRY/$ACR_EE_NAMESPACE/$ACR_EE_IMAGE:$TAG"
      ### Production
      - name: Kustomize Set Image
        run: |-
          cd kustomization/overlays/prod
          curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash /dev/stdin 3.8.6
          ./kustomize edit set image REGISTRY/NAMESPACE/IMAGE:TAG=$REGISTRY/$NAMESPACE/$IMAGE:$TAG
      ### Production
      - name: Commit and Push
        run: |
          git config user.name "Chuck"
          git config user.email "Chuck@users.noreply.github.com"
          git remote set-url origin "$GITLAB_URL"
          git commit -am "Update Image Tag"
          git tag -a $TAG -m "日常迭代"
          git push origin master --tags

      - name: Send Error Notification by WeChat
        if: ${{ failure() }}
        run: |
          curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9be1b073-1760-442d-8e3d-faa0fd32ea16' -H 'Content-Type: application/json' -d '
          {
            "msgtype": "markdown",
            "markdown": {
              "content": "### `GitHub构建并推送镜像失败` \n
                          > - 提交人: ${{github.actor}} \n
                          > - 提交信息: ${{github.event.head_commit.message}} \n
                          > - 提交到仓库: ${{github.repository}} \n
                          > - 提交到分支: ${{github.ref}} \n 请修复错误后重新提交..."
          }'
        #- name: Commit files
        #  run: |
        #    git config --local user.email "Chuck@users.noreply.github.com"
        #    git config --local user.name "Chuck"
        #    git commit -am "Image Update"

        #- name: Push changes
        #  uses: ad-m/github-push-action@master
      #  with:
      #    github_token: ${{ secrets.GITHUB_TOKEN }}