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