github.com/oam-dev/kubevela@v1.9.11/.github/workflows/go.yml (about)

     1  name: Go
     2  
     3  on:
     4    push:
     5      branches:
     6        - master
     7        - release-*
     8    workflow_dispatch: {}
     9    pull_request:
    10      branches:
    11        - master
    12        - release-*
    13  
    14  permissions:  # added using https://github.com/step-security/secure-workflows
    15    contents: read
    16  
    17  env:
    18    # Common versions
    19    GO_VERSION: '1.19'
    20    GOLANGCI_VERSION: 'v1.49'
    21  
    22  jobs:
    23  
    24    detect-noop:
    25      runs-on: ubuntu-22.04
    26      outputs:
    27        noop: ${{ steps.noop.outputs.should_skip }}
    28      permissions:
    29        actions: write
    30      steps:
    31        - name: Detect No-op Changes
    32          id: noop
    33          uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf
    34          with:
    35            github_token: ${{ secrets.GITHUB_TOKEN }}
    36            paths_ignore: '["**.md", "**.mdx", "**.png", "**.jpg"]'
    37            do_not_skip: '["workflow_dispatch", "schedule", "push"]'
    38          continue-on-error: true
    39  
    40    staticcheck:
    41      runs-on: ubuntu-22.04
    42      needs: detect-noop
    43      if: needs.detect-noop.outputs.noop != 'true'
    44  
    45      steps:
    46        - name: Setup Go
    47          uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491
    48          with:
    49            go-version: ${{ env.GO_VERSION }}
    50  
    51        - name: Checkout
    52          uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
    53          with:
    54            submodules: true
    55  
    56        - name: Static Check
    57          run: make staticcheck
    58  
    59        - name: License Header Check
    60          run: make check-license-header
    61  
    62    lint:
    63      runs-on: ubuntu-22.04
    64      needs: detect-noop
    65      if: needs.detect-noop.outputs.noop != 'true'
    66      permissions:
    67        contents: read  # for actions/checkout to fetch code
    68        pull-requests: read  # for golangci/golangci-lint-action to fetch pull requests
    69  
    70      steps:
    71        - name: Setup Go
    72          uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491
    73          with:
    74            go-version: ${{ env.GO_VERSION }}
    75  
    76        - name: Checkout
    77          uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
    78          with:
    79            submodules: true
    80  
    81        # This action uses its own setup-go, which always seems to use the latest
    82        # stable version of Go. We could run 'make lint' to ensure our desired Go
    83        # version, but we prefer this action because it leaves 'annotations' (i.e.
    84        # it comments on PRs to point out linter violations).
    85        - name: Lint
    86          uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0
    87          with:
    88            version: ${{ env.GOLANGCI_VERSION }}
    89  
    90    check-diff:
    91      runs-on: ubuntu-22.04
    92      needs: detect-noop
    93      if: needs.detect-noop.outputs.noop != 'true'
    94  
    95      steps:
    96        - name: Checkout
    97          uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
    98          with:
    99            submodules: true
   100  
   101        - name: Setup Go
   102          uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491
   103          with:
   104            go-version: ${{ env.GO_VERSION }}
   105  
   106        - name: Setup node
   107          uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
   108          with:
   109            node-version: '14'
   110  
   111        - name: Cache Go Dependencies
   112          uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
   113          with:
   114            path: .work/pkg
   115            key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
   116            restore-keys: ${{ runner.os }}-pkg-
   117  
   118        - name: Setup KinD
   119          run: |
   120            go install sigs.k8s.io/kind@v0.19.0
   121            kind delete cluster --name kind || true
   122            kind create cluster --name kind --image=kindest/node:v1.26.4 --kubeconfig ~/.kube/config
   123  
   124        - name: Run cross-build
   125          run: make cross-build
   126  
   127        - name: Check Diff
   128          run: |
   129            export PATH=$(pwd)/bin/:$PATH
   130            make check-diff
   131                
   132        - name: Cleanup binary
   133          run: make build-cleanup
   134  
   135    check-windows:
   136      runs-on: windows-latest
   137      needs: detect-noop
   138      if: needs.detect-noop.outputs.noop != 'true'
   139  
   140      steps:
   141        - name: Checkout
   142          uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
   143          with:
   144            submodules: true
   145  
   146        - name: Setup Go
   147          uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491
   148          with:
   149            go-version: ${{ env.GO_VERSION }}
   150  
   151        - name: Cache Go Dependencies
   152          uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
   153          with:
   154            path: .work/pkg
   155            key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }}
   156            restore-keys: ${{ runner.os }}-pkg-
   157  
   158        - name: Run Build CLI
   159          run: make vela-cli
   160  
   161        - name: Run CLI for version
   162          shell: cmd
   163          run: |
   164            move .\bin\vela .\bin\vela.exe
   165            .\bin\vela.exe version
   166  
   167    check-core-image-build:
   168      runs-on: ubuntu-22.04
   169      needs: detect-noop
   170      if: needs.detect-noop.outputs.noop != 'true'
   171      steps:
   172        - name: Checkout
   173          uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
   174          with:
   175            submodules: true
   176        - name: Set up QEMU
   177          uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
   178        - name: Set up Docker Buildx
   179          uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
   180        - name: Build Test for vela core
   181          uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
   182          with:
   183            context: .
   184            file: Dockerfile
   185            platforms: linux/amd64,linux/arm64
   186  
   187    check-cli-image-build:
   188      runs-on: ubuntu-22.04
   189      needs: detect-noop
   190      if: needs.detect-noop.outputs.noop != 'true'
   191      steps:
   192        - name: Checkout
   193          uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608
   194          with:
   195            submodules: true
   196        - name: Set up QEMU
   197          uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
   198        - name: Set up Docker Buildx
   199          uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
   200        - name: Build Test for CLI
   201          uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0
   202          with:
   203            context: .
   204            file: Dockerfile.cli