Skip to content

[v2] update s3, cmd/go-getter, and gcs to use most recent v2 module v… #199

[v2] update s3, cmd/go-getter, and gcs to use most recent v2 module v…

[v2] update s3, cmd/go-getter, and gcs to use most recent v2 module v… #199

Workflow file for this run

name: go-getter
on:
push:
branches:
- v2
pull_request:
branches:
- v2
env:
TEST_RESULTS_PATH: /tmp/test-results
jobs:
linux-tests:
runs-on: ubuntu-latest
strategy:
matrix:
# Note: while strictly speaking quoting the versions is not necessary
# however for versions like 1.10, 1.20, 1.30, etc. without quotes, YAML
# renders these versions as floats, so the least-significant 0 gets
# dropped from the version number, so those become like 1.1, 1.2, 1.3, etc.
# To avoid the issue, we quote them systematically.
go-version:
- "1.19"
- "1.20"
- "1.21"
directory:
- s3
- gcs
- .
permissions:
id-token: write
contents: read
steps:
- name: Setup go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v3
- name: Create test directory
run: |
mkdir -p ${{ env.TEST_RESULTS_PATH }}/go-getter
- name: Setup cache for go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download go modules
run: go mod download
# Check go fmt output because it does not report non-zero when there are fmt changes
- name: Run gofmt
run: |
go fmt ./...
files=$(go fmt ./...)
if [ -n "$files" ]; then
echo "The following file(s) do not conform to go fmt:"
echo "$files"
exit 1
fi
- name: Install gotestsum
run: go install gotest.tools/gotestsum@v1.8.2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::388664967494:role/hc-go-getter-test
role-session-name: ${{ github.run_id }}
audience: https://github.com/hashicorp
- name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0.4.0'
with:
workload_identity_provider: 'projects/328212837253/locations/global/workloadIdentityPools/hc-go-getter-test/providers/github-hc-go-getter-test'
service_account: hc-go-getter-test@hc-e56c0f7c21c448d2be9e7696073.iam.gserviceaccount.com
audience: https://github.com/hashicorp
- name: Run Go cmd
run: |
cd cmd/go-getter
go run . go.mod tmpdir
diff tmpdir/go.mod go.mod
- name: Run Go tests
working-directory: ${{ matrix.directory }}
run: |
PACKAGE_NAMES=$(go list ./...)
echo "Running $(echo $PACKAGE_NAMES | wc -w) packages"
echo $PACKAGE_NAMES
gotestsum --format=short-verbose --junitfile $TEST_RESULTS_PATH/go-getter/gotestsum-report.xml -- -p 2 $PACKAGE_NAMES
# Save coverage report parts
- name: Upload and save artifacts
uses: actions/upload-artifact@v3
with:
name: linux test results
path: ${{ env.TEST_RESULTS_PATH }}
windows-tests:
runs-on: windows-latest
strategy:
matrix:
go-version:
- "1.19"
- "1.20"
- "1.21"
directory:
- s3
- gcs
- .
permissions:
id-token: write
contents: read
steps:
- name: Run git config #Windows-only
run: git config --global core.autocrlf false
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v3
- name: Setup cache for go modules
uses: actions/cache@v3
with:
path: |
~\AppData\Local\go-build
~\go\pkg\mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download go modules
run: go mod download
- name: Install gotestsum
shell: bash
run: go install gotest.tools/gotestsum@v1.8.2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::388664967494:role/hc-go-getter-test
role-session-name: ${{ github.run_id }}
audience: https://github.com/hashicorp
- name: 'Authenticate to Google Cloud'
uses: 'google-github-actions/auth@v0.4.0'
with:
workload_identity_provider: 'projects/328212837253/locations/global/workloadIdentityPools/hc-go-getter-test/providers/github-hc-go-getter-test'
service_account: hc-go-getter-test@hc-e56c0f7c21c448d2be9e7696073.iam.gserviceaccount.com
audience: https://github.com/hashicorp
- name: Run Go cmd
run: |
cd cmd/go-getter
go run . go.mod tmpdir
diff tmpdir/go.mod go.mod
- name: Run Go tests
shell: bash
working-directory: ${{ matrix.directory }}
run: |
PACKAGE_NAMES=$(go list ./...)
echo "Running $(echo $PACKAGE_NAMES | wc -w) packages"
echo $PACKAGE_NAMES
gotestsum --format=short-verbose --junitfile $TEST_RESULTS_PATH/go-getter/gotestsum-report.xml -- -p 2 $PACKAGE_NAMES
# Save coverage report parts
- name: Upload and save artifacts
uses: actions/upload-artifact@v3
with:
name: windows test results
path: ${{ env.TEST_RESULTS_PATH }}
go-smb-tests:
runs-on: ubuntu-latest
strategy:
matrix:
go-version:
- "1.19"
- "1.20"
- "1.21"
permissions:
id-token: write
contents: read
steps:
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Build and start SMB server and gogetter containers
run: |
docker-compose build
docker-compose up -d
- name: Run SMB getter tests
run: docker exec -i gogetter bash -c "env ACC_SMB_TEST=1 go test -v ./... -run=TestSmb_"