mirror of
https://github.com/actions/deploy-pages.git
synced 2025-12-08 08:06:15 +00:00
@@ -11,7 +11,7 @@
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018
|
||||
"ecmaVersion": 2020
|
||||
},
|
||||
"rules": {
|
||||
"semi": ["error", "never"]
|
||||
|
||||
34
.github/workflows/check-formatting.yml
vendored
Normal file
34
.github/workflows/check-formatting.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Checking formatting
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
# This allows a subsequently queued workflow run to interrupt previous runs
|
||||
concurrency:
|
||||
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Node.JS
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16.x
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Verify formatting
|
||||
run: npm run format:check
|
||||
34
.github/workflows/check-linter.yml
vendored
Normal file
34
.github/workflows/check-linter.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Checking linter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
# This allows a subsequently queued workflow run to interrupt previous runs
|
||||
concurrency:
|
||||
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Node.JS
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16.x
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Verify linter
|
||||
run: npm run lint
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"trailingComma": "none",
|
||||
"bracketSpacing": false,
|
||||
"arrowParens": "avoid"
|
||||
}
|
||||
10
.prettierrc.yml
Normal file
10
.prettierrc.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
# Prettier (formatter) configuration
|
||||
---
|
||||
printWidth: 120
|
||||
tabWidth: 2
|
||||
useTabs: false
|
||||
semi: false
|
||||
singleQuote: true
|
||||
trailingComma: none
|
||||
bracketSpacing: true
|
||||
arrowParens: avoid
|
||||
57
dist/index.js
vendored
57
dist/index.js
vendored
@@ -8207,9 +8207,9 @@ const axios = __nccwpck_require__(6545)
|
||||
const getContext = __nccwpck_require__(1319)
|
||||
|
||||
const errorStatus = {
|
||||
'unknown_status' : 'Unable to get deployment status.',
|
||||
'not_found' : 'Deployment not found.',
|
||||
'deployment_attempt_error' : 'Deployment temporarily failed, a retry will be automatically scheduled...'
|
||||
unknown_status: 'Unable to get deployment status.',
|
||||
not_found: 'Deployment not found.',
|
||||
deployment_attempt_error: 'Deployment temporarily failed, a retry will be automatically scheduled...'
|
||||
}
|
||||
|
||||
class Deployment {
|
||||
@@ -8238,7 +8238,7 @@ class Deployment {
|
||||
const pagesDeployEndpoint = `${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment`
|
||||
const artifactExgUrl = `${this.runTimeUrl}_apis/pipelines/workflows/${this.workflowRun}/artifacts?api-version=6.0-preview`
|
||||
core.info(`Artifact URL: ${artifactExgUrl}`)
|
||||
const {data} = await axios.get(artifactExgUrl, {
|
||||
const { data } = await axios.get(artifactExgUrl, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${this.runTimeToken}`,
|
||||
'Content-Type': 'application/json'
|
||||
@@ -8247,7 +8247,9 @@ class Deployment {
|
||||
core.info(JSON.stringify(data))
|
||||
const artifactRawUrl = data?.value?.find(artifact => artifact.name === this.artifactName)?.url
|
||||
if (!artifactRawUrl) {
|
||||
throw new Error('No uploaded artifact was found! Please check if there are any errors at build step, or uploaded artifact name is correct.')
|
||||
throw new Error(
|
||||
'No uploaded artifact was found! Please check if there are any errors at build step, or uploaded artifact name is correct.'
|
||||
)
|
||||
}
|
||||
|
||||
const artifactUrl = `${artifactRawUrl}&%24expand=SignedContent`
|
||||
@@ -8271,7 +8273,6 @@ class Deployment {
|
||||
this.deploymentInfo = response.data
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
core.info(error.stack)
|
||||
|
||||
// output raw error in debug mode.
|
||||
@@ -8281,20 +8282,18 @@ class Deployment {
|
||||
if (error.response) {
|
||||
let errorMessage = `Failed to create deployment (status: ${error.response.status}) with build version ${this.buildVersion}. `
|
||||
if (error.response.status == 400) {
|
||||
let message = ""
|
||||
let message = ''
|
||||
if (error.response.data && error.response.data.message) {
|
||||
message = error.response.data.message
|
||||
} else {
|
||||
message = error.response.data
|
||||
}
|
||||
errorMessage += `Responded with: ${message}`
|
||||
}
|
||||
else if (error.response.status == 403) {
|
||||
} else if (error.response.status == 403) {
|
||||
errorMessage += `Ensure GITHUB_TOKEN has permission "pages: write".`
|
||||
} else if (error.response.status == 404) {
|
||||
errorMessage += `Ensure GitHub Pages has been enabled.`
|
||||
}
|
||||
else if (error.response.status >= 500) {
|
||||
} else if (error.response.status >= 500) {
|
||||
errorMessage += `Server error, is githubstatus.com reporting a Pages outage? Please re-run the deployment at a later time.`
|
||||
}
|
||||
throw errorMessage
|
||||
@@ -8307,10 +8306,11 @@ class Deployment {
|
||||
// Poll the deployment endpoint for status
|
||||
async check() {
|
||||
try {
|
||||
const statusUrl = this.deploymentInfo != null ?
|
||||
this.deploymentInfo["status_url"] :
|
||||
`${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment/status/${process.env['GITHUB_SHA']}`
|
||||
core.setOutput('page_url', this.deploymentInfo != null ? this.deploymentInfo["page_url"] : "")
|
||||
const statusUrl =
|
||||
this.deploymentInfo != null
|
||||
? this.deploymentInfo['status_url']
|
||||
: `${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment/status/${process.env['GITHUB_SHA']}`
|
||||
core.setOutput('page_url', this.deploymentInfo != null ? this.deploymentInfo['page_url'] : '')
|
||||
const timeout = Number(core.getInput('timeout'))
|
||||
const reportingInterval = Number(core.getInput('reporting_interval'))
|
||||
const maxErrorCount = Number(core.getInput('error_count'))
|
||||
@@ -8340,9 +8340,11 @@ class Deployment {
|
||||
// Fall into permanent error, it may be caused by ongoing incident or malicious deployment content or exhausted automatic retry times.
|
||||
core.setFailed('Deployment failed, try again later.')
|
||||
break
|
||||
} else if(res.data.status == 'deployment_content_failed') {
|
||||
} else if (res.data.status == 'deployment_content_failed') {
|
||||
// The uploaded artifact is invalid.
|
||||
core.setFailed('Artifact could not be deployed. Please ensure the content does not contain any hard links, symlinks and total size is less than 10GB.')
|
||||
core.setFailed(
|
||||
'Artifact could not be deployed. Please ensure the content does not contain any hard links, symlinks and total size is less than 10GB.'
|
||||
)
|
||||
break
|
||||
} else if (errorStatus[res.data.status]) {
|
||||
// A temporary error happened, will query the status again
|
||||
@@ -8356,7 +8358,7 @@ class Deployment {
|
||||
|
||||
// set the Maximum error reporting interval greater than 15 sec but below 30 sec.
|
||||
if (errorReportingInterval < 1000 * 15) {
|
||||
errorReportingInterval = errorReportingInterval << 1 | 1
|
||||
errorReportingInterval = (errorReportingInterval << 1) | 1
|
||||
}
|
||||
} else {
|
||||
// reset the error reporting interval once get the proper status back.
|
||||
@@ -8383,8 +8385,9 @@ class Deployment {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = {Deployment}
|
||||
}
|
||||
module.exports = { Deployment }
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
@@ -8409,7 +8412,7 @@ axiosRetry(axios, {
|
||||
}
|
||||
})
|
||||
|
||||
const {Deployment} = __nccwpck_require__(2877)
|
||||
const { Deployment } = __nccwpck_require__(2877)
|
||||
|
||||
async function emitTelemetry() {
|
||||
// All variables we need from the runtime are set in the Deployment constructor
|
||||
@@ -8419,7 +8422,7 @@ async function emitTelemetry() {
|
||||
await axios
|
||||
.post(
|
||||
telemetryUrl,
|
||||
{github_run_id: deployment.workflowRun},
|
||||
{ github_run_id: deployment.workflowRun },
|
||||
{
|
||||
headers: {
|
||||
Accept: 'application/vnd.github.v3+json',
|
||||
@@ -8447,7 +8450,7 @@ async function main() {
|
||||
|
||||
main()
|
||||
|
||||
module.exports = {emitTelemetry}
|
||||
module.exports = { emitTelemetry }
|
||||
|
||||
|
||||
/***/ }),
|
||||
@@ -8623,7 +8626,7 @@ const core = __nccwpck_require__(2186)
|
||||
// const github = require('@actions/github'); // TODO: Not used until we publish API endpoint to the @action/github package
|
||||
const axios = __nccwpck_require__(6545)
|
||||
|
||||
const {Deployment} = __nccwpck_require__(2877)
|
||||
const { Deployment } = __nccwpck_require__(2877)
|
||||
const deployment = new Deployment()
|
||||
|
||||
// TODO: If the artifact hasn't been created, we can create it and upload to artifact storage ourselves
|
||||
@@ -8653,7 +8656,7 @@ async function cancelHandler(evtOrExitCodeOrError) {
|
||||
}
|
||||
|
||||
async function main() {
|
||||
let idToken = ""
|
||||
let idToken = ''
|
||||
try {
|
||||
idToken = await core.getIDToken()
|
||||
} catch (error) {
|
||||
@@ -8674,8 +8677,8 @@ process.on('SIGINT', cancelHandler)
|
||||
process.on('SIGTERM', cancelHandler)
|
||||
|
||||
// Main
|
||||
const emitTelemetry = core.getInput("emit_telemetry")
|
||||
if (emitTelemetry === "true") {
|
||||
const emitTelemetry = core.getInput('emit_telemetry')
|
||||
if (emitTelemetry === 'true') {
|
||||
__nccwpck_require__(9557)
|
||||
} else {
|
||||
main()
|
||||
|
||||
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -27,7 +27,9 @@
|
||||
"lint": "eslint src",
|
||||
"prepare": "ncc build src/index.js -o dist --source-map --license licenses.txt && ncc build src/pre.js -o pre --source-map --license licenses.txt",
|
||||
"test": "jest",
|
||||
"all": "npm run lint && npm run prepare && npm run test"
|
||||
"format": "prettier --write 'src/**/*.js'",
|
||||
"format:check": "prettier --check 'src/**/*.js'",
|
||||
"all": "npm run format && npm run lint && npm run prepare && npm run test"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
49
pre/index.js
49
pre/index.js
@@ -8207,9 +8207,9 @@ const axios = __nccwpck_require__(6545)
|
||||
const getContext = __nccwpck_require__(1319)
|
||||
|
||||
const errorStatus = {
|
||||
'unknown_status' : 'Unable to get deployment status.',
|
||||
'not_found' : 'Deployment not found.',
|
||||
'deployment_attempt_error' : 'Deployment temporarily failed, a retry will be automatically scheduled...'
|
||||
unknown_status: 'Unable to get deployment status.',
|
||||
not_found: 'Deployment not found.',
|
||||
deployment_attempt_error: 'Deployment temporarily failed, a retry will be automatically scheduled...'
|
||||
}
|
||||
|
||||
class Deployment {
|
||||
@@ -8238,7 +8238,7 @@ class Deployment {
|
||||
const pagesDeployEndpoint = `${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment`
|
||||
const artifactExgUrl = `${this.runTimeUrl}_apis/pipelines/workflows/${this.workflowRun}/artifacts?api-version=6.0-preview`
|
||||
core.info(`Artifact URL: ${artifactExgUrl}`)
|
||||
const {data} = await axios.get(artifactExgUrl, {
|
||||
const { data } = await axios.get(artifactExgUrl, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${this.runTimeToken}`,
|
||||
'Content-Type': 'application/json'
|
||||
@@ -8247,7 +8247,9 @@ class Deployment {
|
||||
core.info(JSON.stringify(data))
|
||||
const artifactRawUrl = data?.value?.find(artifact => artifact.name === this.artifactName)?.url
|
||||
if (!artifactRawUrl) {
|
||||
throw new Error('No uploaded artifact was found! Please check if there are any errors at build step, or uploaded artifact name is correct.')
|
||||
throw new Error(
|
||||
'No uploaded artifact was found! Please check if there are any errors at build step, or uploaded artifact name is correct.'
|
||||
)
|
||||
}
|
||||
|
||||
const artifactUrl = `${artifactRawUrl}&%24expand=SignedContent`
|
||||
@@ -8271,7 +8273,6 @@ class Deployment {
|
||||
this.deploymentInfo = response.data
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
core.info(error.stack)
|
||||
|
||||
// output raw error in debug mode.
|
||||
@@ -8281,20 +8282,18 @@ class Deployment {
|
||||
if (error.response) {
|
||||
let errorMessage = `Failed to create deployment (status: ${error.response.status}) with build version ${this.buildVersion}. `
|
||||
if (error.response.status == 400) {
|
||||
let message = ""
|
||||
let message = ''
|
||||
if (error.response.data && error.response.data.message) {
|
||||
message = error.response.data.message
|
||||
} else {
|
||||
message = error.response.data
|
||||
}
|
||||
errorMessage += `Responded with: ${message}`
|
||||
}
|
||||
else if (error.response.status == 403) {
|
||||
} else if (error.response.status == 403) {
|
||||
errorMessage += `Ensure GITHUB_TOKEN has permission "pages: write".`
|
||||
} else if (error.response.status == 404) {
|
||||
errorMessage += `Ensure GitHub Pages has been enabled.`
|
||||
}
|
||||
else if (error.response.status >= 500) {
|
||||
} else if (error.response.status >= 500) {
|
||||
errorMessage += `Server error, is githubstatus.com reporting a Pages outage? Please re-run the deployment at a later time.`
|
||||
}
|
||||
throw errorMessage
|
||||
@@ -8307,10 +8306,11 @@ class Deployment {
|
||||
// Poll the deployment endpoint for status
|
||||
async check() {
|
||||
try {
|
||||
const statusUrl = this.deploymentInfo != null ?
|
||||
this.deploymentInfo["status_url"] :
|
||||
`${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment/status/${process.env['GITHUB_SHA']}`
|
||||
core.setOutput('page_url', this.deploymentInfo != null ? this.deploymentInfo["page_url"] : "")
|
||||
const statusUrl =
|
||||
this.deploymentInfo != null
|
||||
? this.deploymentInfo['status_url']
|
||||
: `${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment/status/${process.env['GITHUB_SHA']}`
|
||||
core.setOutput('page_url', this.deploymentInfo != null ? this.deploymentInfo['page_url'] : '')
|
||||
const timeout = Number(core.getInput('timeout'))
|
||||
const reportingInterval = Number(core.getInput('reporting_interval'))
|
||||
const maxErrorCount = Number(core.getInput('error_count'))
|
||||
@@ -8340,9 +8340,11 @@ class Deployment {
|
||||
// Fall into permanent error, it may be caused by ongoing incident or malicious deployment content or exhausted automatic retry times.
|
||||
core.setFailed('Deployment failed, try again later.')
|
||||
break
|
||||
} else if(res.data.status == 'deployment_content_failed') {
|
||||
} else if (res.data.status == 'deployment_content_failed') {
|
||||
// The uploaded artifact is invalid.
|
||||
core.setFailed('Artifact could not be deployed. Please ensure the content does not contain any hard links, symlinks and total size is less than 10GB.')
|
||||
core.setFailed(
|
||||
'Artifact could not be deployed. Please ensure the content does not contain any hard links, symlinks and total size is less than 10GB.'
|
||||
)
|
||||
break
|
||||
} else if (errorStatus[res.data.status]) {
|
||||
// A temporary error happened, will query the status again
|
||||
@@ -8356,7 +8358,7 @@ class Deployment {
|
||||
|
||||
// set the Maximum error reporting interval greater than 15 sec but below 30 sec.
|
||||
if (errorReportingInterval < 1000 * 15) {
|
||||
errorReportingInterval = errorReportingInterval << 1 | 1
|
||||
errorReportingInterval = (errorReportingInterval << 1) | 1
|
||||
}
|
||||
} else {
|
||||
// reset the error reporting interval once get the proper status back.
|
||||
@@ -8383,8 +8385,9 @@ class Deployment {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = {Deployment}
|
||||
}
|
||||
module.exports = { Deployment }
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
@@ -8409,7 +8412,7 @@ axiosRetry(axios, {
|
||||
}
|
||||
})
|
||||
|
||||
const {Deployment} = __nccwpck_require__(2877)
|
||||
const { Deployment } = __nccwpck_require__(2877)
|
||||
|
||||
async function emitTelemetry() {
|
||||
// All variables we need from the runtime are set in the Deployment constructor
|
||||
@@ -8419,7 +8422,7 @@ async function emitTelemetry() {
|
||||
await axios
|
||||
.post(
|
||||
telemetryUrl,
|
||||
{github_run_id: deployment.workflowRun},
|
||||
{ github_run_id: deployment.workflowRun },
|
||||
{
|
||||
headers: {
|
||||
Accept: 'application/vnd.github.v3+json',
|
||||
@@ -8447,7 +8450,7 @@ async function main() {
|
||||
|
||||
main()
|
||||
|
||||
module.exports = {emitTelemetry}
|
||||
module.exports = { emitTelemetry }
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -7,9 +7,9 @@ const axios = require('axios')
|
||||
const getContext = require('./context')
|
||||
|
||||
const errorStatus = {
|
||||
'unknown_status' : 'Unable to get deployment status.',
|
||||
'not_found' : 'Deployment not found.',
|
||||
'deployment_attempt_error' : 'Deployment temporarily failed, a retry will be automatically scheduled...'
|
||||
unknown_status: 'Unable to get deployment status.',
|
||||
not_found: 'Deployment not found.',
|
||||
deployment_attempt_error: 'Deployment temporarily failed, a retry will be automatically scheduled...'
|
||||
}
|
||||
|
||||
class Deployment {
|
||||
@@ -38,7 +38,7 @@ class Deployment {
|
||||
const pagesDeployEndpoint = `${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment`
|
||||
const artifactExgUrl = `${this.runTimeUrl}_apis/pipelines/workflows/${this.workflowRun}/artifacts?api-version=6.0-preview`
|
||||
core.info(`Artifact URL: ${artifactExgUrl}`)
|
||||
const {data} = await axios.get(artifactExgUrl, {
|
||||
const { data } = await axios.get(artifactExgUrl, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${this.runTimeToken}`,
|
||||
'Content-Type': 'application/json'
|
||||
@@ -47,7 +47,9 @@ class Deployment {
|
||||
core.info(JSON.stringify(data))
|
||||
const artifactRawUrl = data?.value?.find(artifact => artifact.name === this.artifactName)?.url
|
||||
if (!artifactRawUrl) {
|
||||
throw new Error('No uploaded artifact was found! Please check if there are any errors at build step, or uploaded artifact name is correct.')
|
||||
throw new Error(
|
||||
'No uploaded artifact was found! Please check if there are any errors at build step, or uploaded artifact name is correct.'
|
||||
)
|
||||
}
|
||||
|
||||
const artifactUrl = `${artifactRawUrl}&%24expand=SignedContent`
|
||||
@@ -71,7 +73,6 @@ class Deployment {
|
||||
this.deploymentInfo = response.data
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
core.info(error.stack)
|
||||
|
||||
// output raw error in debug mode.
|
||||
@@ -81,20 +82,18 @@ class Deployment {
|
||||
if (error.response) {
|
||||
let errorMessage = `Failed to create deployment (status: ${error.response.status}) with build version ${this.buildVersion}. `
|
||||
if (error.response.status == 400) {
|
||||
let message = ""
|
||||
let message = ''
|
||||
if (error.response.data && error.response.data.message) {
|
||||
message = error.response.data.message
|
||||
} else {
|
||||
message = error.response.data
|
||||
}
|
||||
errorMessage += `Responded with: ${message}`
|
||||
}
|
||||
else if (error.response.status == 403) {
|
||||
} else if (error.response.status == 403) {
|
||||
errorMessage += `Ensure GITHUB_TOKEN has permission "pages: write".`
|
||||
} else if (error.response.status == 404) {
|
||||
errorMessage += `Ensure GitHub Pages has been enabled.`
|
||||
}
|
||||
else if (error.response.status >= 500) {
|
||||
} else if (error.response.status >= 500) {
|
||||
errorMessage += `Server error, is githubstatus.com reporting a Pages outage? Please re-run the deployment at a later time.`
|
||||
}
|
||||
throw errorMessage
|
||||
@@ -107,10 +106,11 @@ class Deployment {
|
||||
// Poll the deployment endpoint for status
|
||||
async check() {
|
||||
try {
|
||||
const statusUrl = this.deploymentInfo != null ?
|
||||
this.deploymentInfo["status_url"] :
|
||||
`${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment/status/${process.env['GITHUB_SHA']}`
|
||||
core.setOutput('page_url', this.deploymentInfo != null ? this.deploymentInfo["page_url"] : "")
|
||||
const statusUrl =
|
||||
this.deploymentInfo != null
|
||||
? this.deploymentInfo['status_url']
|
||||
: `${this.githubApiUrl}/repos/${this.repositoryNwo}/pages/deployment/status/${process.env['GITHUB_SHA']}`
|
||||
core.setOutput('page_url', this.deploymentInfo != null ? this.deploymentInfo['page_url'] : '')
|
||||
const timeout = Number(core.getInput('timeout'))
|
||||
const reportingInterval = Number(core.getInput('reporting_interval'))
|
||||
const maxErrorCount = Number(core.getInput('error_count'))
|
||||
@@ -140,9 +140,11 @@ class Deployment {
|
||||
// Fall into permanent error, it may be caused by ongoing incident or malicious deployment content or exhausted automatic retry times.
|
||||
core.setFailed('Deployment failed, try again later.')
|
||||
break
|
||||
} else if(res.data.status == 'deployment_content_failed') {
|
||||
} else if (res.data.status == 'deployment_content_failed') {
|
||||
// The uploaded artifact is invalid.
|
||||
core.setFailed('Artifact could not be deployed. Please ensure the content does not contain any hard links, symlinks and total size is less than 10GB.')
|
||||
core.setFailed(
|
||||
'Artifact could not be deployed. Please ensure the content does not contain any hard links, symlinks and total size is less than 10GB.'
|
||||
)
|
||||
break
|
||||
} else if (errorStatus[res.data.status]) {
|
||||
// A temporary error happened, will query the status again
|
||||
@@ -156,7 +158,7 @@ class Deployment {
|
||||
|
||||
// set the Maximum error reporting interval greater than 15 sec but below 30 sec.
|
||||
if (errorReportingInterval < 1000 * 15) {
|
||||
errorReportingInterval = errorReportingInterval << 1 | 1
|
||||
errorReportingInterval = (errorReportingInterval << 1) | 1
|
||||
}
|
||||
} else {
|
||||
// reset the error reporting interval once get the proper status back.
|
||||
@@ -183,5 +185,5 @@ class Deployment {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
module.exports = {Deployment}
|
||||
}
|
||||
module.exports = { Deployment }
|
||||
|
||||
@@ -8,7 +8,7 @@ const core = require('@actions/core')
|
||||
// const github = require('@actions/github'); // TODO: Not used until we publish API endpoint to the @action/github package
|
||||
const axios = require('axios')
|
||||
|
||||
const {Deployment} = require('./deployment')
|
||||
const { Deployment } = require('./deployment')
|
||||
const deployment = new Deployment()
|
||||
|
||||
// TODO: If the artifact hasn't been created, we can create it and upload to artifact storage ourselves
|
||||
@@ -38,7 +38,7 @@ async function cancelHandler(evtOrExitCodeOrError) {
|
||||
}
|
||||
|
||||
async function main() {
|
||||
let idToken = ""
|
||||
let idToken = ''
|
||||
try {
|
||||
idToken = await core.getIDToken()
|
||||
} catch (error) {
|
||||
@@ -59,8 +59,8 @@ process.on('SIGINT', cancelHandler)
|
||||
process.on('SIGTERM', cancelHandler)
|
||||
|
||||
// Main
|
||||
const emitTelemetry = core.getInput("emit_telemetry")
|
||||
if (emitTelemetry === "true") {
|
||||
const emitTelemetry = core.getInput('emit_telemetry')
|
||||
if (emitTelemetry === 'true') {
|
||||
require('./pre')
|
||||
} else {
|
||||
main()
|
||||
|
||||
@@ -7,7 +7,7 @@ const axios = require('axios')
|
||||
|
||||
const { expect, jest } = require('@jest/globals')
|
||||
|
||||
const {Deployment} = require('./deployment')
|
||||
const { Deployment } = require('./deployment')
|
||||
|
||||
describe('with all environment variables set', () => {
|
||||
beforeEach(() => {
|
||||
@@ -35,8 +35,8 @@ describe('with variables missing', () => {
|
||||
it('execution fails if there are missing variables', done => {
|
||||
delete process.env.ACTIONS_RUNTIME_URL
|
||||
const ip = path.join(__dirname, './index.js')
|
||||
cp.exec(`node ${ip}`, {env: process.env}, (err, stdout) => {
|
||||
expect(stdout).toBe("")
|
||||
cp.exec(`node ${ip}`, { env: process.env }, (err, stdout) => {
|
||||
expect(stdout).toBe('')
|
||||
expect(err).toBeTruthy()
|
||||
expect(err.code).toBe(1)
|
||||
done()
|
||||
@@ -80,10 +80,16 @@ describe('create', () => {
|
||||
|
||||
it('can successfully create a deployment', async () => {
|
||||
process.env.GITHUB_SHA = 'valid-build-version'
|
||||
const fakeJwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjllMWIxOC1jOGFiLTRhZGQtOGYxOC03MzVlMzVjZGJhZjAiLCJzdWIiOiJyZXBvOnBhcGVyLXNwYS9taW55aTplbnZpcm9ubWVudDpQcm9kdWN0aW9uIiwiYXVkIjoiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyLXNwYSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInNoYSI6ImEyODU1MWJmODdiZDk3NTFiMzdiMmM0YjM3M2MxZjU3NjFmYWM2MjYiLCJyZXBvc2l0b3J5IjoicGFwZXItc3BhL21pbnlpIiwicmVwb3NpdG9yeV9vd25lciI6InBhcGVyLXNwYSIsInJ1bl9pZCI6IjE1NDY0NTkzNjQiLCJydW5fbnVtYmVyIjoiMzQiLCJydW5fYXR0ZW1wdCI6IjIiLCJhY3RvciI6IllpTXlzdHkiLCJ3b3JrZmxvdyI6IkNJIiwiaGVhZF9yZWYiOiIiLCJiYXNlX3JlZiI6IiIsImV2ZW50X25hbWUiOiJwdXNoIiwicmVmX3R5cGUiOiJicmFuY2giLCJlbnZpcm9ubWVudCI6IlByb2R1Y3Rpb24iLCJqb2Jfd29ya2Zsb3dfcmVmIjoicGFwZXItc3BhL21pbnlpLy5naXRodWIvd29ya2Zsb3dzL2JsYW5rLnltbEByZWZzL2hlYWRzL21haW4iLCJpc3MiOiJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwibmJmIjoxNjM4ODI4MDI4LCJleHAiOjE2Mzg4Mjg5MjgsImlhdCI6MTYzODgyODYyOH0.1wyupfxu1HGoTyIqatYg0hIxy2-0bMO-yVlmLSMuu2w'
|
||||
const fakeJwt =
|
||||
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjllMWIxOC1jOGFiLTRhZGQtOGYxOC03MzVlMzVjZGJhZjAiLCJzdWIiOiJyZXBvOnBhcGVyLXNwYS9taW55aTplbnZpcm9ubWVudDpQcm9kdWN0aW9uIiwiYXVkIjoiaHR0cHM6Ly9naXRodWIuY29tL3BhcGVyLXNwYSIsInJlZiI6InJlZnMvaGVhZHMvbWFpbiIsInNoYSI6ImEyODU1MWJmODdiZDk3NTFiMzdiMmM0YjM3M2MxZjU3NjFmYWM2MjYiLCJyZXBvc2l0b3J5IjoicGFwZXItc3BhL21pbnlpIiwicmVwb3NpdG9yeV9vd25lciI6InBhcGVyLXNwYSIsInJ1bl9pZCI6IjE1NDY0NTkzNjQiLCJydW5fbnVtYmVyIjoiMzQiLCJydW5fYXR0ZW1wdCI6IjIiLCJhY3RvciI6IllpTXlzdHkiLCJ3b3JrZmxvdyI6IkNJIiwiaGVhZF9yZWYiOiIiLCJiYXNlX3JlZiI6IiIsImV2ZW50X25hbWUiOiJwdXNoIiwicmVmX3R5cGUiOiJicmFuY2giLCJlbnZpcm9ubWVudCI6IlByb2R1Y3Rpb24iLCJqb2Jfd29ya2Zsb3dfcmVmIjoicGFwZXItc3BhL21pbnlpLy5naXRodWIvd29ya2Zsb3dzL2JsYW5rLnltbEByZWZzL2hlYWRzL21haW4iLCJpc3MiOiJodHRwczovL3Rva2VuLmFjdGlvbnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwibmJmIjoxNjM4ODI4MDI4LCJleHAiOjE2Mzg4Mjg5MjgsImlhdCI6MTYzODgyODYyOH0.1wyupfxu1HGoTyIqatYg0hIxy2-0bMO-yVlmLSMuu2w'
|
||||
const scope = nock(`http://my-url`)
|
||||
.get('/_apis/pipelines/workflows/123/artifacts?api-version=6.0-preview')
|
||||
.reply(200, { value: [ {url: 'https://another-artifact.com', name: 'another-artifact'}, { url: 'https://fake-artifact.com', name: 'github-pages' }] })
|
||||
.reply(200, {
|
||||
value: [
|
||||
{ url: 'https://another-artifact.com', name: 'another-artifact' },
|
||||
{ url: 'https://fake-artifact.com', name: 'github-pages' }
|
||||
]
|
||||
})
|
||||
|
||||
core.getIDToken = jest.fn().mockResolvedValue(fakeJwt)
|
||||
axios.post = jest.fn().mockResolvedValue('test')
|
||||
@@ -109,9 +115,7 @@ describe('create', () => {
|
||||
)
|
||||
|
||||
expect(core.setFailed).not.toHaveBeenCalled()
|
||||
expect(core.info).toHaveBeenCalledWith(
|
||||
'Created deployment for valid-build-version'
|
||||
)
|
||||
expect(core.info).toHaveBeenCalledWith('Created deployment for valid-build-version')
|
||||
|
||||
scope.done()
|
||||
})
|
||||
@@ -131,7 +135,6 @@ describe('create', () => {
|
||||
try {
|
||||
deployment.create()
|
||||
} catch (err) {
|
||||
|
||||
expect(axios.post).toBeCalledWith(
|
||||
'https://api.github.com/repos/paper-spa/is-awesome/pages/deployment',
|
||||
{
|
||||
@@ -147,15 +150,12 @@ describe('create', () => {
|
||||
}
|
||||
)
|
||||
|
||||
expect(core.info).toHaveBeenLastCalledWith(
|
||||
'Failed to create deployment for invalid-build-version.'
|
||||
)
|
||||
expect(core.info).toHaveBeenLastCalledWith('Failed to create deployment for invalid-build-version.')
|
||||
expect(core.setFailed).toHaveBeenCalledWith({ status: 400 })
|
||||
|
||||
scope.done()
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
describe('check', () => {
|
||||
|
||||
@@ -16,7 +16,7 @@ axiosRetry(axios, {
|
||||
}
|
||||
})
|
||||
|
||||
const {Deployment} = require('./deployment')
|
||||
const { Deployment } = require('./deployment')
|
||||
|
||||
async function emitTelemetry() {
|
||||
// All variables we need from the runtime are set in the Deployment constructor
|
||||
@@ -26,7 +26,7 @@ async function emitTelemetry() {
|
||||
await axios
|
||||
.post(
|
||||
telemetryUrl,
|
||||
{github_run_id: deployment.workflowRun},
|
||||
{ github_run_id: deployment.workflowRun },
|
||||
{
|
||||
headers: {
|
||||
Accept: 'application/vnd.github.v3+json',
|
||||
@@ -54,4 +54,4 @@ async function main() {
|
||||
|
||||
main()
|
||||
|
||||
module.exports = {emitTelemetry}
|
||||
module.exports = { emitTelemetry }
|
||||
|
||||
@@ -2,9 +2,9 @@ const core = require('@actions/core')
|
||||
const process = require('process')
|
||||
const axios = require('axios')
|
||||
|
||||
const {expect, jest} = require('@jest/globals')
|
||||
const { expect, jest } = require('@jest/globals')
|
||||
|
||||
const {emitTelemetry} = require('./pre')
|
||||
const { emitTelemetry } = require('./pre')
|
||||
|
||||
describe('emitTelemetry', () => {
|
||||
beforeAll(() => {
|
||||
|
||||
Reference in New Issue
Block a user