소스 검색

fix(ci): add stricter linting settings and fix upload issues

jguer 5 년 전
부모
커밋
e7b1fe4d53
3개의 변경된 파일137개의 추가작업 그리고 38개의 파일을 삭제
  1. 6 6
      .github/workflows/docker-ci.yml
  2. 31 32
      .github/workflows/docker-multiarch-tag.yml
  3. 100 0
      .golangci.yml

+ 6 - 6
.github/workflows/docker-ci.yml

@@ -3,9 +3,9 @@ name: Build
 on:
   push:
     paths-ignore:
-    - 'doc/**'
-    - 'README.md'
-    - '.gitignore'
+      - "doc/**"
+      - "README.md"
+      - ".gitignore"
   pull_request:
 
 jobs:
@@ -16,10 +16,10 @@ jobs:
     container: samip537/archlinux:devel
     steps:
       - name: Checkout
-        uses: actions/checkout@v1
+        uses: actions/checkout@v2
       - name: Run Build and tests
-        run: | 
+        run: |
           pacman -Sy --noconfirm go
-          curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.23.6
+          curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.25.1
           ./bin/golangci-lint run ./...
           make test

+ 31 - 32
.github/workflows/docker-multiarch-tag.yml

@@ -4,40 +4,39 @@ on:
     branches:
       - master
 
-
 jobs:
   tag:
     name: Tag release
     runs-on: ubuntu-latest
     steps:
-    - uses: actions/checkout@v1
-    - uses: mathieudutour/github-tag-action@v4
-      id: tag_version
-      with:
-        github_token: ${{ secrets.GITHUB_TOKEN }}
-        tag_prefix: 'v'
-    - name: share variables
-      shell: bash
-      run: |
-        mkdir env
-        echo ${{ steps.tag_version.outputs.new_version }} > env/new_version
-        echo ${{ steps.tag_version.outputs.new_tag }} > env/new_tag
-        echo "${{ steps.tag_version.outputs.changelog }}" > env/changelog
-    - uses: actions/upload-artifact@v1
-      with:
-        name: env
-        path: env
+      - uses: actions/checkout@v2
+      - uses: mathieudutour/github-tag-action@v4
+        id: tag_version
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          tag_prefix: "v"
+      - name: share variables
+        shell: bash
+        run: |
+          mkdir env
+          echo ${{ steps.tag_version.outputs.new_version }} > env/new_version
+          echo ${{ steps.tag_version.outputs.new_tag }} > env/new_tag
+          echo "${{ steps.tag_version.outputs.changelog }}" > env/changelog
+      - uses: actions/upload-artifact@v1
+        with:
+          name: env
+          path: env
   build-releases:
     strategy:
       matrix:
-        arch: ['x86_64', 'armv7h', 'aarch64']
+        arch: ["x86_64", "armv7h", "aarch64"]
     name: Build ${{ matrix.arch }}
     runs-on: ubuntu-latest
     needs: [tag]
     steps:
       - name: Checkout code
-        uses: actions/checkout@v1
-      - uses: actions/download-artifact@v1
+        uses: actions/checkout@v2
+      - uses: actions/download-artifact@v2
         with:
           name: env
       - name: Read info
@@ -64,8 +63,8 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout code
-        uses: actions/checkout@master
-      - uses: actions/download-artifact@v1
+        uses: actions/checkout@v2
+      - uses: actions/download-artifact@v2
         with:
           name: env
       - name: Read info
@@ -75,13 +74,13 @@ jobs:
           echo ::set-output name=VERSION::$(cat env/new_version)
           echo ::set-output name=TAG::$(cat env/new_tag)
           echo ::set-output name=CHANGELOG::$(cat env/changelog)
-      - uses: actions/download-artifact@master
+      - uses: actions/download-artifact@v2
         with:
           name: yay_x86_64
-      - uses: actions/download-artifact@master
+      - uses: actions/download-artifact@v2
         with:
           name: yay_armv7h
-      - uses: actions/download-artifact@master
+      - uses: actions/download-artifact@v2
         with:
           name: yay_aarch64
       - name: Create Release
@@ -97,31 +96,31 @@ jobs:
           prerelease: false
       - name: Upload x86_64 asset
         id: upload-release-asset-x86_64
-        uses: actions/upload-release-asset@master
+        uses: actions/upload-release-asset@v1
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
           upload_url: ${{ steps.create_release.outputs.upload_url }}
-          asset_path: ./yay_x86_64/yay_${{ steps.tags.outputs.version }}_x86_64.tar.gz
+          asset_path: ./yay_${{ steps.tags.outputs.version }}_x86_64.tar.gz
           asset_name: yay_${{ steps.tags.outputs.version }}_x86_64.tar.gz
           asset_content_type: application/tar+gzip
       - name: Upload armv7h asset
         id: upload-release-asset-armv7h
-        uses: actions/upload-release-asset@master
+        uses: actions/upload-release-asset@v1
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
           upload_url: ${{ steps.create_release.outputs.upload_url }}
-          asset_path: ./yay_armv7h/yay_${{ steps.tags.outputs.version }}_armv7h.tar.gz
+          asset_path: ./yay_${{ steps.tags.outputs.version }}_armv7h.tar.gz
           asset_name: yay_${{ steps.tags.outputs.version }}_armv7h.tar.gz
           asset_content_type: application/tar+gzip
       - name: Upload aarch64 asset
         id: upload-release-asset-aarch64
-        uses: actions/upload-release-asset@master
+        uses: actions/upload-release-asset@v1
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
           upload_url: ${{ steps.create_release.outputs.upload_url }}
-          asset_path: ./yay_aarch64/yay_${{ steps.tags.outputs.version }}_aarch64.tar.gz
+          asset_path: ./yay_${{ steps.tags.outputs.version }}_aarch64.tar.gz
           asset_name: yay_${{ steps.tags.outputs.version }}_aarch64.tar.gz
           asset_content_type: application/tar+gzip

+ 100 - 0
.golangci.yml

@@ -0,0 +1,100 @@
+linters-settings:
+  dupl:
+    threshold: 100
+  funlen:
+    lines: 100
+    statements: 50
+  goconst:
+    min-len: 2
+    min-occurrences: 2
+  gocritic:
+    enabled-tags:
+      - diagnostic
+      - experimental
+      - opinionated
+      - performance
+      - style
+    disabled-checks:
+      - dupImport # https://github.com/go-critic/go-critic/issues/845
+      - ifElseChain
+      - octalLiteral
+      - whyNoLint
+      - wrapperFunc
+  gocyclo:
+    min-complexity: 15
+  goimports:
+    local-prefixes: github.com/Jguer/yay/v9
+  golint:
+    min-confidence: 0
+  gomnd:
+    settings:
+      mnd:
+        # don't include the "operation" and "assign"
+        checks: argument,case,condition,return
+  govet:
+    check-shadowing: true
+  lll:
+    line-length: 140
+  maligned:
+    suggest-new: true
+  misspell:
+    locale: US
+
+linters:
+  # please, do not use `enable-all`: it's deprecated and will be removed soon.
+  # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
+  disable-all: true
+  enable:
+    - bodyclose
+    - deadcode
+    - depguard
+    - dogsled
+    - dupl
+    - errcheck
+    - funlen
+    - gochecknoinits
+    - goconst
+    - gocritic
+    - gocyclo
+    - gofmt
+    - goimports
+    - golint
+    - gomnd
+    - goprintffuncname
+    - gosec
+    - gosimple
+    - govet
+    - ineffassign
+    - interfacer
+    - lll
+    - misspell
+    - nakedret
+    - rowserrcheck
+    - scopelint
+    - staticcheck
+    - structcheck
+    - stylecheck
+    - typecheck
+    - unconvert
+    - unparam
+    - unused
+    - varcheck
+    - whitespace
+
+    - godox
+    - maligned
+    - prealloc
+
+issues:
+  # Excluding configuration per-path, per-linter, per-text and per-source
+  exclude-rules:
+    - path: _test\.go
+      linters:
+        - gomnd
+
+run:
+  skip-dirs:
+    - test/testdata_etc
+    - internal/cache
+    - internal/renameio
+    - internal/robustio