name: Build NGINX on Ubuntu on: push: pull_request: branches: - main env: ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true defaults: run: shell: 'bash -Eeo pipefail -x {0}' jobs: build-nginx: runs-on: ubuntu-22.04 steps: - name: 检出代码 uses: actions/checkout@v4 - name: 更新包管理器 run: sudo apt update - name: 安装编译器和 make 工具 run: sudo apt install -y gcc make - name: 安装依赖库 run: | sudo apt install -y \ libpcre3-dev \ zlib1g-dev \ libssl-dev - name: 配置构建 run: | echo "当前工作目录: $(pwd)" echo "目录内容:" ls -la # 按照 README 步骤进行配置 configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module - name: 编译 NGINX run: make - name: 安装 NGINX run: sudo make install - name: 测试 NGINX run: | echo "启动 NGINX..." sudo /usr/local/nginx/sbin/nginx echo "等待服务启动..." sleep 2 echo "测试 HTTP 连接..." curl localhost echo "停止 NGINX..." sudo /usr/local/nginx/sbin/nginx -s quit - name: 设置 Docker Buildx uses: docker/setup-buildx-action@v3 - name: 创建 Dockerfile run: | cat > Dockerfile << 'EOF' FROM ubuntu:22.04 # 安装运行时依赖 RUN apt-get update && \ apt-get install -y --no-install-recommends \ libpcre3 \ zlib1g \ libssl3 && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 复制编译好的 nginx COPY /usr/local/nginx /usr/local/nginx # 暴露端口 EXPOSE 80 443 # 启动 nginx CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"] EOF - name: 登录到 Harbor uses: docker/login-action@v3 with: registry: ${{ secrets.HARBOR_REGISTRY }} username: ${{ secrets.HARBOR_USERNAME }} password: ${{ secrets.HARBOR_PASSWORD }} - name: 构建并推送 Docker 镜像 uses: docker/build-push-action@v5 with: context: . push: true tags: | ${{ secrets.HARBOR_REGISTRY }}/nginx/nginx:${{ github.sha }} ${{ secrets.HARBOR_REGISTRY }}/nginx/nginx:latest