5
说一下家里的流水线
source link: https://www.bboy.app/2023/04/12/%E8%AF%B4%E4%B8%80%E4%B8%8B%E5%AE%B6%E9%87%8C%E7%9A%84%E6%B5%81%E6%B0%B4%E7%BA%BF/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
说一下家里的流水线
April 12, 2023
简单的介绍下家里的代码发布流程
目前CI使用的是gitea action CD 使用的是argocd 然后最终项目会在k8s上跑起来
下面是gitea action 的yaml,可以参考下
name: ci
on:
push:
branches:
- 'master'
env:
APP_NAME: app
DING_SECRET: xxxx
DING_BASE_URL: xxxx
YAML_REPO: git.xxxxx.com/xxxxx/kubernetes-yaml
YAML_PATH: kubernetes-yaml/k8s/${{ env.APP_NAME }}
REGISTRY_URL: git.xxxxx.com
REGISTRY_USER: xxxxx
REGISTRY_PASSWORD: xxxxx
IMAGE_NAME: ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_USER }}/${{ env.APP_NAME }}
GIT_EMAIL: [email protected]
GIT_USER: xxxxxx
GIT_PASSWORD: xxxxxx
ARGOCD_USER: admin
ARGOCD_PASS: xxxx
ARGOCD_URL: argocd.xxxxx.com
jobs:
docker:
runs-on: docker
steps:
# Set up Docker Buildx
- name: Set up Docker Buildx
uses: bboysoul/setup-buildx-action@v2
# Login to Docker Hub
- name: Login to Docker Hub
uses: bboysoul/login-action@v2
with:
registry: ${{ env.REGISTRY_URL }}
username: ${{ env.REGISTRY_USER }}
password: ${{ env.REGISTRY_PASSWORD }}
# Build and push
- name: Build and push
uses: bboysoul/build-push-action@v4
with:
push: true
tags: |
${{ env.IMAGE_NAME }}:latest
${{ env.IMAGE_NAME }}:${{ github.sha }}
cache-from: type=local,src=/root/.buildx-cache
cache-to: type=local,dest=/root/.buildx-cache,mode=max
# change images
- name: update images
run: |
git config --global user.email "${{ env.GIT_EMAIL }}"
git config --global user.name "${{ env.GIT_USER }}"
git clone https://${{ env.GIT_USER }}:${{ env.GIT_PASSWORD }}@${{ env.YAML_REPO }}.git
cd ${{ env.YAML_PATH }}
kustomize edit set image ${{ env.IMAGE_NAME }}:${{ github.sha }}
git add .
git commit -m "set image ${{ env.IMAGE_NAME }}:${{ github.sha }}"
git push
# argocd apply
- name: argocd apply
run: |
argocd login --insecure --username ${{ env.ARGOCD_USER }} --password ${{ env.ARGOCD_PASS }} ${{ env.ARGOCD_URL }}
argocd app sync ${{ env.APP_NAME }}
argocd app wait --timeout 300 ${{ env.APP_NAME }}
# dingtalk alert
- name: dingtalk alert success
uses: bboysoul/dingding-alert-action@main
if: ${{ success() }}
env:
DING_SECRET: ${{ env.DING_SECRET }}
DING_BASE_URL: ${{ env.DING_BASE_URL }}
TITLE: "镜像编译"
MSG: "镜像编译成功"
- name: dingtalk alert failed
uses: bboysoul/dingding-alert-action@main
if: ${{ failure() }}
env:
DING_SECRET: ${{ env.DING_SECRET }}
DING_BASE_URL: ${{ env.DING_BASE_URL }}
TITLE: "镜像编译"
MSG: "镜像编译失败"
APP_NAME其实就是项目的名字,其他的貌似也没有什么好说的,如果有好的优化点,可以留言
欢迎关注我的博客www.bboy.app
Have Fun
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK