Skip to content

Commit caafa9c

Browse files
committed
Make the post stage code the main stage code
1 parent 803b4eb commit caafa9c

File tree

3 files changed

+53
-171
lines changed

3 files changed

+53
-171
lines changed

action.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,3 @@ inputs:
5050
runs:
5151
using: 'node12'
5252
main: 'dist/main/index.js'
53-
post: 'dist/post/index.js'

src/main.ts

Lines changed: 53 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,99 @@
11
import * as core from '@actions/core'
22
import * as github from '@actions/github'
3-
import { create } from './create'
4-
5-
import { deleteAll } from './delete-all'
6-
import { deleteDeployment } from './delete'
7-
import { ActionType, DeploymentStatus, getInput, DEPLOYMENT_ID_STATE_NAME, getEnvironment } from './utils'
3+
import { complete } from './complete'
4+
import { ActionType, DeploymentStatus, getInput, DEPLOYMENT_ID_STATE_NAME, getEnvironment, postSlackNotification } from './utils'
85

96
export async function run (): Promise<void> {
107
let token: string
118
let type: ActionType
12-
let logsUrl: string
13-
let description: string
14-
let status: DeploymentStatus
15-
let environment: string
16-
let environmentUrl: string
179
let deploymentId: string
18-
let mainBranch: string
10+
let jobStatus: string
11+
let environment: string
12+
let slackToken: string
13+
let slackChannel: string
14+
let deploymentConfidenceUrl: string
15+
let mutateDeployment: boolean
16+
let currentSha: string
1917

20-
const { actor, ref } = github.context
18+
const { actor, ref, repo, sha } = github.context
2119

22-
console.log('### main.context ###')
20+
console.log('### post.context ###')
2321
console.log(`actor: ${actor}`)
2422
console.log(`ref: ${ref}`)
23+
console.log(`owner: ${repo.owner}`)
24+
console.log(`repo: ${repo.repo}`)
25+
console.log(`compare: ${github.context.payload.compare as string}`)
26+
console.log(`new_sha: ${sha}`)
2527
console.log('\n')
2628

2729
try {
28-
console.log('### main.inputs ###')
30+
console.log('### post.inputs ###')
2931
token = getInput('token', { required: true }) ?? ''
3032

3133
type = getInput('type', { required: true }) as ActionType
3234
console.log(`type: ${type}`)
3335

34-
logsUrl = getInput('logs') ?? ''
35-
console.log(`logs: ${logsUrl}`)
36+
jobStatus = getInput('job_status') ?? 'success'
37+
console.log(`job_status: ${jobStatus}`)
3638

37-
description = getInput('description') ?? `deployed by ${actor}`
38-
console.log(`description: ${description}`)
39+
environment = getEnvironment(ref)
3940

40-
status = (getInput('status') ?? 'in_progress') as DeploymentStatus
41-
console.log(`status: ${status}`)
41+
slackToken = getInput('slack_token') ?? ''
42+
console.log(`slack_token: ${slackToken === '' ? 'none' : 'passed'}`)
4243

43-
environment = getEnvironment(ref)
44+
slackChannel = getInput('slack_channel') ?? ''
45+
console.log(`slack_channel: ${slackChannel}`)
4446

45-
environmentUrl = getInput('environment_url') ?? ''
46-
console.log(`environmentUrl: ${environmentUrl}`)
47+
// We want to mutate the Deployment by default, unless the deployment
48+
// was already mutated by another action and we just want to notify
49+
mutateDeployment = getInput('mutate_deployment') !== 'false'
50+
console.log(`mutate_deployment: ${mutateDeployment.toString()}`)
4751

48-
mainBranch = getInput('main_branch') ?? 'master'
49-
console.log(`main branch: ${mainBranch}`)
52+
currentSha = getInput('current_sha') ?? sha
53+
console.log(`current_sha: ${currentSha}`)
5054

51-
const shouldRequireDeploymentId = type === 'delete'
52-
deploymentId = getInput(DEPLOYMENT_ID_STATE_NAME, { required: shouldRequireDeploymentId }) ?? '0'
53-
console.log(`deploymentId: ${deploymentId}`)
55+
deploymentConfidenceUrl = getInput('deployment_confidence_url') ?? ''
56+
console.log(`deployment confidence dashboard URL: ${deploymentConfidenceUrl}`)
5457
} catch (error) {
5558
core.error(error)
5659
core.setFailed(`Wrong parameters given: ${JSON.stringify(error, null, 2)}`)
5760
throw error
5861
}
5962
console.log('\n')
63+
console.log('### post ###')
6064

6165
const client = new github.GitHub(token, { previews: ['ant-man', 'flash'] })
62-
63-
console.log('### run ###')
66+
const status: DeploymentStatus = jobStatus === 'success' ? 'success' : 'failure'
67+
console.log(`status: ${status}`)
6468

6569
switch (type) {
6670
case 'create':
67-
try {
68-
// If a deployment was already created on a previous job,
69-
// don't create one again.
70-
if (deploymentId === '0') {
71-
deploymentId = await create(
72-
client,
73-
logsUrl,
74-
description,
75-
status,
76-
environment,
77-
environmentUrl,
78-
mainBranch
79-
)
80-
}
81-
console.log(`saveState::${DEPLOYMENT_ID_STATE_NAME}: ${deploymentId}`)
82-
core.saveState(DEPLOYMENT_ID_STATE_NAME, deploymentId) // for internal use
83-
core.setOutput(DEPLOYMENT_ID_STATE_NAME, deploymentId) // keep that output for external dependencies
84-
} catch (error) {
85-
core.error(error)
86-
core.setFailed(`Create deployment failed: ${JSON.stringify(error, null, 2)}`)
87-
throw error
71+
deploymentId = core.getState(DEPLOYMENT_ID_STATE_NAME)
72+
console.log(`deploymentId: ${deploymentId}`)
73+
if (deploymentId === undefined || deploymentId === '') {
74+
console.log('No deploymentId provided, skip status update')
75+
return
8876
}
89-
break
90-
case 'delete':
77+
78+
// Post Slack notification
79+
await postSlackNotification(slackToken, slackChannel, environment, status, github.context, deploymentConfidenceUrl, currentSha)
80+
9181
try {
92-
await deleteDeployment(
93-
client,
94-
Number(deploymentId)
95-
)
82+
// If the deployment was managed by another workflow we don't want to mutate it here
83+
if (mutateDeployment) await complete(client, Number(deploymentId), status)
9684
} catch (error) {
85+
if (error.name === 'HttpError' && error.status === 404) {
86+
console.log('Couldn\'t complete a deployment: not found')
87+
return
88+
}
9789
core.error(error)
98-
core.setFailed(`Delete deployment failed: ${JSON.stringify(error, null, 2)}`)
90+
core.setFailed(`Complete deployment failed: ${JSON.stringify(error, null, 2)}`)
9991
throw error
10092
}
93+
10194
break
102-
case 'delete-all':
103-
try {
104-
await deleteAll(
105-
client,
106-
environment
107-
)
108-
} catch (error) {
109-
core.error(error)
110-
core.setFailed(`Delete all deployments failed: ${JSON.stringify(error, null, 2)}`)
111-
throw error
112-
}
95+
default:
96+
console.log(`No post script for type: ${type}`)
11397
break
11498
}
11599
}

src/post.ts

Lines changed: 0 additions & 101 deletions
This file was deleted.

0 commit comments

Comments
 (0)