• Github Action Flask 应用CI/CD样例


    本文介绍如何使用github action 快速制作flask应用cicd流程。git地址在cicd-flask-example

    flask是实现python WSGI标准的web框架,但是仅仅适用于开发环境。要部署到生产环境,需要选择一种WSGI服务器(本文选择的是gunicorn)。

    什么是WSGI Server?

    WSGI 是python语言定制的web规范(仅限python),兼容WSGI(Web Server Gateway Interface)的服务器就叫"WSGI Server".

    其功能包括:

    1. 运行python应用
    2. 协议转换:将HTTP请求转换为标准WSGi请求,将WSGI响应转换为HTTP响应

    应用

    参考:flask quickstart 运行一个简单的Hello World 服务器。

    容器化

    Hello world程序

    • Dockerfile
    # 选择python版本
    FROM python:3.7.14-buster
    # 设置工作目录
    WORKDIR /app
    # 安装python依赖
    COPY requirements.txt requirements.txt
    RUN pip3 install -r requirements.txt
    # 拷贝当前文件夹所有文件到容器工作目录
    COPY . .
    # 启动应用
    CMD [ "gunicorn" , "app:app", "-c", "gunicorn.conf.py"]
    

    打成docker应用,我们希望以:

    docker run -d -p 8080:8080 oneslide/devops:flask
    

    方式启动。

    github action

    github action 是github免费的流水线工具。流水线配置文件时yaml格式的,放置在项目根目录的.github/workflows下。

    这个仓库的流水线配置文件时.github/workflows/docker-image.yml流水线流程大概分成三步:

    1. 打镜像
    2. 登录DockerHub
    3. 推送镜像到DockerHub。
    • docker-image.yml
    name: Docker Image CI
    
    on:
      push:
        branches: [ "main" ]
      pull_request:
        branches: [ "main" ]
    env:
      IMAGE_NAME: oneslide/devops:flask
    jobs:
    
      build:
    
        runs-on: ubuntu-latest
    
        steps:
         # 1. 打镜像
        - uses: actions/checkout@v3
        - name: Build the Docker image
          run: docker build . --file Dockerfile --tag ${{env.IMAGE_NAME}}
         # 2. 登录DockerHub
        - name: Login to Docker Hub
          uses: docker/login-action@v2
          with:
            username: ${{ secrets.DOCKERHUB_USERNAME }}  
            password: ${{ secrets.DOCKERHUB_TOKEN }}
         # 3. 推送镜像到DockerHub    
        - name: Publish Image to Docker Hub
          run: docker push ${{env.IMAGE_NAME}}
    

    添加Docker Hub凭证

    注意到流水线配置文件docker-image.yml${{ secrets.DOCKERHUB_USERNAME }} 的变量 。

        - name: Login to Docker Hub
          uses: docker/login-action@v2
          with:
            username: ${{ secrets.DOCKERHUB_USERNAME }}   # 用户名
            password: ${{ secrets.DOCKERHUB_TOKEN }}  # 密码
    

    ${{ secrets.DOCKERHUB_USERNAME }} 变量需要在仓库Settings -> Secret - >Action -> New Repository Secert配置。

    输入你的Docker Hub的凭证。
    在这里插入图片描述

  • 相关阅读:
    设计实例07-同步复位以及异步复位
    【Linux】系列入门摘抄笔记-6-tar打包压缩和vim编辑器
    PTA 1084 外观数列(Python3)
    Pro Git日常学习记录-Git基础-9.打标签
    网站服务器是什么意思?它的用途有哪些?
    认知战壳吉桔:认知战战略不是从思潮开始,而在策划!
    数据通信——应用层(超文本)
    python sklearn knn快速实现,保姆级教学
    探索未来科技:量子计算的前沿与挑战
    将代码中的调试信息输出到日志文件中
  • 原文地址:https://blog.csdn.net/qq_33745102/article/details/126956231