Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce number of places where go version is set #17762

Merged
merged 5 commits into from
Nov 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
41 changes: 28 additions & 13 deletions .circleci/config.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 1 addition & 4 deletions .circleci/config/commands/go_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@ parameters:
save_cache:
type: boolean
default: false
go_image:
type: string
default: "docker.mirror.hashicorp.services/cimg/go:1.19.2"
use_docker:
type: boolean
default: false
Expand Down Expand Up @@ -137,7 +134,7 @@ steps:
-e NO_PROXY \
-e VAULT_TEST_LOG_DIR=<< parameters.log_dir >> \
--network ${TEST_DOCKER_NETWORK_NAME} \
<< parameters.go_image >> \
$GO_IMAGE \
tail -f /dev/null)"
mkdir workspace
echo ${CONTAINER_ID} > workspace/container_id
Expand Down
3 changes: 2 additions & 1 deletion .circleci/config/commands/setup-go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ parameters:
default: github.com/hashicorp/*
steps:
- run:
working_directory: ~/
name: Setup Go
command: |
GO_VERSION=$(cat .go-version)
[ -n "$GO_VERSION" ] || { echo "You must set GO_VERSION"; exit 1; }
# Install Go
cd ~
curl -sSLO "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go${GO_VERSION}.linux-amd64.tar.gz"
Expand Down
33 changes: 15 additions & 18 deletions .circleci/config/executors/@executors.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
go-machine:
machine:
image: ubuntu-2004:202201-02
shell: /usr/bin/env bash -euo pipefail -c
environment:
references:
environment: &ENVIRONMENT
CIRCLECI_CLI_VERSION: 0.1.5546 # Pin CircleCI CLI to patch version (ex: 1.2.3)
GO_VERSION: 1.19.2 # Pin Go to patch version (ex: 1.2.3)
GOTESTSUM_VERSION: 0.5.2 # Pin gotestsum to patch version (ex: 1.2.3)
GOFUMPT_VERSION: 0.3.1 # Pin gofumpt to patch version (ex: 1.2.3)
GO_TAGS: ""
GO_IMAGE: &GO_IMAGE "docker.mirror.hashicorp.services/cimg/go:1.19.2"

go-machine:
machine:
image: ubuntu-2004:202201-02
environment: *ENVIRONMENT
shell: /usr/bin/env bash -euo pipefail -c
working_directory: /home/circleci/go/src/github.com/hashicorp/vault
node:
docker:
Expand All @@ -30,24 +33,18 @@ semgrep:
docker-env-go-test-remote-docker:
resource_class: medium
docker:
- image: "docker.mirror.hashicorp.services/cimg/go:1.19.2"
environment:
CIRCLECI_CLI_VERSION: 0.1.5546 # Pin CircleCI CLI to patch version (ex: 1.2.3)
GO_TAGS: ""
- image: *GO_IMAGE
environment: *ENVIRONMENT
working_directory: /home/circleci/go/src/github.com/hashicorp/vault
docker-env-go-test:
resource_class: large
docker:
- image: "docker.mirror.hashicorp.services/cimg/go:1.19.2"
environment:
CIRCLECI_CLI_VERSION: 0.1.5546 # Pin CircleCI CLI to patch version (ex: 1.2.3)
GO_TAGS: ""
- image: *GO_IMAGE
environment: *ENVIRONMENT
working_directory: /home/circleci/go/src/github.com/hashicorp/vault
docker-env-go-test-race:
resource_class: xlarge
docker:
- image: "docker.mirror.hashicorp.services/cimg/go:1.19.2"
environment:
CIRCLECI_CLI_VERSION: 0.1.5546 # Pin CircleCI CLI to patch version (ex: 1.2.3)
GO_TAGS: ""
- image: *GO_IMAGE
environment: *ENVIRONMENT
working_directory: /home/circleci/go/src/github.com/hashicorp/vault
2 changes: 1 addition & 1 deletion .circleci/config/jobs/build-go-dev.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
executor: go-machine
steps:
- setup-go
- checkout
- setup-go
- restore_go_mod_cache
- attach_workspace:
at: .
Expand Down
2 changes: 1 addition & 1 deletion .circleci/config/jobs/fmt.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
description: Ensure go formatting is correct.
executor: go-machine
steps:
- checkout
# Setup Go enabling the proxy for downloading modules.
- setup-go:
GOPROXY: https://proxy.golang.org,direct
- checkout
- run:
name: make fmt
command: |
Expand Down
2 changes: 1 addition & 1 deletion .circleci/config/jobs/pre-flight-checks.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
description: Ensure nothing obvious is broken, and pre-cache Go modules.
executor: go-machine
steps:
- checkout
# Setup Go enabling the proxy for downloading modules.
- setup-go:
GOPROXY: https://proxy.golang.org,direct
- checkout
- run:
name: Install CircleCI CLI
environment:
Expand Down
2 changes: 1 addition & 1 deletion .circleci/config/jobs/test-go-nightly.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
executor: go-machine
steps:
- setup-go
- checkout
- setup-go
- restore_go_mod_cache
- go_test:
log_dir: "/tmp/testlogs"
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/goversion-checker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Check Go version

on:
pull_request:
types: [opened, synchronize]

jobs:
go-version-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: Verify go versions in tree are consistent with one another
run: |
GOVER=$(cat .go-version)
EXPECTED="docker.mirror.hashicorp.services/cimg/go:$GOVER"
tomhjp marked this conversation as resolved.
Show resolved Hide resolved
GOT=$(yq .references.environment.GO_IMAGE .circleci/config/executors/@executors.yml)
if [ "$EXPECTED" != "$GOT" ]; then
echo "version mismatch, .go-version has '$GOVER' and circleci config uses '$GOT'"
exit 1
fi
1 change: 1 addition & 0 deletions .go-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.19.2
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ GOFMT_FILES?=$$(find . -name '*.go' | grep -v pb.go | grep -v vendor)
SED?=$(shell command -v gsed || command -v sed)


GO_VERSION_MIN=1.19.2
GO_VERSION_MIN=$$(cat $(CURDIR)/.go_version)
PROTOC_VERSION_MIN=3.21.7
GO_CMD?=go
CGO_ENABLED?=0
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,7 @@ Developing Vault
--------------------

If you wish to work on Vault itself or any of its built-in systems, you'll
first need [Go](https://www.golang.org) installed on your machine. Go version
1.19.2+ is *required*.
first need [Go](https://www.golang.org) installed on your machine.

For local dev first make sure Go is properly installed, including setting up a
[GOPATH](https://golang.org/doc/code.html#GOPATH). Ensure that `$GOPATH/bin` is in
Expand Down
2 changes: 1 addition & 1 deletion scripts/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Multi-stage builder to avoid polluting users environment with wrong
# architecture binaries.
ARG VERSION=1.19.2
ARG VERSION

FROM golang:${VERSION} AS builder

Expand Down
2 changes: 1 addition & 1 deletion scripts/docker/Dockerfile.ui
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# architecture binaries. This file only currently works for linux/amd64.
FROM debian:buster AS builder

ARG VERSION=1.19.2
ARG VERSION
ARG CGO_ENABLED=0
ARG BUILD_TAGS
ENV JOBS=2
Expand Down