Commit Graph

104 Commits

Author SHA1 Message Date
Martin Atkins
284a38a04c build: Accept version numbers with prereleases containing dashes
Previously we'd discard everything after the second dash.
2022-05-23 16:48:34 -07:00
Martin Atkins
096f0dc0da build: Write the detected version number into the generated executable
This also sets an additional variable if it detects that this is an alpha
or development build, which currently does nothing but might eventually
turn on the ability to use experimental features, if we make that
something available only in prereleases.
2022-05-23 16:48:34 -07:00
Martin Atkins
7dd3cdfab4 build: Fetch all tags before deciding which version we're building
The actions/checkout workflow does some heroics to try to fetch exactly
the commit being built and nothing else, even if asked to fetch the
history leading up to that commit. That means we don't end up having
enough information to get an accurate answer from "git describe".

Since we're intentionally relying on the git history here, we'll fetch
all of the tags explicitly after initial checkout. Although that does add
some delay to this step, we're intentionally doing this version
calculation only once as a separate workflow job so that all of the other
jobs can still benefit from this action's quicker checkout behavior.
2022-05-23 16:48:34 -07:00
James Bardin
2bd72914d8 add internal/states to the race detector tests
This runs relatively quickly, and there is at least 1 test with
concurrent operations.
2022-04-28 11:44:32 -04:00
Claire Labry
dd2decf921
change action to pull v1 instead of main 2022-04-22 13:54:40 -04:00
James Bardin
0693c8dfe7 enable the race detector in tests 2022-04-20 16:32:39 -04:00
Martin Atkins
5b615882e2
build: "Quick Checks" to run for external contributions
The "push" event is only for pushes to branches within the same repository.

Since external contributors make commits in their own repositories rather than directly in the target repository, we also need the pull_request event to react to opening a pull request and to pushing new code to an external branch associated with a pull request.

Since internal pull requests would in principle trigger both "push" _and_ "pull_request", we also constrain the push event only to the branches we typically release from, on the assumption that all other branches will merge into those via pull requests. This avoids redundantly running the same checks in response to two events at the same time.
2022-04-07 17:00:44 -07:00
Martin Atkins
bbf540e0e3 build: "Quick Checks" caches protoc between runs
Building our protobuf files requires the protoc tool, which takes a little
while to download and install. Hopefully downloading it out of the GitHub
Actions cache will make it a little faster in the common case where we're
still using the same version as the previous run.
2022-04-04 08:12:44 -07:00
Martin Atkins
42a618f7c1 build: "Quick Checks" runs consistency checks concurrently with others
Originally we had this running as part of the Unit Tests job because most
of the checks are relatively fast. However, the addition of the protobuf
generation check made that no longer be true because it needs to download
and run protoc.

With that extra overhead it now _is_ productive to spend the time booting
and installing Go on third worker, as long as GitHub Actions continues
to let us run all three of these jobs concurrently most of the time.
2022-04-04 08:12:44 -07:00
Martin Atkins
95f26b340b build: "Quick Checks" no longer uses goenv
goenv was making things more complicated than needed since it's really
designed to help with interactive use in a shell more than automated use
like this.

Instead, we'll follow the same strategy that our build.yml was doing of
just reading the .go-version file directly and then using the official
actions/setup-go action to do the actual installation. The key advantage
here is that Go ends up installed in a way where just running "go" will
do the right thing, and we no longer need to fuss with shims and
version-based path prefixes.

Rather than duplicating the logic from build.yml, instead it's factored
out into a separate composite action which both build.yml and checks.yml
will now share, in case we want to change the Go version selection
methodology in the future.
2022-04-04 08:12:44 -07:00
Martin Atkins
67fedd48a6 build: "Quick Checks" avoid repeating Install Go
This factors out the "Install Go" step into a separate composite action
which we can then call from both of the jobs that need it.

We can't factor out the "Cache Go Modules" because GitHub doesn't allow
composite actions to refer to other external actions.
2022-04-04 08:12:44 -07:00
Martin Atkins
9210ce6cdd build: GitHub Actions "Quick Checks" workflow
This is intended to eventually replace the CircleCI-based checks we use
as part of the PR process in this repository. We're already using GitHub
Actions for various other processes in this repository, so this change is
motivated by consistency of having all of our automation running in the
same system and written in the same language.

This is not a complete replacement for our CircleCI workflow yet, and
probably won't ever be because the CircleCI workflow contains some steps
that are arguably redundant with other processes we follow elsewhere.
However, the CircleCI workflow remains for now and won't be removed until
we're satisfied that enough of it is replicated by this GitHub Actions
workflow.
2022-04-04 08:12:44 -07:00
Laura Pacilio
2a3b0f9c1e
Merge pull request #30017 from RubyElders/internal-contributing-docs
Update go test commands in .github/CONTRIBUTING.md.
2022-02-07 14:23:52 -05:00
Alisdair McDiarmid
636499830b Add merged pull request reminder 2022-01-26 15:52:54 -05:00
Katy Moe
eaf748f24d remove dependabot 2022-01-26 09:15:01 +00:00
Michele Degges
2f465e6047 Update packaging action name 2022-01-20 13:15:19 -08:00
Martin Atkins
4ec1feaa3d build: CGO_ENABLED when building for macOS
Normally when we cross-compile we do so without CGo, because we don't have
suitable C headers available for systems other than the host.

However, building for macOS on macOS is special because there are
sufficient headers available on darwin_amd64 to build for both
darwin_amd64 _and_ darwin_arm64. Also, we _must_ use CGo on macOS because
the system resolver is only available via darwin's libc, and so building
without CGo produces executables that don't resolve hostnames correctly.

This is a conditional in bash to avoid having to duplicate the entire
step. Perhaps later we'll find a more general version of this which can
avoid the special case, but this is sufficient for the moment.
2022-01-06 14:51:09 -08:00
Martin Atkins
28a6036cf2 build: Separate Linux distro package builds into separate job
In our build workflow we'll treat Linux distribution packaging (currently
.deb and .rpm packages) as a separate job, instead of embedding it into
the "build" job, so that this step can happen concurrently with the other
derived actions like the docker image build, and the e2etest runs.
2022-01-05 14:31:04 -08:00
Martin Atkins
c1699ea80c build: Constrain permissions for the "build" workflow steps
This workflow only generates artifacts and doesn't need to modify anything
about the repository.
2022-01-05 14:31:04 -08:00
Martin Atkins
3bf758eaf5 build: Consolidate build-darwin job into just "build"
We can use an extra matrix dimension to select which execution environment
we'll use for each GOOS/GOARCH pair, and thus avoid duplicating the
job definition for darwin just to set runs-on: macos-latest for it.

This is not really an intended use of a matrix dimension because it's
directly related to the existing "goos" one, rather than being an
independent third dimension, but it doesn't matter in practice because
we're using the "include" option to specify exact combinations, and thus
we're not relying on the built-in functionality to generate all possible
matrix combinations.
2022-01-05 14:31:04 -08:00
Martin Atkins
218e55b23c build: Build docs source package as part of the release pipeline
This should eventually grow to be a step that actually verifies the
validity of the docs source prior to publishing the artifact that a
downstream publishing pipeline can consume, but for the moment it's really
just a placeholder since we have no such validation step and no downstream
pipeline consuming this artifact.

The general idea here is that the artifacts from this workflow should be
sufficient for all downstream release steps to occur without any direct
access to the Terraform CLI repository, and so this is intended to
eventually meet that ideal but as of this commit the website docs
publishing step _does_ still depend on direct access to this repository.
2022-01-05 14:31:04 -08:00
Martin Atkins
b802db75d7 build: Build and run e2etest as part of the release build pipeline
This uses the decoupled build and run strategy to run the e2etests so that
we can arrange to run the tests against the real release packages produced
elsewhere in this workflow, rather than ones generated just in time by
the test harness.

The modifications to make-archive.sh here make it more consistent with its
originally-intended purpose of producing a harness for testing "real"
release executables. Our earlier compromise of making it include its own
terraform executable came from a desire to use that script as part of
manual cross-platform testing when we weren't yet set up to support
automation of those tests as we're doing here. That does mean, however,
that the terraform-e2etest package content must be combined with content
from a terraform release package in order to produce a valid contest for
running the tests.

We use a single job to cross-compile the test harness for all of the
supported platforms, because that build is relatively fast and so not
worth the overhead of matrix build, but then use a matrix build to
actually run the tests so that we can run them in a worker matching the
target platform.

We currently have access only to amd64 (x64) runners in GitHub Actions
and so for the moment this process is limited only to the subset of our
supported platforms which use that architecture.
2022-01-05 14:31:04 -08:00
Martin Atkins
6704f8c795 Initial work on a new package build process
For the moment this is just an experimental additional sidecar package
build process, separate from the one we really use for releases, so that
we can get some experience building in the GitHub Actions environment
before hopefully eventually switching to using the artifacts from this
process as the packages we'll release through the official release
channels.

It will react to any push to one of our release branches or to a release
tag by building official-release-like .zip, .deb, and .rpm packages, along
with Docker images, based on the content of the corresponding commit.

For the moment this doesn't actually produce _shippable_ packages because
in particular it doesn't know how to update our version/version.go file
to hard-code the correct version number. Once Go 1.18 is release and we've
upgraded to it we'll switch to using debug.ReadBuildInfo to determine
our version number at runtime and so no longer need to directly update
a source file for each release, but that functionality isn't yet available
in our current Go 1.17 release.
2022-01-05 14:31:04 -08:00
Josef Šimánek
ffcb167bce Update go test commands in .github/CONTRIBUTING.md. 2021-11-24 20:19:24 +01:00
James Bardin
91f27c6d04 remove Crash section of issue template
Terraform is no longer going to silently capture all logs for a possible
crash report, and therefor won't create a crash.log file when a panic is
encountered.

The prompt to create a log file with TF_LOG from the Debug Output
section should suffice to get users to submit the logs when possible. In
the case of a crash specifically, the crash output also requests that
the stack trace be added to the issue for users who may not be aware of
what is necessary.
2021-10-29 14:43:36 -04:00
Paul Hinze
ad634f60a5
Add clarification to message about community PR review 2021-09-07 21:04:13 -05:00
Martin Atkins
6562466c32
Be explicit that community PR review is currently paused 2021-08-27 10:43:51 -07:00
Radek Simko
abc762c42d
docs: Update outdated info about terraform-providers org (#29328)
* docs: Update outdated info about terraform-providers org

* Remove codecov mentions
2021-08-09 17:45:27 +01:00
Kent 'picat' Gruber
fc63c1949d
Merge pull request #29215 from hashicorp/configure-dependabot
Add initial Dependabot configuration
2021-07-29 10:26:22 -04:00
James Bardin
c449148d8c update GH issue template
Change generic provider link to the registry, since the majority of
providers are no longer under the terraform-provider org.

Remove example link to an individual user's repo.
2021-07-27 10:48:09 -04:00
Kent 'picat' Gruber
4291916f0f Add initial dependabot configuration 2021-07-21 17:31:16 -04:00
Chris Arcand
c556a0c9c9 mailto is not supported in GitHub template URLs 2021-06-02 15:42:39 -05:00
Chris Arcand
e3b9ab4891 Add support email for TFC-related issues 2021-06-02 15:08:21 -05:00
Brian Flad
4b25a07bc7 Remove GitHub HashiBot configuration
For the `closed_issue_locker` behavior, this is a migration to an equivalent action.

For the `label_issue_migrater` behavior, this is not replaced and instead it is suggested to use native GitHub functionality for issue transfer. If mostly equivalent behavior is desired via label automation, it may be possible to submit an issue transfer feature request to dessant/label-actions as it is a popular community action or create a new GitHub Action. Please reach out if this is a major issue for your team.

For the `remove_labels_on_reply` behavior, it is equivalent except this initial configuration does not make the collaborators distinction. There is a workflow configuration workaround for setting up per-user ignores for any job/step, so if you desire that here please reach out.
2021-05-14 13:28:15 -07:00
Kristin Laemmert
106bcd3bf0
update to match new default branch name (#27909) 2021-02-24 13:36:47 -05:00
Jonathan Hall
49ee3d3ef8 Grammar nit: "setup" as a verb should be spelled "set up" 2021-01-26 20:39:11 +01:00
Alisdair McDiarmid
3ed08e3566 Remove backport review teams for now
This requires more GitHub token permissions than we have, and it's
inessential. The backport PRs should have reviews assigned to the
original PR author anyway.
2020-11-02 10:43:22 -05:00
Alisdair McDiarmid
13d70844d7
Upgrade backport-assistant 2020-10-29 15:29:14 -04:00
Alisdair McDiarmid
61b38f3ada
Another action regex fix attempt
This time I actually tested the regex
2020-10-28 16:46:28 -04:00
Alisdair McDiarmid
e65f427927
Try to fix backport action
I made a mistake editing the regex. Here's hoping this works!
2020-10-28 16:43:38 -04:00
Alisdair McDiarmid
1e32354e3e
Fix label regexp
We only use two components for versions, e.g. `0.13-backport` -> `v0.13`
2020-10-28 10:23:43 -04:00
Alisdair McDiarmid
fd14b237e5
Add backport assistant
Based on documentation in https://github.com/hashicorp/backport-assistant, using a
token from the teamterraform user.
2020-10-28 10:22:01 -04:00
Petros Kolyvas
dc48450e79
Provisioner contribution guide updates (#26538)
An update on the deprecated state of vendor provisioners for our contribution guide.
2020-10-14 12:30:40 -04:00
Daniel Dreier
6211020453
Merge pull request #26247 from hashicorp/danieldreier/bugtriage
Add bug triage guide
2020-09-25 15:59:05 -04:00
Daniel Dreier
8af2120e1b Add bug triage guide
Add a written bug triage process and link to it in README.md

Bug process

Remove goals, edit for brevity, and move how to write a good issue report to bug report template

link HashiCorp GPG key in bug report template

add summary links for triage process
2020-09-25 15:56:58 -04:00
James Bardin
50e547db4d remove vendoring from contribution guide 2020-09-23 17:06:59 -04:00
Jamie Finnigan
7eda697978 remove local SECURITY.md in favor of org-wide policy 2020-08-24 15:45:32 -07:00
Daniel Dreier
cc86889fd6 Update GitHub issue templates
Add "bug" label to bug_report.md
Add "new" label to feature_request.md
2020-08-05 17:39:56 -04:00
Daniel Dreier
237a1f3684 Add "new" label to issue templates 2020-08-05 17:28:12 -04:00
Tom Hummel
7e879e0034
fix .go-version repo link 2020-07-23 20:22:53 -07:00