我正在使用Gitlab-ci-multi-runner,使用OSX机器(bash shell)和Windows 7机器(批处理命令).每当我推动时,我都希望它能够在两个跑步者身上进行构建和测试.但显然每个平台的命令需要略有不同.我不想使用码头工具.
我一直在关注http://doc.gitlab.com/ci/yaml/README.html,但似乎没有关于舞台的特定跑步者耦合的任何信息.
是否有使用Gitlab CI 实现WorPress (WP_UnitTestCase)的参考?
我已经尝试配置.gitlab-ci.yml,它实现了构建,但是没有运行任何测试。
这是.gitlab-ci.yml文件:
image: php:5.6
variables:
# Configure mysql service (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: wordpress_tests
MYSQL_ROOT_PASSWORD: mysql
before_script:
# Install dependencies
- bash ci/docker_install.sh wordpress_tests root mysql tutum-wordpress latest
stages:
- test
# test:PHP5.3:MySQL:
# image: tetraweb/php:5.3
# script:
# - phpunit --configuration phpunit.xml.dist
test:PHP5.4:MySQL:
image: tetraweb/php:5.4
services:
- tutum/wordpress:latest
script:
- phpunit --configuration phpunit.xml.dist
# test:PHP5.6:MySQL:
# image: php:5.6
# script:
# - phpunit --configuration phpunit.xml.dist
# test:PHP7:MySQL:
# image: php:7
# script:
# - …Run Code Online (Sandbox Code Playgroud) wordpress continuous-integration gitlab gitlab-ci gitlab-ci-runner
我有以下配置.gitlab-ci.yml:
stages:
- build
build:
stage: build
script:
- npm install -g gulp
- npm install
- gulp
Run Code Online (Sandbox Code Playgroud)
但是跑步者只执行第一个命令(npm install -g gulp).它运行第一个命令并报告成功,而不执行其他命令.
构建日志:
Running with gitlab-ci-multi-runner 1.6.1 (c52ad4f)
Using Shell executor...
Running on WINBUILDER...
Fetching changes...
HEAD is now at 2df18c5 Update .gitlab-ci.yml
From https://.../client
2df18c5..b4efae8 master -> origin/master
Checking out b4efae85 as master...
$ npm install -g gulp
C:\Users\Administrator\AppData\Roaming\npm\gulp -> C:\Users\Administrator\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js
C:\Users\Administrator\AppData\Roaming\npm
`-- gulp@3.9.1
Build succeeded
Run Code Online (Sandbox Code Playgroud)
我在阶段中看到了几个使用多个命令的配置示例.我不明白为什么其他命令没有运行.
docker: command not found在 gitlab-ci 中运行以下 CI 脚本时出现错误。此错误发生在before_script部署阶段。
services:
- docker:dind
stages:
- build
- test
- deploy
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
build:
stage: build
image: docker:latest
script:
- docker info
- docker version
- docker build --pull -t $SERVICE_NAME:$CI_COMMIT_REF_NAME .
- docker image list
- docker tag $SERVICE_NAME:$CI_COMMIT_REF_NAME $CI_REGISTRY_IMAGE/$SERVICE_NAME:$CI_COMMIT_REF_NAME
- docker push $CI_REGISTRY_IMAGE/$SERVICE_NAME:$CI_COMMIT_REF_NAME
test:
image: docker:latest
stage: test
script:
- docker pull $CI_REGISTRY_IMAGE/$SERVICE_NAME:$CI_COMMIT_REF_NAME
- docker image list
- docker run $CI_REGISTRY_IMAGE/$SERVICE_NAME:$CI_COMMIT_REF_NAME …Run Code Online (Sandbox Code Playgroud) 我有一个 gitlab-ci 集成,需要声纳分析,如果质量门通过,则构建 docker 图像。
这可以使用 gitlab-ci 吗?
我们gitlab-runner通过kubernetes集群内的kubernetes执行器运行实例(我们称之为KUBE01).这些实例构建并部署到kubernetes集群,并为运行程序提供环境变量KUBECONFIG(指向配置文件),如下所示:
$ cat $KUBECONFIG
---
apiVersion: v1
clusters:
- name: gitlab-deploy
cluster:
server: https://KUBE01:6443
certificate-authority-data: <CA_B64>
contexts:
- name: gitlab-deploy
context:
cluster: gitlab-deploy
namespace: dev
user: gitlab-deploy
current-context: gitlab-deploy
kind: Config
users:
- name: gitlab-deploy
user:
token: gitlab-deploy-token-<secret>
Run Code Online (Sandbox Code Playgroud)
我们可以验证kubectl实际上是否正在使用上述gitlab-deploy上下文:
$ kubectl config current-context
gitlab-deploy
Run Code Online (Sandbox Code Playgroud)
但是,尝试实际影响KUBE01失败:
$ kubectl get pods
error: You must be logged in to the server (Unauthorized)
Run Code Online (Sandbox Code Playgroud)
在我的机器上,我们可以验证命名空间和服务帐户令牌是否正确:
$ kubectl get sa/gitlab-deploy -o yaml --namespace dev
apiVersion: v1
kind: ServiceAccount …Run Code Online (Sandbox Code Playgroud) 我有一个gitlab-runner 10.3.0和kubernetes执行器的kubernetes集群。cache_dir在跑步者的config.toml文件中没有定义。请注意,这与docker executor不同,因此卷解决方案不适用。
在中.gitlab-ci.yml,我将作业配置为使用缓存:
build:
cache:
key: "${PROJECT_NAME}"
paths:
- "node_modules/"
script:
- ls node_modules/ || echo "cache not there"
- npm i
- npm build
- ...
Run Code Online (Sandbox Code Playgroud)
运行此命令时,我看到缓存已被拉出并创建:
Cloning repository for some-branch with git depth set to 1...
Cloning into '/group/projectname'...
Checking out d03baa31 as some-branch...
Skipping Git submodules setup
Checking cache for projectname...
Successfully extracted cache
$ docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
//
// ...work being done here...
//
Creating cache projectname... …Run Code Online (Sandbox Code Playgroud) 很少有测试因错误而在管道中失败Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)。
我的.gitlab-ci.yml档案
image: starefossen/ruby-node:latest
services:
- mongo:latest
- redis:latest
variables:
MONGODB_URI: mongodb://mongo:27017/db_test
REDISTOGO_URL: redis://localhost:6379
before_script:
- bundle install --path=cache/bundler
- cp config/mongoid.yml.gitlab config/mongoid.yml
- RAILS_ENV=test bundle exec rake db:create db:migrate
test:
script:
- bundle exec rake test
Run Code Online (Sandbox Code Playgroud)
我的config/initializers/sidekiq.rb档案
require 'sidekiq'
require 'sidekiq-status'
Sidekiq.configure_client do |config|
config.redis = { size: 5, url: ENV['REDISTOGO_URL'] }
end
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Sidekiq::Throttler, storage: :redis
end
config.redis = …Run Code Online (Sandbox Code Playgroud) 我有一个docker-compose文件,它构建了两个容器,一个节点应用程序和一个ngnix服务器.现在我想在gitlab runners的帮助下自动化服务器上的构建和运行过程.我对CI相关的东西很新,所以请原谅我的方法:
我想在gitlab.com上创建多个存储库,并为每个存储库提供一个dockerfile.我现在是否必须将gitlab-runner实例与这些项目中的每一个相关联以构建映像,将其推送到docker repo并让服务器从那里拉出来?然后我不得不以某种方式推动服务器上的docker-compose文件并从那里编写所有内容.
所以我的问题是:
对于那种非结构化的写作很抱歉,但我对这些技术有很多疑问.
提前致谢
运行Gitlab CI管道时出现此错误。据我了解,错误表明我正在尝试在Windows docker-engine上运行Linux类型的docker映像?但问题是我正在使用Windows docker映像。可能是什么问题呢?
错误:作业失败:执行程序需要OSType = linux,但是Docker Engine仅支持OSType = windows
我的CI:
image: hello-world:nanoserver
stages:
- build
build1:
stage: build
script:
- echo "Hello world"
Run Code Online (Sandbox Code Playgroud) gitlab-ci-runner ×10
gitlab-ci ×9
gitlab ×6
docker ×3
kubernetes ×2
caching ×1
redis ×1
rspec ×1
sonar-runner ×1
sonarqube ×1
windows ×1
wordpress ×1