如何在GitHub Actions/Azure Pipelines中启动预配置的JFrog Artifactory容器?
实现开箱即用的Artifactory临时实例用于集成测试
1. 用环境变量跳过交互式配置
JFrog Artifactory的Docker镜像支持通过环境变量直接完成核心配置,完全不需要运行config.sh。常用关键变量包括:
ARTIFACTORY_ADMIN_PASSWORD: 设置管理员初始密码JFROG_PLATFORM_ADMIN_PASSWORD: 若使用JFrog Platform镜像,设置平台管理员密码ARTIFACTORY_LICENSE_KEY: 可选,设置试用许可证(OSS版无需)
示例Docker Compose配置(docker-compose.yml):
version: '3.8' services: artifactory: image: releases.jfrog.io/jfrog/artifactory-oss:latest ports: - "8081:8081" - "8082:8082" environment: - ARTIFACTORY_ADMIN_PASSWORD=Admin@123 volumes: - artifactory_data:/var/opt/jfrog/artifactory healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8081/artifactory/api/system/ping"] interval: 30s timeout: 10s retries: 5 volumes: artifactory_data:
启动命令:docker compose up -d,等待健康检查通过后,即可用账号admin、密码Admin@123直接访问。
2. 在GitHub Actions中作为Service Container使用
直接在工作流中定义Artifactory服务容器,自动完成配置:
jobs: integration-test: runs-on: ubuntu-latest services: artifactory: image: releases.jfrog.io/jfrog/artifactory-oss:latest env: ARTIFACTORY_ADMIN_PASSWORD: Admin@123 ports: - 8081:8081 - 8082:8082 options: >- --health-cmd "curl -f http://localhost:8081/artifactory/api/system/ping" --health-interval 30s --health-timeout 10s --health-retries 5 steps: - uses: actions/checkout@v4 - name: 等待Artifactory就绪 run: | until curl -s http://localhost:8081/artifactory/api/system/ping; do echo "等待Artifactory启动..." sleep 10 done - name: 执行集成测试 run: ./your-test-script.sh
3. 在Azure Pipelines中通过Docker Compose启动
通过脚本步骤启动容器并等待就绪:
steps: - script: | docker-compose up -d # 等待服务就绪 until curl -s http://localhost:8081/artifactory/api/system/ping; do echo "等待Artifactory启动..." sleep 10 done displayName: '启动Artifactory实例' - script: ./your-test-script.sh displayName: '执行集成测试' - script: docker-compose down displayName: '清理Artifactory实例'
确保代理已安装Docker和Docker Compose,或使用预装工具的托管代理。
4. 额外优化建议
- 使用Artifactory OSS版进行测试,无需许可证,适合临时场景
- 测试前可通过REST API预先创建所需仓库,示例:
curl -u admin:Admin@123 -X POST http://localhost:8081/artifactory/api/repositories/docker-local \ -H "Content-Type: application/json" \ -d '{"key":"docker-local","rclass":"local","packageType":"docker"}' - 测试完成后及时清理容器和卷,避免资源占用
内容的提问来源于stack exchange,提问作者David Gardiner
相关产品推荐
相关产品推荐

