Add netlify process
continuous-integration/woodpecker the build failed Details

Signed-off-by: jolheiser <john.olheiser@gmail.com>
jolheiser 2021-12-09 22:02:48 -06:00
parent 125458693e
commit 2e5b10330e
Signed by: jolheiser
GPG Key ID: B853ADA5DA7BBF7A
7 changed files with 16518 additions and 1035 deletions

View File

@ -1,44 +0,0 @@
---
kind: pipeline
name: compliance
trigger:
event:
- pull_request
steps:
- name: build
pull: always
image: node:14
commands:
- npm install
- npm run build
---
kind: pipeline
name: release
trigger:
event:
- push
branch:
- main
steps:
- name: build
pull: always
image: node:14
commands:
- npm install
- npm run build
- name: archive
pull: always
image: jolheiser/drone-arc:latest
settings:
files:
- "dist/*"
output: dist.tar.gz
- name: gitea-release
pull: always
image: jolheiser/drone-gitea-main:latest
settings:
token:
from_secret: gitea_token
base: https://git.birbmc.com
files:
- "dist.tar.gz"

2
.gitignore vendored
View File

@ -10,3 +10,5 @@ dist/
# Node
node_modules/
# Local Netlify folder
.netlify

38
.woodpecker.yml 100644
View File

@ -0,0 +1,38 @@
clone:
git:
image: woodpeckerci/plugin-git:next
pipeline:
compliance:
image: node:14
commands:
- npm install
- npm run build
when:
event: [pull_request]
netlify:
image: node:14
secrets: [bot_token, netlify_site_id, netlify_auth_token]
commands:
- node netlify.js
when:
event: [pull_request]
archive:
image: jolheiser/drone-arc:latest
when:
event: push
branch: main
files:
- "dist/*"
output: dist.tar.gz
release:
image: jolheiser/drone-gitea-main:latest
when:
event: push
branch: main
secrets:
- source: gitea_token
target: plugin_gitea_token
base: https://git.jojodev.com
files:
- "dist.tar.gz"

72
netlify.js 100644
View File

@ -0,0 +1,72 @@
const slugify = require('slugify')
const {exec} = require('child_process')
const axios = require('axios')
const siteId = process.env.NETLIFY_SITE_ID
console.log(process.env.CI_COMMIT_SOURCE_BRANCH)
const branchSlug = slugify(process.env.CI_COMMIT_SOURCE_BRANCH)
const prNumber = process.env.CI_COMMIT_PULL_REQUEST
const alias = `${prNumber}-${branchSlug}`
const promiseExec = cmd => {
return new Promise((resolve, reject) => {
exec(cmd, (error, stdout, stderr) => {
if (error) {
reject(error)
return
}
resolve(stdout)
})
})
}
(async function () {
let stdout = await promiseExec(`./node_modules/.bin/netlify link --id ${siteId}`)
console.log(stdout)
stdout = await promiseExec(`./node_modules/.bin/netlify deploy --alias ${alias}`)
console.log(stdout)
})()
// We need the user id of the bot to prevent multiple comments as the PR gets updated
const BOT_USER_ID = 8
// The gitea token from the pipeline settings
const giteaToken = process.env.BOT_TOKEN
// The second, hard coded part of this url is something you need to set in Netlify's site settings.
const fullPreviewUrl = `https://${alias}--canopymc.netlify.app`
const prIssueCommentsUrl = `https://git.jojodev.com/api/v1/repos/Canopy/website/issues/${prNumber}/comments`
(async function () {
// Here we get all comments through Gitea's API to see if there's already a comment from our bot
const {data} = await axios.get(prIssueCommentsUrl)
const hasComment = data.some(c => c.user.id === BOT_USER_ID)
if (hasComment) {
console.log(`PR #${prNumber} already has a comment with a link, not sending another comment.`)
return
}
// Once we arrive here we know for sure there's no other comment yet. That means we can proceed to post one.
await axios.post(prIssueCommentsUrl, {
body: `
Hi ${process.env.CI_COMMIT_AUTHOR}!
Thank you for creating a PR!
[I've deployed a preview of the changes here.](${fullPreviewUrl})
> Beep boop, I'm a bot. :robot:
`,
}, {
headers: {
'Content-Type': 'application/json',
'accept': 'application/json',
'Authorization': `token ${giteaToken}`,
},
})
console.log(`Preview comment sent successfully to PR #${prNumber}!`)
})()

11
netlify.toml 100644
View File

@ -0,0 +1,11 @@
[build]
command = "npm build"
publish = "dist"
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block"
X-Robots-Tag = "noindex"

17376
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -18,12 +18,16 @@
"url": "https://git.jojodev.com/Canopy/canopymc.net.git"
},
"author": "",
"license": "IST",
"license": "MIT",
"devDependencies": {
"@fortawesome/fontawesome-free": "^5.15.1",
"copyfiles": "^2.4.0",
"dart-sass": "^1.25.0",
"front-matter": "^4.0.2",
"showdown": "^1.9.1"
"showdown": "^1.9.1",
"slugify": "^1.6.3",
"axios": "^0.24.0",
"netlify": "^10.0.0",
"netlify-cli": "^8.0.19"
}
}