为通过 GitHub 操作执行的单元测试运行本地主机服务器

Dre*_*ejc 11 workflow yaml github github-actions

我有以下 GitHub 工作流程来构建我的项目

name: build

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: Build with Maven
      run: mvn clean compile test
Run Code Online (Sandbox Code Playgroud)

构建工作得很好。但是,项目 JUnit 测试要求 localhost 服务器正在侦听端口 4444 ...并且我收到以下错误:

连接被拒绝:localhost/127.0.0.1:4444

服务器在每个 JUnit 测试之前启动,并且是测试套件的一部分。

如何告诉 docker 容器此端口上允许网络连接?或者默认情况下是否有任何开放端口?

Pet*_*nyi 3

我分享我的解决方案。希望它会有所帮助。

  1. 用于侦听端口(在我的例子中为 8080)的测试服务器的 Dockerfile。正如上面的评论提到的,您需要公开您的端口
FROM golang:1.15.2-alpine

# Setup you server

# This container exposes port 8080 to the outside world
EXPOSE 8080

# Run the executable
CMD ["./main"]
Run Code Online (Sandbox Code Playgroud)
  1. docker-compose 文件(这不是必须的,但就我而言,我必须启动多个依赖容器)。再次确保端口已定义
  main-server:
    build: ./
    container_name: main-server
    image: artofimagination/main-server
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)
  1. github 行动。只需为您的服务器运行 docker-compose 命令即可。然后是需要连接到该端口的应用程序。在这种情况下,pytest 尝试通过端口 8080 向主服务器发送请求值得一提的是,在我的示例中 pytest 访问 127.0.0.1:8080
      - name: Check out code into the Go module directory
        uses: actions/checkout@v2

      - name: Start test server
        run: docker-compose up -d main-server

      - name: Run functional test
        run: pip3 install -r test/requirements.txt && pytest -v test
Run Code Online (Sandbox Code Playgroud)

祝你好运,我希望这会有所帮助。