海屿文章列表

Github Action 打包 Docker 镜像&自动部署

根据 git tags 触发部署,用版本号生成镜像,上传至腾讯云私有镜像仓库。
服务器拉取最新版本部署上线。

name: Docker Build And Push
on:
  push:
    tags:
      - 'v*'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Get version
        id: version
        run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}

      -
        name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      -
        name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          registry: ccr.ccs.tencentyun.com
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      -
        name: Build and push
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: ${{ secrets.REGISTRY }}:latest,${{ secrets.REGISTRY }}:${{ steps.version.outputs.VERSION }}
      -
        name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}

  pull-docker:
    needs: [ docker ]
    name: Pull Docker
    runs-on: ubuntu-latest
    steps:
      - name: Deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.KEY }}
          script: |
            docker stop $(docker ps --filter ancestor=${{ secrets.REGISTRY }} -q)
            docker rm -f $(docker ps -a --filter ancestor=${{ secrets.REGISTRY }}:latest -q)
            docker rmi -f $(docker images  ${{ secrets.REGISTRY }}:latest -q)
            docker login --username=${{ secrets.DOCKERHUB_USERNAME }} --password ${{ secrets.DOCKERHUB_TOKEN }} ccr.ccs.tencentyun.com
            docker pull ${{ secrets.REGISTRY }}:latest
            docker run -d -p 8060:8060 ${{ secrets.REGISTRY }}:latest

✨ 在线生成 Nginx 配置

配置高性能、安全、稳定的NGINX服务器的最简单方法。
支持一键复制到服务器~

Github Action 前后端项目模板

android-github-actions-setup-image-35b6a79fea4a7289acb6796cd4ad05b4.png
GitHub Actions 用起来非常简单,只要在你的仓库根目录建立.github/workflows文件夹,将你的工作流配置(YAML 文件)放到这个目录下,就能启用 GitHub Actions 服务

前端项目部署到服务器

name: Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master

      - name: use Node.js 14
        uses: actions/setup-node@v1
        with:
          node-version: 14

      - name: npm ci and build
        run: |
          npm ci
          npm run build
        env:
          NODE_ENV: development
          CI: true

      - name: Prepare SSH
        run: >
          cd ~ && mkdir .ssh &&
          touch ~/.ssh/known_hosts &&
          ssh-keyscan -H "$IP" >>~/.ssh/known_hosts
        env:
          IP: ${{ secrets.HOST }}

      - name: Deploy to Server
        uses: easingthemes/ssh-deploy@v2.1.6
        env:
          REMOTE_HOST: ${{ secrets.HOST }}
          SSH_PRIVATE_KEY: ${{ secrets.TOKEN }}
          ARGS: "-avzr --delete"
          SOURCE: "build/"
          REMOTE_USER: "ubuntu"
          TARGET: "/var/www/scholar.run"
          

后端 Docker 镜像

GitHub Actions Docker镜像编译和推送到云镜像仓储

Github:https://github.com/risfeng/docker-image-build-push-action

Github Marketplace:https://github.com/marketplace/actions/docker-images-build-and-push

name: Docker Build And Push To Aliyun Hub

on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build Spring Boot
    runs-on: ubuntu-latest
    steps:
      - name: Git Checkout Code
        uses: actions/checkout@v1
        id: git_checkout

      - name: Set up JDK 12.0
        uses: actions/setup-java@v1
        with:
          java-version: 12.0

      - name: Build with Gradle
        run: ./gradlew build

      - name: Build Docker Image
        id: buildAndPushImage
        uses: risfeng/docker-image-build-push-action@v1.0
        with:
          registry_url: 'registry.us-east-1.aliyuncs.com'
          namespaces: 'adotcode'
          repository_name: 'adc.ms.eureka.usa'
          user_name: ${{ secrets.ALIYUN_IMAGES_HUB_USER_NAME }}
          password: ${{ secrets.ALIYUN_IMAGES_HUB_TOKEN }}
          image_version: 'v1.0'
          docker_file: '.'
      - name: Get pre step result output image_pull_url
        run: echo "The time was ${{ steps.buildAndPushImage.outputs.image_pull_url }}"

其中 registry_url、namespaces、repository_name、user_name、password 为自己云镜像仓库设置,${{ secrets.ALIYUN_IMAGES_HUB_USER_NAME }} ${{ secrets.ALIYUN_IMAGES_HUB_TOKEN }}是调用Github仓库settings配置的云镜像仓库的登录用户名和密码,防止密码硬编码被泄漏,配置路径:Github代码仓库-->[settings]->[Secrets]中添加对应的Key。

输入参数说明

以下参数均可参见云私有镜像仓库,如:阿里云私有镜像仓库

参数是否必传描述
registry_url仓库地址,eg: registry.us-east-1.aliyuncs.com
namespaces命名空间
repository_name镜像仓库名称
user_name云登录账户
password登录个人容器镜像服务设置
image_version生成镜像的版本,可以写死,也可以通过上下文自行动态赋值
docker_file构建镜像的Dockerfile目录,默认当前目录(.)

输出参数说明

脚本执行完成后会输出镜像pull地址,便于后续直接docker pull 使用

参数是否必传描述
image_pull_url镜像上传成功后返回的pull地址,eg: registry.us-east-1.aliyuncs.com/ns/adc.ms.erika:v1.0 使用示例: docker pull ${{ steps.<steps.id>.outputs.image_pull_url }}

参考文章

https://frostming.com/2020/04-26/github-actions-deploy/#%E4%BD%BF%E7%94%A8-github-actions-%E8%87%AA%E5%8A%A8%E5%8C%96
https://github.com/risfeng/docker-image-build-push-action

心流

人家说
把心打开
爱才会流进来
但为何
打开之后
留下了道疤呀
我在想
下次应该
再多打开些吧
阳光下
那晶莹的
是眼底的浪花

2021.1.5 凌晨

写在2020年的尾巴

2021.jpg

每每静坐在屋子阅读,没有钟表的滴答,却更能感觉时间在指尖划过。时间是如此丝滑,怎么也抓不住,二十五岁的我,滑到了青春的尾巴。前几天周末去了一趟花市,路过百度大厦,故地重游甚是感慨,一幕幕宛如昨日。感觉自己真的是一个恋旧的人,别人说过的话语,当时的心情,甚至当时时间点都牢牢记在心上。也许生活就是流水,只有与人交流和人与人产生交集的种种瞬间才会在水面上引起一丝涟漪。

生活

周末我时常望着窗外,一年间草木荣枯一个轮回,我想人生活的意义在哪里。两点一线工作赚钱,吃喝拉撒一梦一醒,好像除却生死便再无什么大事。

生命本身或许是没有什么意义的,但是活下去,却能发现有趣的事情,如你遇见那花,如我遇见你。

也许要给生命一些意义就是遇见另一个生命吧,一生一代一双人,简简单单的生活,共度的余生,便是生活。

今年换了房子有一个大厨房,自然要利用起来,周末做做饭,享受下烹饪的乐趣,也是算把生活充实了一些。虽然有疫情的插曲,但是离自己的目标也是肉眼可见的接近,英语也要继续努力,不过内心也越来越想回天津,虽然岗位相比北京少太多,但要知道有一种东西叫归属感,有一种状态是工作与生活的平衡,希望能找到外企或者银行的岗位,如果有机会远程工作也是个不错的选择。

工作与技术 🌐

技术上今年我还是做了不少东西,看下面这密密麻麻的点点就知道了,在最忙的时候还在 Github 上为 antd 贡献了许多代码,技术文章也有十几篇。收获满满,也对得起我的付出。

屏幕快照 2020-12-07 下午2.22.30.png
屏幕快照 2020-12-07 下午2.23.01.png

理财 💴

整体大约 30% ,不慌不忙,继续加油

副业

安稳就没有自由,要自由就要历些危险

想要自由生活就必须折腾起来,工作可以是螺丝钉,但内心须有一颗成为火箭的心,即便是计算机行业重复性的工作也是比较多的,只有在自己的领域多探索,踮起脚尖看世界,才能看到更远的地方,如果如果连远方都看不到,更何谈到达。

今年接了一个外包,赚了个房租钱,算是迈出了第一步,明年也要继续积累人脉和经验。也许可以自己做一个网站,或一个 app 可能古诗词方向的,试试看~

明年规划

我想回天津了,我想买辆车,雪佛兰畅巡太好看了 😂

写在最后

祝福所有我今年遇见的人,和遇见我的人,希望你们明年身体康健,诸事顺遂~

往年的文章

2019 的最后一天 🌌