-
Notifications
You must be signed in to change notification settings - Fork 564
Implement CodePipelineEvent #247
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
Merged
Merged
Changes from all commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
c4bec4a
[BREAKING CHANGE] Clean up CodePipeline Job Implementation
whithajess fddd182
Fix original typo missed when moving to job
whithajess 737f84d
Implement CodePipeline Events
whithajess a075ecb
Fix up detail types
whithajess ba8d413
Allow for floats
whithajess c8c151e
Merge branch 'master' into feature/code-pipeline-events
whithajess f727954
Merge branch 'master' into feature/code-pipeline-events
whithajess 1d5a7ac
Merge remote-tracking branch 'upstream/master' into feature/code-pipe…
whithajess 30d8e3d
Add "CloudWatch" to maintain backwards compatability
whithajess a482ebd
go fmt
whithajess 2ea403c
Change tests to CloudWatch rename also
whithajess 8265443
Remove Job
whithajess ac59d30
Fix explicit type constants
whithajess 4c5a353
Fix merge issue
whithajess f74aa0f
Add missed CloudWatch change
whithajess 029afc2
Merge branch 'master' into feature/code-pipeline-events
bmoffatt 43c3a02
Codereview fixes
whithajess 46581ac
Change tests to match the ExecutionId -> ID change
whithajess 35e25d2
Again missed the test change to match with int64
whithajess 00c1a76
String to Int change to match code change
whithajess 25e4786
Merge branch 'master' into feature/code-pipeline-events
whithajess 22b1ea5
Merge branch 'master' into feature/code-pipeline-events
bmoffatt f08396f
Merge branch 'main' into feature/code-pipeline-events
bmoffatt File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package events | ||
|
||
import ( | ||
"time" | ||
) | ||
|
||
const ( | ||
CodePipelineEventSource = "aws.codepipeline" | ||
CodePipelineExecutionEventDetailType = "CodePipeline Pipeline Execution State Change" | ||
CodePipelineActionEventDetailType = "CodePipeline Action Execution State Change" | ||
CodePipelineStageEventDetailType = "CodePipeline Stage Execution State Change" | ||
) | ||
|
||
type CodePipelineStageState string | ||
|
||
const ( | ||
CodePipelineStageStateStarted CodePipelineStageState = "STARTED" | ||
CodePipelineStageStateSucceeded CodePipelineStageState = "SUCCEEDED" | ||
CodePipelineStageStateResumed CodePipelineStageState = "RESUMED" | ||
CodePipelineStageStateFailed CodePipelineStageState = "FAILED" | ||
CodePipelineStageStateCanceled CodePipelineStageState = "CANCELED" | ||
) | ||
|
||
type CodePipelineState string | ||
|
||
const ( | ||
CodePipelineStateStarted CodePipelineState = "STARTED" | ||
CodePipelineStateSucceeded CodePipelineState = "SUCCEEDED" | ||
CodePipelineStateResumed CodePipelineState = "RESUMED" | ||
CodePipelineStateFailed CodePipelineState = "FAILED" | ||
CodePipelineStateCanceled CodePipelineState = "CANCELED" | ||
CodePipelineStateSuperseded CodePipelineState = "SUPERSEDED" | ||
) | ||
|
||
type CodePipelineActionState string | ||
|
||
const ( | ||
CodePipelineActionStateStarted CodePipelineActionState = "STARTED" | ||
CodePipelineActionStateSucceeded CodePipelineActionState = "SUCCEEDED" | ||
CodePipelineActionStateFailed CodePipelineActionState = "FAILED" | ||
CodePipelineActionStateCanceled CodePipelineActionState = "CANCELED" | ||
) | ||
|
||
// CodePipelineEvent is documented at: | ||
// https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#codepipeline_event_type | ||
type CodePipelineCloudWatchEvent struct { | ||
// Version is the version of the event's schema. | ||
Version string `json:"version"` | ||
|
||
// ID is the GUID of this event. | ||
ID string `json:"id"` | ||
|
||
// DetailType informs the schema of the Detail field. For deployment state-change | ||
// events, the value should be equal to CodePipelineDeploymentEventDetailType. | ||
// For instance state-change events, the value should be equal to | ||
// CodePipelineInstanceEventDetailType. | ||
DetailType string `json:"detail-type"` | ||
|
||
// Source should be equal to CodePipelineEventSource. | ||
Source string `json:"source"` | ||
|
||
// AccountID is the id of the AWS account from which the event originated. | ||
AccountID string `json:"account"` | ||
|
||
// Time is the event's timestamp. | ||
Time time.Time `json:"time"` | ||
|
||
// Region is the AWS region from which the event originated. | ||
Region string `json:"region"` | ||
|
||
// Resources is a list of ARNs of CodePipeline applications and deployment | ||
// groups that this event pertains to. | ||
Resources []string `json:"resources"` | ||
|
||
// Detail contains information specific to a deployment event. | ||
Detail CodePipelineEventDetail `json:"detail"` | ||
} | ||
|
||
type CodePipelineEventDetail struct { | ||
Pipeline string `json:"pipeline"` | ||
|
||
// From live testing this is always int64 not string as documented | ||
Version int64 `json:"version"` | ||
|
||
ExecutionID string `json:"execution-id"` | ||
|
||
Stage string `json:"stage"` | ||
|
||
Action string `json:"action"` | ||
|
||
State CodePipelineState `json:"state"` | ||
|
||
Region string `json:"region"` | ||
|
||
Type CodePipelineEventDetailType `json:"type"` | ||
} | ||
|
||
type CodePipelineEventDetailType struct { | ||
Owner string `json:"owner"` | ||
|
||
Category string `json:"category"` | ||
|
||
Provider string `json:"provider"` | ||
|
||
// From published EventBridge schema registry this is always int64 not string as documented | ||
Version int64 `json:"version"` | ||
} |
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
package events | ||
|
||
import ( | ||
"encoding/json" | ||
"github.com/stretchr/testify/require" | ||
"io/ioutil" | ||
"testing" | ||
"time" | ||
) | ||
|
||
func TestUnmarshalCodePipelineEvent(t *testing.T) { | ||
tests := []struct { | ||
input string | ||
expect CodePipelineCloudWatchEvent | ||
}{ | ||
{ | ||
input: "testdata/codepipeline-action-execution-stage-change-event.json", | ||
expect: CodePipelineCloudWatchEvent{ | ||
Version: "0", | ||
ID: "CWE-event-id", | ||
DetailType: "CodePipeline Action Execution State Change", | ||
Source: "aws.codepipeline", | ||
AccountID: "123456789012", | ||
Time: time.Date(2017, 04, 22, 3, 31, 47, 0, time.UTC), | ||
Region: "us-east-1", | ||
Resources: []string{ | ||
"arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline", | ||
}, | ||
Detail: CodePipelineEventDetail{ | ||
Pipeline: "myPipeline", | ||
Version: 1, | ||
ExecutionID: "01234567-0123-0123-0123-012345678901", | ||
Stage: "Prod", | ||
Action: "myAction", | ||
State: "STARTED", | ||
Region: "us-west-2", | ||
Type: CodePipelineEventDetailType{ | ||
Owner: "AWS", | ||
Category: "Deploy", | ||
Provider: "CodeDeploy", | ||
Version: 1, | ||
}, | ||
}, | ||
}, | ||
}, | ||
{ | ||
input: "testdata/codepipeline-execution-stage-change-event.json", | ||
expect: CodePipelineCloudWatchEvent{ | ||
Version: "0", | ||
ID: "CWE-event-id", | ||
DetailType: "CodePipeline Stage Execution State Change", | ||
Source: "aws.codepipeline", | ||
AccountID: "123456789012", | ||
Time: time.Date(2017, 04, 22, 3, 31, 47, 0, time.UTC), | ||
Region: "us-east-1", | ||
Resources: []string{ | ||
"arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline", | ||
}, | ||
Detail: CodePipelineEventDetail{ | ||
Pipeline: "myPipeline", | ||
Version: 1, | ||
ExecutionID: "01234567-0123-0123-0123-012345678901", | ||
State: "STARTED", | ||
}, | ||
}, | ||
}, | ||
{ | ||
input: "testdata/codepipeline-execution-state-change-event.json", | ||
expect: CodePipelineCloudWatchEvent{ | ||
Version: "0", | ||
ID: "CWE-event-id", | ||
DetailType: "CodePipeline Pipeline Execution State Change", | ||
Source: "aws.codepipeline", | ||
AccountID: "123456789012", | ||
Time: time.Date(2017, 04, 22, 3, 31, 47, 0, time.UTC), | ||
Region: "us-east-1", | ||
Resources: []string{ | ||
"arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline", | ||
}, | ||
Detail: CodePipelineEventDetail{ | ||
Pipeline: "myPipeline", | ||
Version: 1, | ||
ExecutionID: "01234567-0123-0123-0123-012345678901", | ||
State: "STARTED", | ||
}, | ||
}, | ||
}, | ||
} | ||
|
||
for _, testcase := range tests { | ||
data, err := ioutil.ReadFile(testcase.input) | ||
require.NoError(t, err) | ||
|
||
var actual CodePipelineCloudWatchEvent | ||
require.NoError(t, json.Unmarshal(data, &actual)) | ||
|
||
require.Equal(t, testcase.expect, actual) | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
events/testdata/codepipeline-action-execution-stage-change-event.json
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
{ | ||
"version": "0", | ||
"id": "CWE-event-id", | ||
"detail-type": "CodePipeline Action Execution State Change", | ||
"source": "aws.codepipeline", | ||
"account": "123456789012", | ||
"time": "2017-04-22T03:31:47Z", | ||
"region": "us-east-1", | ||
"resources": [ | ||
"arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline" | ||
], | ||
"detail": { | ||
"pipeline": "myPipeline", | ||
"version": 1, | ||
"execution-id": "01234567-0123-0123-0123-012345678901", | ||
"stage": "Prod", | ||
"action": "myAction", | ||
"state": "STARTED", | ||
"region":"us-west-2", | ||
"type": { | ||
"owner": "AWS", | ||
"category": "Deploy", | ||
"provider": "CodeDeploy", | ||
"version": 1 | ||
} | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
events/testdata/codepipeline-execution-stage-change-event.json
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"version": "0", | ||
"id": "CWE-event-id", | ||
"detail-type": "CodePipeline Stage Execution State Change", | ||
"source": "aws.codepipeline", | ||
"account": "123456789012", | ||
"time": "2017-04-22T03:31:47Z", | ||
"region": "us-east-1", | ||
"resources": [ | ||
"arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline" | ||
], | ||
"detail": { | ||
"pipeline": "myPipeline", | ||
"version": 1, | ||
"state": "STARTED", | ||
"execution-id": "01234567-0123-0123-0123-012345678901" | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
events/testdata/codepipeline-execution-state-change-event.json
This file contains hidden or 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
{ | ||
"version": "0", | ||
"id": "CWE-event-id", | ||
"detail-type": "CodePipeline Pipeline Execution State Change", | ||
"source": "aws.codepipeline", | ||
"account": "123456789012", | ||
"time": "2017-04-22T03:31:47Z", | ||
"region": "us-east-1", | ||
"resources": [ | ||
"arn:aws:codepipeline:us-east-1:123456789012:pipeline:myPipeline" | ||
], | ||
"detail": { | ||
"pipeline": "myPipeline", | ||
"version": 1, | ||
"state": "STARTED", | ||
"execution-id": "01234567-0123-0123-0123-012345678901" | ||
} | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suspicious... example in docs appear inconsistent on this one across "Pipeline Execution State Change"/"Stage Execution State Change"/"Action Execution State Change"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ill just confirm this from real data as well as the one version left as a
string
on this line before I request re-review