码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [GitLab CI/CD] 实践操作片段记录


    目录

          • 引言
          • 自动生成whl包并提交代码到仓库中
          • 自动Relase到仓库
          • 查看预定义和自定义的所有变量
          • 上传文件到release界面
          • 自动推送whl包到pypi
          • 参考资料

    引言
    • 在[GitLab CI/CD]记录基于Docker的环境搭建实践()一文中,我们已经搭建好整合GitLab CI/CD的运行环境了,该篇文章主要记录使用CI/CD的一些代码片段。
    自动生成whl包并提交代码到仓库中
    • 说明:在运行CI时,每次都会重新拉取yaml中指定的镜像,重新拉取仓库最新代码。当运行时,当前目录就是仓库下最新代码所在的目录。可以理解为就是在.gitlab-ci.yaml所在目录下

    • 生成whl包:需要编写setup.py文件,具体可参考setup.py编写

    • 提交代码到仓库(需要事先配置SSH免密提交),具体配置步骤如下:

      1. 生成SSH密钥:
        $ ssh-keygen -t rsa -C "xxxx@xxx.com"
        
        # 会产生两个文件:
        # id_rsa : 这是私钥, 对应 SSH_PRIVATE_KEY
        # id_rsa.pub : 这是公钥,对应 SSH_PUBLIC_KEY
        
        • 1
        • 2
        • 3
        • 4
        • 5
      2. 配置SSH_PRIVATE_KEY: 在仓库下添加Variables: Setting → CI/CD Settings → Variables → Add variable → SSH_PRIVATE_KEY
      3. 配置SSH_PUBLIC_KEY: User Settings → SSH Keys → Add an SSH Key
    • 编写.gitlab-ci.yml代码:

      image: gitlab_ci_image:latest
      variables:
      	  USER_NAME: "SWHL"
      	  USER_EMAIL: "liekkaskono@163.com"
      	  REMOTE_URL: "git@${CI_SERVER_HOST}:${CI_PROJECT_PATH}.git"
               CI_COMMIT_FOLDER: "tmp"
      
      before_script:
      	  ## Install ssh-agent if not already installed, it is required by Docker.
      	  - 'command -v ssh-agent >/dev/null || ( apt-get update -y && apt-get install openssh-client -y )'
      	
      	  ## Run ssh-agent (inside the build environment)
      	  - eval $(ssh-agent -s)
      	
      	  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
      	  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
      	
      	  ## Create the SSH directory and give it the right permissions
      	  - mkdir -p ~/.ssh
      	  - chmod 700 ~/.ssh
      	
      	  ## Use ssh-keyscan to scan the keys of your private server. Replace gitlab.com
      	  - echo "StrictHostKeyChecking no" >> ~/.ssh/config
      	  - ssh-keyscan 10.252.19.101 >> ~/.ssh/known_hosts
      	  - chmod 644 ~/.ssh/known_hosts
      	
      	  - git config --global user.name ${USER_NAME}
      	  - git config --global user.email ${USER_EMAIL}
      
      stage: 
      	- gen_whl_and_push_repo
      
      gen_whl_and_push_repo:
      	stage: gen_whl_and_push_repo
      	tags:
      		- python
      	script:
      		- mkdir ${CI_COMMIT_FOLDER}
      		- git clone ${REMOTE_URL} ${CI_COMMIT_FOLDER}
      		- cd ${CI_COMMIT_FOLDER}
      		- python setup.py bdist_wheel           # 生成whl包,位于dist目录下
      		- git add dist/*.whl                    # 添加whl到git中
      		- git commit -m 'gitlab ci submit'
      		- git push ${REMOTE_URL}                # 推到仓库下
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
    自动Relase到仓库
    • 参考之前写的博客:[Gitlab CI/CD] 自动发布新版本
    查看预定义和自定义的所有变量
    • Predefined variables reference
    • 打印出当前项目下的所有变量:
      stage: job_name
      
      job_name:
        stage: job_name
        tags:
          - python
        script:
          - export
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    上传文件到release界面
    自动推送whl包到pypi
    参考资料
    • How to Release Artifacts Using Gitlab CICD
  • 相关阅读:
    带你玩转序列模型之NLP与词嵌入(一)
    C++基础之类二(六个成员函数、构造及析构)待完善
    Maven------pom.xml详解
    《视觉SLAM十四讲》-- 相机与图像
    基于JSP+MySQL的手机在线销售平设计与实现
    MAYA教程之模型的UV拆分与材质介绍
    使用C#如何监控选定文件夹中文件的变动情况?
    微信视频号的项目玩法,视频号好物分享,只要你会剪辑,就可以去操作
    uni-app自定义导航栏
    docker容器技术实战-4
  • 原文地址:https://blog.csdn.net/shiwanghualuo/article/details/127705907
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号