Add netlify process
continuous-integration/woodpecker the build failed
Details
continuous-integration/woodpecker the build failed
Details
Signed-off-by: jolheiser <john.olheiser@gmail.com>
parent
125458693e
commit
1ffe78734f
44
.drone.yml
44
.drone.yml
|
@ -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"
|
|
@ -10,3 +10,5 @@ dist/
|
|||
|
||||
# Node
|
||||
node_modules/
|
||||
# Local Netlify folder
|
||||
.netlify
|
||||
|
|
|
@ -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"
|
|
@ -0,0 +1,71 @@
|
|||
const slugify = require('slugify')
|
||||
const {exec} = require('child_process')
|
||||
const axios = require('axios')
|
||||
|
||||
const siteId = process.env.NETLIFY_SITE_ID
|
||||
const branchSlug = slugify(process.env.DRONE_SOURCE_BRANCH)
|
||||
const prNumber = process.env.CI_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}!`)
|
||||
})()
|
|
@ -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"
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue