配置如此简单,我的github ci cd。

37 阅读2分钟
on: push

jobs:
  npm-build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: npm install
    - run: npm run build

如果怕乱,最后还是会写name作为备注:

name: 打包React项目

on: push

jobs:
  npm-build:
    name: npm-build工作
    runs-on: ubuntu-latest
    
    steps:
    - name: 读取仓库内容
      uses: actions/checkout@v4
    
    - name: 安装依赖
      run: npm install
    
    - name: 项目打包
      run: npm run build

就是这样,先写name,再指定具体步骤执行的内容。

如果自动化生成docker镜像,并且推送到docker仓库里,这里在刚才的项目文件夹里面创建了一个Dockerfile,并且写一些创建镜像的基本操作,接着来到Docker hub新建一个仓库,毕竟等会要告诉actions要推到哪个仓库。

接着到我的账户里面:

image.png

找到安全security选项,新建一个token,

image.png

因为把镜像推送到这个仓库是需要权限的,回到yaml文件,

name: 打包React项目
on: push

permissions:
  contents: write

jobs:
  npm-build:
    name: npm-build工作
    runs-on: ubuntu-latest
    
    steps:
    - name: 读取仓库内容
      uses: actions/checkout@v4
      
    - name: 安装依赖和项目打包
      run: |
        npm install
        npm run build
        
    - name: 部署
      uses: JamesIves/github-pages-deploy-action@v4
      with:
        branch: gh-pages
        folder: build

首先修改一下name,因为和刚才的工作不太一样,

name: 构建镜像并推送到Docker Hub
on: push

jobs:
  npm-build:
    name: npm-build工作
    runs-on: ubuntu-latest
    
    steps:
    - name: 读取仓库内容
      uses: actions/checkout@v4
    
    - name: 登录DockerHub
      uses: docker/lgoin-action@v3
      with:
        username: ${{ secrets.DOCKER_HUB_USENAME }}
        password: ${{ secrets.DOCKER_HUB_TOKEN }}
        
   - name: 构建并推送到Docker Hub
     uses: docker/build-push-action@v5
     with:
       push: true
       tags: eggoopain/react-app:latest
        
      

登录dockerhub,利用一下现有的action,登录。

接着用另一个现成的action,构建并推送到Docker Hub,注意这里的tag要和仓库相对应,生下来的密码和账号,先回到设置页面,在secrets and vatirables下面有一个actions,有一个actions,这里就可以新增secret,name就是自定义名称,secret就是名称所保存的不能公开的秘密.

接下来就是


git add .

git commit -m "生成镜像并推送到Docker Hub"

git push origin main

image.png

成功了,看看有没有推送到docker上面去。

image.png

docker hub里面也显示了新增的镜像,

下面跑个容器看看:

docker run -d -p 3333:3000 eggtoopain/react-app:latest

// 然后去访问浏览器 localhost:3333

就可以看到页面了。