name: Build NGINX on Ubuntu

on: 
  push:
  pull_request:
    branches:
      - main 

jobs:
  build-nginx:
    runs-on: ubuntu-22.04
    steps:
      - name: 检出代码
        uses: actions/checkout@v3

      - name: 更新 apt 源
        run: sudo apt update

      - name: 安装编译工具和依赖
        run: |
          sudo apt install -y gcc make libpcre3-dev zlib1g-dev libssl-dev

      - name: 配置构建
        run: |
          auto/configure

      - name: 编译 NGINX
        run: |
          make

      - name: 安装 NGINX
        run: |
          sudo make install

      - name: 测试 NGINX 运行
        run: |
          sudo /usr/local/nginx/sbin/nginx
          curl -v localhost || true
          
      - name: 停止 NGINX 服务
        run: |
          sudo /usr/local/nginx/sbin/nginx -s stop || true
          
      - name: 创建 Dockerfile
        run: |
          cat > Dockerfile << 'EOF'
          FROM ubuntu:22.04
          
          # 安装依赖
          RUN apt-get update && \
              apt-get install -y libpcre3 zlib1g libssl1.1 && \
              apt-get clean && \
              rm -rf /var/lib/apt/lists/*
          
          # 复制编译好的 nginx
          COPY /usr/local/nginx /usr/local/nginx
          
          # 暴露端口
          EXPOSE 80 443
          
          # 设置工作目录
          WORKDIR /usr/local/nginx
          
          # 启动 nginx
          CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
          EOF
      
      - name: 设置 Docker Buildx
        uses: docker/setup-buildx-action@v2
      
      - name: 登录到 Harbor
        uses: docker/login-action@v2
        with:
          registry: ${{ secrets.HARBOR_REGISTRY }}
          username: ${{ secrets.HARBOR_USERNAME }}
          password: ${{ secrets.HARBOR_PASSWORD }}
      
      - name: 构建并推送 Docker 镜像
        uses: docker/build-push-action@v4
        with:
          context: .
          push: true
          tags: ${{ secrets.HARBOR_REGISTRY }}/nginx/nginx:${{ github.sha }},${{ secrets.HARBOR_REGISTRY }}/nginx/nginx:latest
