草庐IT

【6.5】服务器安装 自动构建上传选择 Gitlab CI

王滕辉 2023-10-25 原文

https://www.cnblogs.com/cjsblog/p/12256843.html
https://www.jianshu.com/p/080a962c35b6
https://www.cnblogs.com/diaomina/p/12830449.html
https://hub.docker.com/r/twang2218/gitlab-ce-zh
https://www.cnblogs.com/zzhaolei/p/11063345.html

gitlib 安装

# docker-componse.yml
version: '3'
services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh'
      restart: unless-stopped
      hostname: 'gitlab.example.com'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://192.168.0.103:9980'
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          gitlab_rails['gitlab_ssh_host'] = '192.168.0.103'
          gitlab_rails['gitlab_shell_ssh_port'] = 9922
          # 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
          # 比如下面的电子邮件的配置:
          # gitlab_rails['smtp_enable'] = true
          # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
          # gitlab_rails['smtp_port'] = 465
          # gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
          # gitlab_rails['smtp_password'] = "password"
          # gitlab_rails['smtp_authentication'] = "login"
          # gitlab_rails['smtp_enable_starttls_auto'] = true
          # gitlab_rails['smtp_tls'] = true
          # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
      ports:
        - '9980:9980'
        - '9922:22'
      volumes:
        - /home/gitlab/etc:/etc/gitlab
        - /home/gitlab/log:/var/log/gitlab
        - /home/gitlab/opt:/var/opt/gitlab
      deploy:
        placement:
          constraints:
            - node.hostname == worker1 
    runner:
      image: 'gitlab/gitlab-runner'
      container_name: gitlab-runner
      restart: always
      volumes:
        - /home/gitlab/runner:/etc/gitlab-runner
        - /var/run/docker.sock:/var/run/docker.sock          
      deploy:
        placement:
          constraints:
            - node.hostname == worker1 



docker exec -it gitlab  /bin/bash
# 打开文件

vim /etc/gitlab/gitlab.rb
 
# 这个文件是全注释掉了的,所以直接在首行添加如下配置
  
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口 (图片上拼写错误,正确的是external_url)
external_url 'http://192.168.0.103:9980'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.0.103'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

:x


gitlab-ctl reconfigure
gitlab-ctl restart
exit;

上传代码

http://192.168.0.103:9980/help/ssh/README#generating-a-new-ssh-key-pair
打开git窗口,cmd窗口是没有办法执行命令的
ssh-keygen -t rsa -C "514840279@qq.com" -b 4096

生成sshkey

在windows中找到生成文件 一般在 “C:\Users\Administrator.ssh”
Administrator 是你的系统登录用户名称
复制id_rsa.pub文件中的内容到gitlib的ssh上自己的用户

image.png

然后就可以在新建的项目上找到ssh命令 clone 到本地


image.png

配置CI 与邮件

http://192.168.0.103:9980/help/ci/quick_start/README

image.png

按要求 创建一个 .gitlab-ci.yml


image.png

gitlib running 需要在kubernetes 上执行,目前放弃


image.png

使用docker swarm 配置gitrunner
https://blog.csdn.net/zhangruhong168/article/details/78924700

image.png
# 进入 runner 容器
docker exec -it a446dceb9e4d7bdeeb4660132e628fa833870b0ad63391b058c9aa80758743ca bash
# 注册 runner
 gitlab-runner register
# 输入 gitlab 示例的 url
http://192.168.0.103:9980/
# 输入用来注册 runner 的 token
cpisdPjUGYzfoPCs2yHY
# 输入 runner 的描述,随后可在 gitlab 界面中修改
gitlab-ci
# 输入与 runner 绑定的标签(可修改)
gitlab-ci
# 选择 runner 的执行方式(推荐docker)
 docker
# 如果选择的执行方式是 docker,会要求填写默认的镜像
alpine:latest
image.png

配置玩会在CI中显示runner的信息


image.png

https://www.freesion.com/article/3042658032/

打包推送配置

https://blog.csdn.net/zhwillwin/article/details/86776948
代码中创建 ..gitlab-ci.yml

variables: #变量
  MAVEN_OPTS: "-Dmaven.repo.local=/home/.m2/repository"  #指定maven的存储目录
stages:
- build 

build:jdk8:
  stage: build
  script:
   - echo "=============== 开始编译打包任务 ==============="
   - mvn clean package -Dmaven.test.skip=true
   - cd danyuan-gateway && mvn docker:build  -DpushImage
  # - cd danyuan-serve && mvn docker:build  -DpushImage
  artifacts:
    paths:
      - build/
  only:
   - master #当有代码合到主干时触发这个job
  tags:
  - danyuan-tools
  image: maven:3.3.9-jdk-8 

···
settint.xml 中无法设置私服的maven代理,我估计是因为使用dockerswarm 的关系,应该使用host的网络模式,跟redis一个熊样。
···


image.png
 <mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     # docker 应该是网络不通无法访问 103 runner 必须用host才可以
    <mirror>
      <id>maven-public</id>
      <mirrorOf>central</mirrorOf>
      <name>maven-public</name>
      <url>http://192.168.0.103:9001/repository/maven-public/</url>
    </mirror>
| -->
  </mirrors>
image.png
image.png
image.png

当有代码提交操作时候自动触发任务执行


n

点波关注 系统搭建(docker)

有关【6.5】服务器安装 自动构建上传选择 Gitlab CI的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  3. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  4. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  5. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  6. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  7. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  8. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  9. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  10. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

随机推荐