From 5da302c3a6b209f2b998313461b11e3f079db91d Mon Sep 17 00:00:00 2001 From: Clay Benson Date: Wed, 20 Sep 2023 12:22:55 -0400 Subject: [PATCH] [EASI-3172] Upgrade go from 1.18 to 1.21 (#2188) * Upgrade go from 1.18 to 1.21 * Update comments in .golangci.yml * Update dev env docs to reflect go version --- .github/workflows/build_application_images.yml | 3 +-- .github/workflows/deploy_to_environment.yml | 1 - .github/workflows/run_tests.yml | 5 ++--- .golangci.yml | 9 ++++++--- .pre-commit-config.yaml | 4 ++-- Dockerfile | 2 +- Dockerfile.cypress | 2 +- Dockerfile.db_seed | 2 +- docker-compose.override.yml | 17 ++++++++++++++++- docs/dev_environment_setup.md | 4 ++-- go.mod | 2 +- go.sum | 10 ++++++++++ 12 files changed, 43 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build_application_images.yml b/.github/workflows/build_application_images.yml index 053748c742..8f572d8049 100644 --- a/.github/workflows/build_application_images.yml +++ b/.github/workflows/build_application_images.yml @@ -5,7 +5,6 @@ on: env: EASI_APP_NODE_VERSION: "16.14.0" - EASI_APP_GO_VERSION: "1.18.3" GIT_HASH: ${{ github.event.pull_request.head.sha || github.sha }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} @@ -29,7 +28,7 @@ jobs: - name: Set up go uses: actions/setup-go@v4 with: - go-version: ${{ env.EASI_APP_GO_VERSION }} + go-version-file: 'go.mod' - name: Install yarn dependencies run: yarn install --frozen-lockfile - name: Announce failure diff --git a/.github/workflows/deploy_to_environment.yml b/.github/workflows/deploy_to_environment.yml index 308f97d79c..4d84fdb884 100644 --- a/.github/workflows/deploy_to_environment.yml +++ b/.github/workflows/deploy_to_environment.yml @@ -12,7 +12,6 @@ on: env: EASI_APP_NODE_VERSION: "16.14.0" - EASI_APP_GO_VERSION: "1.18.3" GIT_HASH: ${{ github.event.pull_request.head.sha || github.sha }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} ENV: ${{ inputs.env }} diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 38510047f5..3827f74408 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -10,7 +10,6 @@ on: env: EASI_APP_NODE_VERSION: "16.14.0" - EASI_APP_GO_VERSION: "1.18.3" GIT_HASH: ${{ github.event.pull_request.head.sha || github.sha }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} DOCKER_BUILDKIT: 1 @@ -34,7 +33,7 @@ jobs: - name: Set up go uses: actions/setup-go@v4 with: - go-version: ${{ env.EASI_APP_GO_VERSION }} + go-version-file: 'go.mod' - name: Login to Docker Hub uses: docker/login-action@v3 with: @@ -179,7 +178,7 @@ jobs: - name: Set up go uses: actions/setup-go@v4 with: - go-version: ${{ env.EASI_APP_GO_VERSION }} + go-version-file: 'go.mod' # go-swagger is used for pre-commit hooks - name: Install go-swagger id: install-go-swagger diff --git a/.golangci.yml b/.golangci.yml index 7e97e81c39..1b327a2abf 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,4 +1,10 @@ linters-settings: + gosec: + # Currently excluding rule G602 due to issue slowing down execution + # https://github.com/securego/gosec/issues/1010 + # If we ever re-enable this rule, make sure https://github.com/securego/gosec/issues/1005 is also fixed + excludes: + - "G602" govet: check-shadowing: true settings: @@ -21,10 +27,7 @@ linters: - gofmt - goimports - govet - - varcheck - typecheck - - structcheck - - deadcode - ineffassign - revive - staticcheck diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 72afc80862..c479bbb8ae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -44,11 +44,11 @@ repos: )$ - repo: https://github.com/golangci/golangci-lint - rev: v1.51.0 + rev: v1.54.2 hooks: - id: golangci-lint name: Lint go files - args: ['--concurrency', '-1'] # Run with all CPUs + args: ['--concurrency', '-1', '-v'] # Run with all CPUs - repo: local hooks: diff --git a/Dockerfile b/Dockerfile index 79ef74937c..7d821ccfaa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.18.3 AS base +FROM golang:1.21 AS base WORKDIR /easi/ diff --git a/Dockerfile.cypress b/Dockerfile.cypress index 890eea0848..827073769c 100644 --- a/Dockerfile.cypress +++ b/Dockerfile.cypress @@ -1,4 +1,4 @@ -FROM golang:1.18.3 AS base +FROM golang:1.21 AS base WORKDIR /easi/ diff --git a/Dockerfile.db_seed b/Dockerfile.db_seed index 11d3001ed4..f7fd1f2a63 100644 --- a/Dockerfile.db_seed +++ b/Dockerfile.db_seed @@ -1,4 +1,4 @@ -FROM golang:1.18.3 AS base +FROM golang:1.21 AS base WORKDIR /easi/ diff --git a/docker-compose.override.yml b/docker-compose.override.yml index fb61945320..3e85683374 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -19,7 +19,22 @@ services: target: dev image: easi-backend:latest volumes: - - ./:/easi + # Volume mounting the entire './' directory is dangerous, as it mounts OS-specific folders (and things like .git) + # So instead, only volume mount things we need! + # + # Note, however, that MOST of the files that we care about are copied in the Dockerfile for us, we only really need to copy over the things that + # we want to be able to change on the fly in local developmement, like our ./pkg/ directory & Air configs. + # This means that editing things like your go.mod/go.sum and ./cmd/ directory WILL require a rebuild of the image, and won't hot reload with Air. + - ./pkg/:/easi/pkg/ + - ./cmd/:/easi/cmd/ # Go build uses ./cmd as well + - ./.air.conf:/easi/.air.conf + - ./.airDebug.conf:/easi/.airDebug.conf + - ./.airDebugWait.conf:/easi/.airDebugWait.conf + - /easi/tmp/air/ # This should match .air.conf's tmp_dir. Note that this isn't a volume mount to a local file/folder, but just an empty volume for Air to use. + # The only reason we need to mount Cypress here is because the `flagdata.json` (used when FLAG_SOURCE=FILE) happens to live in the ./cypress/ directory. + # This is not ideal (perhaps it should be in the root directory?), but for now we just volume mount cypress as a workaround. + # NOTE: This is only really the case if you set FLAG_SOURCE=FILE locally, or (more importantly) in ./docker-compose-cypress_ci.yml + - ./cypress/:/easi/cypress/ entrypoint: air ${AIR_CONFIG} ports: - 8080:8080 diff --git a/docs/dev_environment_setup.md b/docs/dev_environment_setup.md index 26e5e42872..3dd3803310 100644 --- a/docs/dev_environment_setup.md +++ b/docs/dev_environment_setup.md @@ -94,10 +94,10 @@ Now you will need to start the Docker service: run Spotlight and type in ## Go **MacOS:** -Install the latest version of Go with `brew install go`. +Install the version of Go that matches what's in our [Dockerfile](../Dockerfile) (currently go 1.21) with `brew install go@1.21`. **Windows+WSL:** -- Download the `.tar.gz` file for the latest version of Go for Linux from [the official Go site](https://golang.org/doc/install), making sure to save it to the Ubuntu filesystem. The easiest way to do this is to copy the download link, then use `wget` to download it on the command line, i.e. `wget https://golang.org/dl/go1.17.3.linux-amd64.tar.gz`. This will download the `.tar.gz` to the current directory. +- Download the `.tar.gz` file for the correct version of Go (matches what's in our [Dockerfile](../Dockerfile) - currently go 1.21) for Linux from [the official Go site](https://golang.org/doc/install), making sure to save it to the Ubuntu filesystem. The easiest way to do this is to copy the download link, then use `wget` to download it on the command line, i.e. `wget https://go.dev/dl/go1.21.1.linux-amd64.tar.gz`. This will download the `.tar.gz` to the current directory. - From the directory containing the `.tar.gz` file, extract it to `/usr/local/go`, i.e. with `sudo tar -C /usr/local -xzf go1.17.3.linux-amd64.tar.gz`. - Add `/usr/local/go/bin` to your `PATH`. The easiest way to do this is to add the following to your `~/.bashrc` file: diff --git a/go.mod b/go.mod index 87984c383a..016d0c40b8 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/cmsgov/easi-app -go 1.18 +go 1.21 require ( github.com/99designs/gqlgen v0.17.37 diff --git a/go.sum b/go.sum index eedfbef7a0..361f4dbd56 100644 --- a/go.sum +++ b/go.sum @@ -49,6 +49,7 @@ github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVb github.com/alecthomas/jsonschema v0.0.0-20211228220459-151e3c21f49d h1:4BQNwS4T13UU3Yee4GfzZH3Q9SNpKeJvLigfw8fDjX0= github.com/alecthomas/jsonschema v0.0.0-20211228220459-151e3c21f49d/go.mod h1:/n6+1/DWPltRLWL/VKyUxg6tzsl5kHUCcraimt4vr60= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= @@ -59,6 +60,7 @@ github.com/aws/aws-sdk-go v1.44.209/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8 github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= @@ -93,6 +95,7 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a h1:yDWHCSQ40h88yih2JAcL6Ls/kVkSE8GFACTGVnMPruw= github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a/go.mod h1:7Ga40egUymuWXxAe151lTNnCv97MddSOVsjpPPkityA= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -209,6 +212,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -283,6 +287,7 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -367,11 +372,13 @@ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/samber/lo v1.37.0 h1:XjVcB8g6tgUp8rsPsJ2CvhClfImrpL04YpQHXeHPhRw= github.com/samber/lo v1.37.0/go.mod h1:9vaz2O4o8oOnK23pd2TrXufcbdbJIa3b6cstBWKpopA= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -443,12 +450,14 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= @@ -801,6 +810,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ghodss/yaml.v1 v1.0.0 h1:JlY4R6oVz+ZSvcDhVfNQ/k/8Xo6yb2s1PBhslPZPX4c= gopkg.in/ghodss/yaml.v1 v1.0.0/go.mod h1:HDvRMPQLqycKPs9nWLuzZWxsxRzISLCRORiDpBUOMqg=