2-core CPU 7 GB of RAM memory 14 GB of SSD disk space这个配置足够我们使用了,当然,如果你有网络时延的需求,(比如推送及拉取镜像时产生的网络时延),你也可以自建服务器。
# 堆代码 duidaima.com # workflow名称。省略的话,默认为当前workflow文件名 name: Node.js CI # 触发workflow的条件, on: push: # 只有master分支发生push事件时,才会触发workflow branches: [ master ] pull_request: branches: [ master ] # jobs表示执行的一项或多项任务 jobs: # 任务的job_id,具体名称自定义,这里build代表打包 build: # runs-on字段指定运行所需要的虚拟机环境。注意:这个是必填字段 runs-on: ubuntu-latest # 用于配置当前workflow的参数 strategy: matrix: node-version: [10.x, 12.x, 14.x, 15.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ # steps字段指定每个job的运行步骤,可以包含一个或多个步骤,每个步骤都可以配置指定字段 steps: # 切代码到 runner - uses: actions/checkout@v2 # 在当前操作系统安装node - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} # 该运行的命令或者action # 安装依赖、运行测试、打包 - run: npm install - run: npm test - run: npm run build三、常见的 Actions 配置
on: push: # Sequence of patterns matched against refs/tags tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 name: Create Release jobs: build: name: Create Release runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@master - name: Create Release id: create_release uses: actions/create-release@latest env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} body: | Changes in this Release - First Change - Second Change draft: false prerelease: false创建 Github Pages 站点
name: github pages on: push: branches: - master # default branch jobs: deploy: runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v2 - run: npm install - run: npm run docs:build - name: Deploy uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs-dist多人协作开发,云端代码检测
name: Test on: [push, pull_request] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies uses: bahmutov/npm-install@v1 - name: Run linter run: npm run lint test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies uses: bahmutov/npm-install@v1 - name: Run test run: npm test build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies uses: bahmutov/npm-install@v1 - name: Build run: npm run build以上是 Github 中常见的一些配置,更多 Actions 配置可以参考官网。
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; proxy_set_header Host $host; if (!-f $request_filename) { rewrite ^.*$ /index.html break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }4.2 项目根目录新建 Dockerfile 文件
FROM nginx COPY ./dist/ /usr/share/nginx/html/ # 第一步nginx配置文件名称 COPY ./vhost.nginx.conf /etc/nginx/conf.d/bilibili-vue.conf EXPOSE 804.3 配置容器镜像服务
然后创建命名空间,再创建我们的镜像仓库,这里如果不想别人下载你的镜像的话就可以选择私有。然后点击下一步配置代码源,这里我选择了本地仓库,一方面是为了日志统一,可以在 Github Actions 看到所有日志,一方面是可以通过命令行直接推送镜像到镜像仓库,自由度比较高。
4.3.3 第三步
4.4 如何跟 Actions 联动
name: Docker Image CI # Actions名称 on: [push] # 执行时机 jobs: # 这里我使用的是yarn,想用npm的同学将yarn命令修改为npm命令即可 build: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@master # 安装依赖 - name: install run: yarn # 打包 - name: build project run: yarn run build # 打包镜像推送到阿里云容器镜像服务 - name: Build the Docker image run: | docker login --username=${{ secrets.DOCKER_USERNAME }} registry.cn-hangzhou.aliyuncs.com --password=${{ secrets.DOCKER_PASSWORD }} docker build -t bilibili-vue:latest . docker tag bilibili-vue registry.cn-hangzhou.aliyuncs.com/zlyyyy/bilibili-vue:latest docker push registry.cn-hangzhou.aliyuncs.com/zlyyyy/bilibili-vue:latest # 推送 - name: ssh docker login # 使用appleboy/ssh-action@master登录服务器执行拉取镜像脚本,服务器ip、用户名、密码配置方式同容器镜像服务配置方式一样 uses: appleboy/ssh-action@master with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USERNAME }} password: ${{ secrets.SSH_PASSWORD }} script: cd ~ && sh bilibili-vue-deploy.sh ${{ secrets.DOCKER_USERNAME }} ${{ secrets.DOCKER_PASSWORD }}最后一步登录服务器后,我执行了一个脚本来拉取云端最新镜像,并删除旧镜像,启动新镜像。脚本内容如下。
echo -e "---------docker Login--------" docker login --username=$1 registry.cn-hangzhou.aliyuncs.com --password=$2 echo -e "---------docker Stop--------" docker stop bilibili-vue echo -e "---------docker Rm--------" docker rm bilibili-vue docker rmi registry.cn-hangzhou.aliyuncs.com/zlyyyy/bilibili-vue:latest echo -e "---------docker Pull--------" docker pull registry.cn-hangzhou.aliyuncs.com/zlyyyy/bilibili-vue:latest echo -e "---------docker Create and Start--------" docker run --rm -d -p 8081:80 --name bilibili-vue registry.cn-hangzhou.aliyuncs.com/zlyyyy/bilibili-vue:latest echo -e "---------deploy Success--------"六、测试流程,查看日志
总结