Upgrade to v1.8.4 (#12) #44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow is a collection of "quick checks" that should be reasonable | |
# to run for any new commit to this repository in principle. | |
# | |
# The main purpose of this workflow is to represent checks that we want to | |
# run prior to reviewing and merging a pull request. We should therefore aim | |
# for these checks to complete in no more than a few minutes in the common | |
# case. | |
# | |
# The build.yml workflow includes some additional checks we run only for | |
# already-merged changes to release branches and tags, as a compromise to | |
# keep the PR feedback relatively fast. The intent is that checks.yml should | |
# catch most problems but that build.yml might occasionally be the one to catch | |
# more esoteric situations, such as architecture-specific or OS-specific | |
# misbehavior. | |
name: Quick Checks | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- 'v[0-9]+.[0-9]+' | |
- checks-workflow-dev/* | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+*' | |
# This workflow runs for not-yet-reviewed external contributions and so it | |
# intentionally has no write access and only limited read access to the | |
# repository. | |
permissions: | |
contents: read | |
jobs: | |
unit-tests: | |
name: Unit tests for ${{ matrix.goos }}_${{ matrix.goarch }} | |
runs-on: ${{ matrix.runson }} | |
env: | |
TF_APPEND_USER_AGENT: Integration-Test | |
GOOS: ${{ matrix.goos }} | |
GOARCH: ${{ matrix.goarch }} | |
strategy: | |
matrix: | |
include: | |
- { runson: ubuntu-latest, goos: linux, goarch: "arm64" } | |
- { runson: ubuntu-latest, goos: linux, goarch: "amd64" } | |
- { runson: ubuntu-latest, goos: linux, goarch: "386" } | |
- { runson: ubuntu-latest, goos: linux, goarch: "arm" } | |
- { runson: macos-latest, goos: darwin, goarch: "amd64" } | |
# - { runson: windows-latest, goos: windows, goarch: "amd64" } | |
# https://github.com/opentofu/opentofu/issues/1201 if fixed | |
# ^ un-comment the windows-latest line | |
fail-fast: false | |
steps: | |
# 👇🏾 GH actions supports only "AMD64 arch", so we are using this action | |
# for testing on non amd64 envs like 386, arm64 etc... | |
- name: "Set up QEMU" | |
if: matrix.goos == 'linux' && matrix.goarch != 'amd64' | |
uses: docker/setup-qemu-action@v3 | |
- name: "Fetch source code" | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Determine Go version | |
id: go | |
uses: ./.github/actions/go-version | |
- name: Install Go toolchain | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: ${{ steps.go.outputs.version }} | |
- name: "Unit tests" | |
run: | | |
go test ./... | |
race-tests: | |
name: "Race Tests" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Fetch source code" | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Determine Go version | |
id: go | |
uses: ./.github/actions/go-version | |
- name: Install Go toolchain | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: ${{ steps.go.outputs.version }} | |
# The race detector add significant time to the unit tests, so only run | |
# it for select packages. | |
- name: "Race detector" | |
run: | | |
go test -race ./internal/tofu ./internal/command ./internal/states | |
e2e-tests: | |
# This is an intentionally-limited form of our E2E test run which only | |
# covers OpenTofu running on Linux. The build.yml workflow runs these | |
# tests across various other platforms in order to catch the rare exception | |
# that might leak through this. | |
name: "End-to-end Tests" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Fetch source code" | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Determine Go version | |
id: go | |
uses: ./.github/actions/go-version | |
- name: Install Go toolchain | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: ${{ steps.go.outputs.version }} | |
- name: "End-to-end tests" | |
run: | | |
TF_ACC=1 go test -v ./internal/command/e2etest | |
consistency-checks: | |
name: "Code Consistency Checks" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Fetch source code" | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
with: | |
fetch-depth: 0 # We need to do comparisons against the main branch. | |
- name: Determine Go version | |
id: go | |
uses: ./.github/actions/go-version | |
- name: Install Go toolchain | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: ${{ steps.go.outputs.version }} | |
- name: "go.mod and go.sum consistency check" | |
run: | | |
go mod tidy | |
if [[ -n "$(git status --porcelain)" ]]; then | |
echo >&2 "ERROR: go.mod/go.sum are not up-to-date. Run 'go mod tidy' and then commit the updated files." | |
exit 1 | |
fi | |
- name: Cache protobuf tools | |
uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: "tools/protobuf-compile/.workdir" | |
key: protobuf-tools-${{ hashFiles('tools/protobuf-compile/protobuf-compile.go') }} | |
restore-keys: | | |
protobuf-tools- | |
- name: "Code consistency checks" | |
run: | | |
make generate protobuf | |
if [[ -n "$(git status --porcelain)" ]]; then | |
echo >&2 "ERROR: Generated files are inconsistent. Run 'make generate' and 'make protobuf' locally and then commit the updated files." | |
git >&2 status --porcelain | |
exit 1 | |
fi | |
- name: "Code linting" | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
version: v1.58 | |
# Only compare with changes from when we introduced linting. Eventually we can get rid of this and lint the whole project | |
args: --new-from-rev dd5f9afe8948186c76fe6b8b1193d7a8f46919d8 | |
- name: "Copyright headers" | |
run: | | |
go run github.com/hashicorp/copywrite headers --plan | |
if [[ $? != 0 ]]; then | |
echo >&2 "ERROR: some files are missing required copyright headers. Run `scripts/add-copyright-headers.sh` locally and then commit the updated files." | |
exit 1 | |
fi | |
license-checks: | |
name: "License Checks" | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Fetch source code" | |
uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 | |
- name: Install licensei | |
run: | | |
make deps | |
- name: Restore cache license information of dependencies | |
uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
with: | |
path: ".licensei.cache" | |
key: licensei-cache-${{ hashFiles('go.sum') }} | |
restore-keys: | | |
licensei-cache- | |
- name: Determine Go version | |
id: go | |
uses: ./.github/actions/go-version | |
- name: Install Go toolchain | |
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
with: | |
go-version: ${{ steps.go.outputs.version }} | |
- name: Run licensei | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
make license-check | |
if: env.LICENSE_CHECK != 'false' | |
- name: Save cache license information of dependencies | |
uses: actions/cache/save@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | |
if: always() | |
with: | |
path: ".licensei.cache" | |
key: licensei-cache-${{ hashFiles('go.sum') }} |