name: CI/CD
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [13.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Cache node modules
uses: actions/cache@v1
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }}
- name: Install packages
run: npm install
- name: Build
run: npm run build
- name: Upload staticfiles to Aliyun OSS
uses: manyuanrong/[email protected]
with:
endpoint: ${{ secrets.OSS_ENDPOINT }}
access-key-id: ${{ secrets.OSS_ID }}
access-key-secret: ${{ secrets.OSS_KEY }}
- run: ossutil cp -rf build/ oss://<myoss>
- name: Dockerize
id: dockerize
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: ${{ secrets.DOCKER_URL }}
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
registry: ${{ secrets.DOCKER_REGISTRY }}
snapshot: true
- name: Send docker image tag to telegram
uses: appleboy/telegram-action@master
with:
token: ${{ secrets.TG_BOT_TOKEN }}
to: ${{ secrets.TG_BOT_TO }}
message: "${{ github.repository }} uploaded a new docker image: ${{ secrets.DOCKER_URL }}:${{ steps.dockerize.outputs.snapshot-tag }}"
如果用 docker-compose 来管理多个项目,各位的 CI/CD 是怎么做的呢?如果有 test 以及 prod 环境又有什么高见呢?
1
scriptB0y 2020-03-01 21:57:09 +08:00
我来个 Python 的:
测试全部通过后,如果在 master 上有 tag,就自动打包发布到 pypi,开一个 github 的 release: https://github.com/laixintao/iredis/blob/master/.github/workflows/release.yaml |
2
erguotou521 2020-03-02 10:45:43 +08:00
我来分享下我自己的,没用过 actions,用的 drone,但 CI/CD 的思路是一样的。
docker-compose 管理多个项目我是一个项目一个目录,然后目录里一个 docker-compose.yml ,方便应用隔离。 自动重启是用 docker-compose stop -> rm -> pull new image -> start 流程来实现的。 要区分环境的话可以用多分支管理来实现,不同分支下的 docker-comose.yml 文件稍有差别,或者用环境变量来区分也是可以的。 最近我有篇文章写了些相关的内容,你可以参考下 https://blog.erguotou.me/traefik-devops.html 后续会可能写一篇关于具体流程的文章。 |
3
lasuar 2020-08-05 17:24:17 +08:00
有没有办法在其中搭建一个临时 db 环境?比如 mysql 、redis 用于测试
|