diff --git a/CHANGELOG.md b/CHANGELOG.md index aa48e6a18..e1fd672fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,10 @@ * Improve API error handling to decode both JSON:API error objects and regular JSON errors arrays by @uk1288 [#1304](https://github.com/hashicorp/go-tfe/pull/1304) ## Enhancements -* Adds the `ProviderType` field to `AdminSAMLSetting` and `AdminSAMLSettingsUpdateOptions` to support the `provider-type` SAML setting by @skj-skj [#1303](https://github.com/hashicorp/go-tfe/pull/1303) +* Adds the `ProviderType` field to `AdminSAMLSetting` and `AdminSAMLSettingsUpdateOptions` to support the `provider-type` SAML setting. * Adds `AdminSCIMSetting` to support managing site-level SCIM settings by @skj-skj [#1307](https://github.com/hashicorp/go-tfe/pull/1307) * Adds `AdminSCIMToken` to support managing site-level SCIM tokens by @skj-skj [#1310](https://github.com/hashicorp/go-tfe/pull/1310) +* Add support for trigger patterns and working directories to stacks by @aaabdelgany [#1305](https://github.com/hashicorp/go-tfe/pull/1305) # v1.103.0 diff --git a/stack.go b/stack.go index 0e70bb719..a85f58666 100644 --- a/stack.go +++ b/stack.go @@ -95,6 +95,8 @@ type Stack struct { InputsCount int `jsonapi:"attr,inputs-count"` OutputsCount int `jsonapi:"attr,outputs-count"` CreationSource string `jsonapi:"attr,creation-source"` + WorkingDirectory string `jsonapi:"attr,working-directory,omitempty"` + TriggerPatterns []string `jsonapi:"attr,trigger-patterns,omitempty"` // Relationships Project *Project `jsonapi:"relation,project"` @@ -166,6 +168,8 @@ type StackCreateOptions struct { VCSRepo *StackVCSRepoOptions `jsonapi:"attr,vcs-repo"` Project *Project `jsonapi:"relation,project"` AgentPool *AgentPool `jsonapi:"relation,agent-pool"` + WorkingDirectory *string `jsonapi:"attr,working-directory,omitempty"` + TriggerPatterns []string `jsonapi:"attr,trigger-patterns"` } // StackUpdateOptions represents the options for updating a stack. @@ -175,6 +179,8 @@ type StackUpdateOptions struct { SpeculativeEnabled *bool `jsonapi:"attr,speculative-enabled,omitempty"` VCSRepo *StackVCSRepoOptions `jsonapi:"attr,vcs-repo"` AgentPool *AgentPool `jsonapi:"relation,agent-pool"` + WorkingDirectory *string `jsonapi:"attr,working-directory,omitempty"` + TriggerPatterns []string `jsonapi:"attr,trigger-patterns"` } // WaitForStatusResult is the data structure that is sent over the channel diff --git a/stack_integration_test.go b/stack_integration_test.go index c6eb94256..8239fc713 100644 --- a/stack_integration_test.go +++ b/stack_integration_test.go @@ -164,7 +164,9 @@ func TestStackReadUpdateDelete(t *testing.T) { Project: &Project{ ID: orgTest.DefaultProject.ID, }, - AgentPool: initialPool, + AgentPool: initialPool, + WorkingDirectory: String("envs"), + TriggerPatterns: []string{"/**/*"}, }) require.NoError(t, err) @@ -175,12 +177,15 @@ func TestStackReadUpdateDelete(t *testing.T) { require.False(t, stack.SpeculativeEnabled) stackRead, err := client.Stacks.Read(ctx, stack.ID) + require.NoError(t, err) require.Equal(t, stack.VCSRepo.Identifier, stackRead.VCSRepo.Identifier) require.Equal(t, stack.VCSRepo.OAuthTokenID, stackRead.VCSRepo.OAuthTokenID) require.Equal(t, stack.VCSRepo.Branch, stackRead.VCSRepo.Branch) require.Equal(t, stack.AgentPool.ID, stackRead.AgentPool.ID) assert.Equal(t, stack, stackRead) + assert.Equal(t, stackRead.WorkingDirectory, "envs") + assert.Equal(t, stackRead.TriggerPatterns, []string{"/**/*"}) assert.False(t, stackRead.SpeculativeEnabled) updatedPool, err := client.AgentPools.Create(ctx, orgTest.Name, AgentPoolCreateOptions{ @@ -197,6 +202,8 @@ func TestStackReadUpdateDelete(t *testing.T) { }, AgentPool: updatedPool, SpeculativeEnabled: Bool(true), + WorkingDirectory: String(""), + TriggerPatterns: []string{""}, }) require.NoError(t, err) @@ -207,6 +214,8 @@ func TestStackReadUpdateDelete(t *testing.T) { stackUpdatedConfig, err := client.Stacks.FetchLatestFromVcs(ctx, stack.ID) require.NoError(t, err) require.Equal(t, stack.Name, stackUpdatedConfig.Name) + require.Equal(t, stackUpdated.WorkingDirectory, "") + require.Equal(t, stackUpdated.TriggerPatterns, []string{""}) err = client.Stacks.Delete(ctx, stack.ID) require.NoError(t, err)