diff --git a/.github/workflows/changelog-enforcer.yml b/.github/workflows/changelog-enforcer.yml index 92b1c95be..de56dca7e 100644 --- a/.github/workflows/changelog-enforcer.yml +++ b/.github/workflows/changelog-enforcer.yml @@ -8,7 +8,7 @@ jobs: changelog: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.2 + - uses: actions/checkout@v4.1.6 - uses: dangoslen/changelog-enforcer@v3 with: changeLogPath: 'CHANGELOG.md' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 6a8c01875..2ed568e60 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 with: # We must fetch at least the immediate parents so that if this is # a pull request then we can checkout the head. diff --git a/.github/workflows/continuous-integration-workflow.yml b/.github/workflows/continuous-integration-workflow.yml index 907bcad8e..56ea08249 100644 --- a/.github/workflows/continuous-integration-workflow.yml +++ b/.github/workflows/continuous-integration-workflow.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Build UBI8 docker image run: | @@ -27,7 +27,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Build UBI8 docker image run: | ./.github/workflows/build-docker-image.sh \ @@ -56,7 +56,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Check shell scripts run: | @@ -72,7 +72,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Check shell scripts run: | @@ -88,7 +88,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Setup Go 1.18 uses: actions/setup-go@v5 @@ -128,7 +128,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Check shell scripts run: | @@ -145,7 +145,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Check jsl expectations run: | @@ -163,7 +163,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4.1.2 + uses: actions/checkout@v4.1.6 - name: Setup Go 1.18 uses: actions/setup-go@v5 @@ -184,7 +184,7 @@ jobs: exit 1 - name: Verify all Go tests pass linting - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v6 with: version: v1.49.0 working-directory: tests @@ -207,7 +207,7 @@ jobs: # run: jq . <<< "${GITHUB_CONTEXT}" # - # name: Checkout repository -# uses: actions/checkout@v4.1.2 +# uses: actions/checkout@v4.1.6 # with: # fetch-depth: 0 # path: 'ods-core' diff --git a/CHANGELOG.md b/CHANGELOG.md index aaa2abc6f..ade0de9e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,20 @@ ## Unreleased +### Added + +### Changed + ### Fixed +## [4.5.0] - 2024-06-06 + ### Added +- Add availability check for DocGen pod ([#1277](https://github.com/opendevstack/ods-core/pull/1277)) ### Changed +- Update SonarQube to 9.9.5 and configure resources for Nexus and Sonarqube in ods-configuration ([#1283](https://github.com/opendevstack/ods-core/pull/1283)) +- Update Nexus to 3.68.1-java11 to address a critical vulnerability ([#1286](https://github.com/opendevstack/ods-core/pull/1286)) ## [4.4.0] - 2024-04-22 diff --git a/configuration-sample/ods-core.env.sample b/configuration-sample/ods-core.env.sample index e75a7ba51..a381f39e0 100644 --- a/configuration-sample/ods-core.env.sample +++ b/configuration-sample/ods-core.env.sample @@ -45,8 +45,8 @@ ODS_BITBUCKET_PROJECT=opendevstack # Nexus base image # See Dockerhub https://hub.docker.com/r/sonatype/nexus3/tags. # Officially supported is: -# - 3.67.1-java11 -NEXUS_IMAGE_TAG=3.67.1-java11 +# - 3.68.1-java11 +NEXUS_IMAGE_TAG=3.68.1-java11 # Nexus host without protocol. # The domain should be equal to OPENSHIFT_APPS_BASEDOMAIN (see below). @@ -71,6 +71,16 @@ NEXUS_AUTH=developer:changeme # See https://help.sonatype.com/en/sonatype-nexus-repository-system-requirements.html NEXUS_JVM_PARAMS="-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" +# Nexus memory and CPU resources +NEXUS_CPU_REQUEST=200m +NEXUS_MEMORY_REQUEST=3Gi +NEXUS_CPU_LIMIT=1 +NEXUS_MEMORY_LIMIT=5Gi + +# Nexus data and backup capacity +NEXUS_DATA_CAPACITY=60Gi +NEXUS_DATA_BACKUP_CAPACITY=10Gi + ############# # SonarQube # ############# @@ -125,7 +135,27 @@ SONAR_EDITION=community # See Dockerhub https://hub.docker.com/_/sonarqube/tags # Officially supported is: # - 9.9 (LTS release) -SONAR_VERSION=9.9.4 +SONAR_VERSION=9.9.5 + +# SonarQube memory and CPU resources +SONARQUBE_CPU_REQUEST=200m +SONARQUBE_MEMORY_REQUEST=2Gi +SONARQUBE_CPU_LIMIT=1 +SONARQUBE_MEMORY_LIMIT=4Gi + +# SonarQube data and backup capacity +SONARQUBE_DATA_CAPACITY=2Gi +SONARQUBE_EXTENSIONS_CAPACITY=1Gi + +# SonarQube database memory and CPU resources +SONARQUBE_DB_CPU_REQUEST=100m +SONARQUBE_DB_MEMORY_REQUEST=256Mi +SONARQUBE_DB_CPU_LIMIT=1 +SONARQUBE_DB_MEMORY_LIMIT=512Mi + +# SonarQube database and backup capacity +SONARQUBE_DB_CAPACITY=2Gi +SONARQUBE_DB_BACKUP_CAPACITY=1Gi ######### # Jira # diff --git a/jenkins/webhook-proxy/main.go b/jenkins/webhook-proxy/main.go index df6f58b3a..e14e324da 100644 --- a/jenkins/webhook-proxy/main.go +++ b/jenkins/webhook-proxy/main.go @@ -101,7 +101,8 @@ type Client interface { GetPipeline(e *Event) (bool, []byte, error) CreateOrUpdatePipeline(exists bool, tmpl *template.Template, e *Event, data BuildConfigData) (int, error) DeletePipeline(e *Event) error - CheckAvailability(e *Event) + CheckJenkinsAvailability(e *Event) + CheckDocGenAvailability(e *Event) } type ocClient struct { @@ -584,7 +585,8 @@ func (c *ocClient) Forward(e *Event, triggerSecret string) (int, []byte, error) ) log.Println(e.RequestID, "Forwarding to", url) - c.CheckAvailability(e) + c.CheckJenkinsAvailability(e) + c.CheckDocGenAvailability(e) p := struct { Env []EnvPair `json:"env"` @@ -617,7 +619,8 @@ func (c *ocClient) CreateOrUpdatePipeline(exists bool, tmpl *template.Template, return 500, err } - c.CheckAvailability(e) + c.CheckJenkinsAvailability(e) + c.CheckDocGenAvailability(e) url := fmt.Sprintf( "%s/namespaces/%s/buildconfigs", @@ -660,7 +663,8 @@ func (c *ocClient) DeletePipeline(e *Event) error { e.Pipeline, ) - c.CheckAvailability(e) + c.CheckJenkinsAvailability(e) + c.CheckDocGenAvailability(e) req, _ := http.NewRequest( "DELETE", @@ -685,7 +689,7 @@ func (c *ocClient) DeletePipeline(e *Event) error { } // Check that Jenkins is up in case the service is idle in OpenShift. -func (c *ocClient) CheckAvailability(e *Event) { +func (c *ocClient) CheckJenkinsAvailability(e *Event) { url := fmt.Sprintf( "http://jenkins.%s.svc.cluster.local", e.Namespace, @@ -709,6 +713,31 @@ func (c *ocClient) CheckAvailability(e *Event) { } } +// Check that DocGen is up in case the service is idle in OpenShift. +func (c *ocClient) CheckDocGenAvailability(e *Event) { + url := fmt.Sprintf( + "http://docgen.%s:8080", + e.Namespace, + ) + req, _ := http.NewRequest( + "GET", + url, + nil, + ) + + res, err := c.do(req) + + if err != nil { + log.Println(e.RequestID, "DocGen not reachable, if idled it will scale up in namespace", e.Namespace) + } else { + if res.StatusCode == 200 { + log.Println(e.RequestID, "DocGen available in namespace", e.Namespace) + } else { + log.Println(e.RequestID, "DocGen not available, status code is", res.StatusCode) + } + } +} + // GetPipeline determines whether the pipeline corresponding to the given // event already exists. func (c *ocClient) GetPipeline(e *Event) (bool, []byte, error) { diff --git a/jenkins/webhook-proxy/main_test.go b/jenkins/webhook-proxy/main_test.go index e8e0e79c7..05e2eb418 100644 --- a/jenkins/webhook-proxy/main_test.go +++ b/jenkins/webhook-proxy/main_test.go @@ -198,7 +198,10 @@ func (c *mockClient) DeletePipeline(e *Event) error { c.Event = e return nil } -func (c *mockClient) CheckAvailability(e *Event) { +func (c *mockClient) CheckJenkinsAvailability(e *Event) { + c.Event = e +} +func (c *mockClient) CheckDocGenAvailability(e *Event) { c.Event = e } diff --git a/nexus/chart/Chart.yaml b/nexus/chart/Chart.yaml index 8737a070a..207e5a7f2 100644 --- a/nexus/chart/Chart.yaml +++ b/nexus/chart/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.0.0 +version: 1.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "3.67.1-java11" +appVersion: "3.68.1-java11" diff --git a/nexus/chart/templates/pvc-data.yml b/nexus/chart/templates/pvc-data.yml index 1c1c1be71..7f4917759 100644 --- a/nexus/chart/templates/pvc-data.yml +++ b/nexus/chart/templates/pvc-data.yml @@ -13,6 +13,6 @@ spec: - ReadWriteOnce resources: requests: - storage: 60Gi + storage: {{ .Values.nexus.pvcDataCapacity }} storageClassName: {{ .Values.global.storageClassData }} volumeMode: Filesystem diff --git a/nexus/chart/templates/pvc-db-backup.yml b/nexus/chart/templates/pvc-db-backup.yml index ee9355c24..1bf111a3a 100644 --- a/nexus/chart/templates/pvc-db-backup.yml +++ b/nexus/chart/templates/pvc-db-backup.yml @@ -13,6 +13,6 @@ spec: - ReadWriteOnce resources: requests: - storage: 10Gi + storage: {{ .Values.nexus.pvcDataBackupCapacity }} storageClassName: {{ .Values.global.storageClassData }} volumeMode: Filesystem diff --git a/nexus/chart/values.yaml.template b/nexus/chart/values.yaml.template index 667ac4959..ffbb361b5 100644 --- a/nexus/chart/values.yaml.template +++ b/nexus/chart/values.yaml.template @@ -15,10 +15,12 @@ global: nexusDockerGroup: 'docker-group' nexusJvmParams: $NEXUS_JVM_PARAMS nexus: - cpuRequest: 200m - cpuLimit: 1 - memRequest: 2Gi - memLimit: 4Gi + cpuRequest: $NEXUS_CPU_REQUEST + cpuLimit: $NEXUS_CPU_LIMIT + memRequest: $NEXUS_MEMORY_REQUEST + memLimit: $NEXUS_MEMORY_LIMIT + pvcDataCapacity: $NEXUS_DATA_CAPACITY + pvcDataBackupCapacity: $NEXUS_DATA_BACKUP_CAPACITY buildConfig: cpuRequest: 200m cpuLimit: 1 diff --git a/scripts/migrate-sonar-users.sh b/scripts/migrate-sonar-users.sh index a20681284..ee17f6f9b 100644 --- a/scripts/migrate-sonar-users.sh +++ b/scripts/migrate-sonar-users.sh @@ -77,11 +77,11 @@ if [ -f "${ODS_CONFIGURATION_DIR}/ods-core.env" ]; then fi -Email_list=$( curl ${INSECURE} ${SONAR_URL}/api/users/search -u admin:${SONAR_ADMIN_TOKEN} | jq .users | grep login | grep @ | tr -d '"' | tr -d "," | cut -f2 -d ":" ) +Email_list=$( curl ${INSECURE} ${SONARQUBE_URL}/api/users/search -u ${SONAR_ADMIN_USERNAME}:${SONAR_ADMIN_PASSWORD} | jq .users | grep login | grep @ | tr -d '"' | tr -d "," | cut -f2 -d ":" ) email_list_array=($Email_list) for email in "${email_list_array[@]}" do - curl ${INSECURE} -X POST -sSf -u admin:${SONAR_ADMIN_TOKEN} "${SONAR_URL}/api/users/update_identity_provider?newExternalProvider=saml&login=${email}" > /dev/null + curl ${INSECURE} -X POST -sSf -u ${SONAR_ADMIN_USERNAME}:${SONAR_ADMIN_PASSWORD} "${SONARQUBE_URL}/api/users/update_identity_provider?newExternalProvider=saml&login=${email}" > /dev/null echo "User ${email} migrated to Saml" done diff --git a/sonarqube/chart/Chart.yaml b/sonarqube/chart/Chart.yaml index 080ee4f65..67e524ece 100644 --- a/sonarqube/chart/Chart.yaml +++ b/sonarqube/chart/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.0.0 +version: 1.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "9.9.4" +appVersion: "9.9.5" diff --git a/sonarqube/chart/templates/pvc-extensions.yaml b/sonarqube/chart/templates/pvc-extensions.yaml index 5a3da8ab7..7057b48dd 100644 --- a/sonarqube/chart/templates/pvc-extensions.yaml +++ b/sonarqube/chart/templates/pvc-extensions.yaml @@ -13,6 +13,6 @@ spec: - ReadWriteOnce resources: requests: - storage: 1Gi + storage: {{ .Values.sonarqube.pvcExtensionsCapacity }} storageClassName: {{ .Values.global.storageClassData }} volumeMode: Filesystem diff --git a/sonarqube/chart/templates/pvc-postgresql-backup.yaml b/sonarqube/chart/templates/pvc-postgresql-backup.yaml index 4cc73b5ad..dbe622a94 100644 --- a/sonarqube/chart/templates/pvc-postgresql-backup.yaml +++ b/sonarqube/chart/templates/pvc-postgresql-backup.yaml @@ -13,6 +13,6 @@ spec: - ReadWriteOnce resources: requests: - storage: 1Gi + storage: {{ .Values.postgresql.pvcDatabaseBackupCapacity }} storageClassName: {{ .Values.global.storageClassData }} volumeMode: Filesystem diff --git a/sonarqube/chart/templates/pvc-postgresql.yaml b/sonarqube/chart/templates/pvc-postgresql.yaml index f07b0712a..619fb38bc 100644 --- a/sonarqube/chart/templates/pvc-postgresql.yaml +++ b/sonarqube/chart/templates/pvc-postgresql.yaml @@ -13,6 +13,6 @@ spec: - ReadWriteOnce resources: requests: - storage: 2Gi + storage: {{ .Values.postgresql.pvcDatabaseCapacity }} storageClassName: {{ .Values.global.storageClassData }} volumeMode: Filesystem diff --git a/sonarqube/chart/templates/pvc-sonar-data.yaml b/sonarqube/chart/templates/pvc-sonar-data.yaml index 0481d513a..10050a59d 100644 --- a/sonarqube/chart/templates/pvc-sonar-data.yaml +++ b/sonarqube/chart/templates/pvc-sonar-data.yaml @@ -13,6 +13,6 @@ spec: - ReadWriteOnce resources: requests: - storage: 2Gi + storage: {{ .Values.sonarqube.pvcDataCapacity }} storageClassName: {{ .Values.global.storageClassData }} volumeMode: Filesystem diff --git a/sonarqube/chart/values.yaml.template b/sonarqube/chart/values.yaml.template index 1b514269d..e1bd92573 100644 --- a/sonarqube/chart/values.yaml.template +++ b/sonarqube/chart/values.yaml.template @@ -22,15 +22,19 @@ global: sonarDatabaseImage: $SONAR_DATABASE_IMAGE postgresql: name: 'sonarqube-postgresql' - cpuRequest: 100m - cpuLimit: 1 - memRequest: 256Mi - memLimit: 512Mi + cpuRequest: $SONARQUBE_DB_CPU_REQUEST + cpuLimit: $SONARQUBE_DB_CPU_LIMIT + memRequest: $SONARQUBE_DB_MEMORY_REQUEST + memLimit: $SONARQUBE_DB_MEMORY_LIMIT + pvcDatabaseCapacity: $SONARQUBE_DB_CAPACITY + pvcDatabaseBackupCapacity: $SONARQUBE_DB_BACKUP_CAPACITY sonarqube: - cpuRequest: 200m - cpuLimit: 1 - memRequest: 2Gi - memLimit: 4Gi + cpuRequest: $SONARQUBE_CPU_REQUEST + cpuLimit: $SONARQUBE_CPU_LIMIT + memRequest: $SONARQUBE_MEMORY_REQUEST + memLimit: $SONARQUBE_MEMORY_LIMIT + pvcDataCapacity: $SONARQUBE_DATA_CAPACITY + pvcExtensionsCapacity: $SONARQUBE_EXTENSIONS_CAPACITY sonarAuthSaml: $SONAR_AUTH_SAML sonarAuthSamlApplicationId: $SONAR_SAML_APPLICATION_ID sonarAuthSamlProviderIdB64: $SONAR_SAML_PROVIDER_ID_B64 diff --git a/tests/go.mod b/tests/go.mod index 6096438b9..2a00fafd6 100644 --- a/tests/go.mod +++ b/tests/go.mod @@ -3,10 +3,8 @@ module github.com/opendevstack/ods-core/tests go 1.13 require ( - github.com/ericchiang/pup v0.4.0 // indirect - github.com/fatih/color v1.13.0 // indirect github.com/ghodss/yaml v1.0.0 - github.com/gogo/protobuf v1.3.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.4.2 // indirect github.com/google/btree v1.0.0 // indirect github.com/google/go-cmp v0.5.1 @@ -16,16 +14,13 @@ require ( github.com/json-iterator/go v1.1.8 // indirect github.com/jstemmer/go-junit-report v0.9.1 github.com/kr/pretty v0.2.1 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/openshift/api v0.0.0-20180801171038-322a19404e37 github.com/openshift/client-go v3.9.0+incompatible github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/spf13/pflag v1.0.5 // indirect - golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 // indirect - golang.org/x/net v0.0.0-20220524220425-1d687d428aca // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect - golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/tests/go.sum b/tests/go.sum index 32a856f7b..0e4ed6ee5 100644 --- a/tests/go.sum +++ b/tests/go.sum @@ -3,16 +3,11 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/ericchiang/pup v0.4.0 h1:h9ahJXbHA3V8MFfAmasxi8DCx0Gu+aLAAEtb8Q3KCOo= -github.com/ericchiang/pup v0.4.0/go.mod h1:PpPzKkuAB7ypCQf9+wxC5MzaGaIDdgjtlpvc/0NaTJc= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= @@ -27,16 +22,12 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ github.com/google/gnostic v0.4.0 h1:9iS1H6UOaLpeNN1XLeRcR9qdtmGabUmQaBsrDONz6D4= github.com/google/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/googleapis/gnostic v0.4.0 h1:BXDUo8p/DaxC+4FJY/SSx3gvnx9C1VdHNgaUkiEL5mk= -github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= @@ -45,19 +36,13 @@ github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46O github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -76,41 +61,75 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20220524220425-1d687d428aca h1:xTaFYiPROfpPhqrfTIDXj0ri1SpfueYT951s4bAuDO8= -golang.org/x/net v0.0.0-20220524220425-1d687d428aca/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=