Skip to content
Latchkey

docs workflow (didi/mpx)

The docs workflow from didi/mpx, explained and optimized by Latchkey.

C

CI health: C - fair

Point runs-on at Latchkey and get run de-duplication, job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: didi/mpx.github/workflows/docs.ymlLicense Apache-2.0View source

What it does

This is the docs workflow from the didi/mpx repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: docs

on:
  push:
    branches:
      - master
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: technote-space/get-diff-action@v4
        with:
          PATTERNS: |
            +(docs|docs-vitepress)/**/*
            +(docs|docs-vitepress)/.*/**/*
      # vuepress生成最终文档
      - name: generate docs file
        if: env.GIT_DIFF
        run: |
          npm i
          npm run docs:build

      # 使用 https://github.com/appleboy/scp-action 进行部署,注意 strip_components 用于控制层级
      - name: Deploy to self-host server
        if: env.GIT_DIFF
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.DOCS_SERVER_HOST }}
          username: ${{ secrets.DOCS_SERVER_USER }}
          key: ${{ secrets.DOCS_SERVER_KEY }}
          command_timeout: "20m"
          source: "./docs-vitepress/.vitepress/dist/"
          strip_components: 4
          target: "${{ secrets.DOCS_SERVER_DIR }}"

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

name: docs
 
on:
  push:
    branches:
      - master
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  deploy:
    timeout-minutes: 30
    runs-on: latchkey-small
    steps:
      - uses: actions/checkout@v4
      - uses: technote-space/get-diff-action@v4
        with:
          PATTERNS: |
            +(docs|docs-vitepress)/**/*
            +(docs|docs-vitepress)/.*/**/*
      # vuepress生成最终文档
      - name: generate docs file
        if: env.GIT_DIFF
        run: |
          npm i
          npm run docs:build
 
      # 使用 https://github.com/appleboy/scp-action 进行部署,注意 strip_components 用于控制层级
      - name: Deploy to self-host server
        if: env.GIT_DIFF
        uses: appleboy/scp-action@master
        with:
          host: ${{ secrets.DOCS_SERVER_HOST }}
          username: ${{ secrets.DOCS_SERVER_USER }}
          key: ${{ secrets.DOCS_SERVER_KEY }}
          command_timeout: "20m"
          source: "./docs-vitepress/.vitepress/dist/"
          strip_components: 4
          target: "${{ secrets.DOCS_SERVER_DIR }}"
 

What changed

2 third-party actions are referenced by a movable tag. Pin them to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

This workflow runs 1 job per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow