[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 "[email protected]"
      
      # 会产生两个文件:
      # id_rsa : 这是私钥, 对应 SSH_PRIVATE_KEY
      # id_rsa.pub : 这是公钥,对应 SSH_PUBLIC_KEY
      
    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: "[email protected]"
    	  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}                # 推到仓库下
    

自动Relase到仓库

  • 参考之前写的博客:[Gitlab CI/CD] 自动发布新版本

查看预定义和自定义的所有变量

  • Predefined variables reference
  • 打印出当前项目下的所有变量:
    stage: job_name
    
    job_name:
      stage: job_name
      tags:
        - python
      script:
        - export
    

上传文件到release界面

自动推送whl包到pypi

参考资料

  • How to Release Artifacts Using Gitlab CICD

你可能感兴趣的:(工具,gitlab,ci/cd,git)