簡體   English   中英

使用自托管運行器在 github 操作中並行運行 lint 和 lint 測試

[英]Run lint and lint tests in parallel in github actions with self hosted runner

我有下面的管道,在這里我想並行運行 lint 和 lint-test。 早些時候我有一份工作有多個步驟,但我檢查過如果我們創建不同的工作那么它可以並行運行。 我有一個跑步者,但它仍然一個接一個地跑着。這是一段代碼

name: CI
defaults:
  run:
    working-directory: ./
on:
  push:
    tags:
      - v*
  pull_request:
    branches:
      - "**"
env:
  AZURE_REGISTRY_LOGIN_SERVER: ${{ secrets.AZURE_REGISTRY_LOGIN_SERVER }}

jobs:
  build:
    name: 'Setup and Build'
    environment: non-prod
    runs-on: ["self-hosted", "linux", "X64", "myr"]
    outputs:
      version: ${{ steps.setbuildenv.outputs.VERSION }}
      module: ${{ steps.setbuildenv.outputs.MODULE }}

    steps:
    - name: Checkout
      uses: actions/checkout@v1
    - id: setbuildenv
      env:
        GITHUB_SHA: ${{ github.sha }}
        GITHUB_REF: ${{ github.ref }}
        GITHUB_REPO: ${{ github.repository }}
      run: |
        MODULE=$(echo -n ${GITHUB_REPO} | sed -e 's/.*\///')
        if [[ $GITHUB_REF =~ refs/tags ]]; then
          VERSION=$(echo -n ${GITHUB_REF} | sed -e 's/refs\/tags\///')
        else
          VERSION=${GITHUB_SHA:0:7}
        fi
        echo "VERSION=${VERSION}" >> $GITHUB_ENV
        echo "::set-output name=VERSION::${VERSION}"
        echo "MODULE=${MODULE}" >> $GITHUB_ENV
        echo "::set-output name=MODULE::${MODULE}"
    - name: Build
      env:
        GIT_TOKEN: ${{ secrets.PAT }}
      run: |
        docker build -t ${{ env.AZURE_REGISTRY_LOGIN_SERVER }}/${MODULE}:${VERSION} --build-arg GIT_TOKEN="${GIT_TOKEN}" -f container/smpl/Dockerfile .
        docker build -t ${{ env.AZURE_REGISTRY_LOGIN_SERVER }}/${MODULE}-tools:${VERSION} -f container/smpl/Dockerfile .
  lint:
    name: 'Lint'
    needs: build
    environment: non-prod
    runs-on: ["self-hosted", "linux", "X64", "myr"]
    steps:
    - name: Lint
      run: |
        docker run --rm ${{ env.AZURE_REGISTRY_LOGIN_SERVER }}/${{ needs.build.outputs.module }}:${{ needs.build.outputs.version }} make lint
  lint-tests:
    name: 'Lint tests'
    needs: build
    environment: non-prod
    runs-on: ["self-hosted", "linux", "X64", "myr"]
    steps:
    - name: Lint Tests
      run: |
          docker run --rm ${{ env.AZURE_REGISTRY_LOGIN_SERVER }}/${{ needs.build.outputs.module }}:${{ needs.build.outputs.version }} make lint-tests
.
.
.
.
.
.

  cleanup:
    name: 'Run Cleanup'
    needs: push
    environment: non-prod
    runs-on: ["self-hosted", "linux", "X64", "myr"]
    steps:
    - name: Cleanup
      run: |
        docker rmi ${{ env.AZURE_REGISTRY_LOGIN_SERVER }}/${{ needs.build.outputs.module }}:${{ needs.build.outputs.version }}
        docker rmi ${{ env.AZURE_REGISTRY_LOGIN_SERVER }}/${{ needs.build.outputs.module }}-tools:${{ needs.build.outputs.version }}

附上它的外觀圖片

在此處輸入圖像描述

如何使用自托管運行器並行執行 lint 和 lint 測試?

一個 GitHub runner 一次只能運行一個job。 因此,您需要運行多個運行器runs-on要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM