mirror of https://github.com/waku-org/js-waku.git
ci: add Jenkinsfile for building docs page (#410)
CI setup that builds the `master` branch and pushes it to `gh-pages` branch in the repo which is published by GitHub pages. Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
adcec18c3e
commit
671c757fa2
|
@ -1,91 +0,0 @@
|
||||||
name: Webchat Deploy GH Pages
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- 'master'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy_gh_pages:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Set git author identity
|
|
||||||
run: |
|
|
||||||
git config user.name "GitHub Action On js-waku Repo"
|
|
||||||
git config user.email "franck+ghpages@status.im"
|
|
||||||
|
|
||||||
- name: Install NodeJS
|
|
||||||
uses: actions/setup-node@v2
|
|
||||||
with:
|
|
||||||
node-version: '16'
|
|
||||||
|
|
||||||
- name: Cache npm cache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.npm
|
|
||||||
key: node-v2-${{ hashFiles('**/package-lock.json') }}
|
|
||||||
|
|
||||||
- name: "[js-waku] install using npm ci"
|
|
||||||
uses: bahmutov/npm-install@v1
|
|
||||||
|
|
||||||
- name: "[js-waku] build"
|
|
||||||
run: npm run build
|
|
||||||
|
|
||||||
- name: "[web-chat] install using npm i"
|
|
||||||
run: npm install
|
|
||||||
working-directory: examples/web-chat
|
|
||||||
|
|
||||||
- name: "[web-chat] build"
|
|
||||||
run: npm run build
|
|
||||||
working-directory: examples/web-chat
|
|
||||||
|
|
||||||
- name: "[web-chat] Deploy on gh pages to /"
|
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
publish_dir: ./examples/web-chat/build
|
|
||||||
|
|
||||||
- name: "[eth-pm] install using npm i"
|
|
||||||
run: npm install
|
|
||||||
working-directory: examples/eth-pm
|
|
||||||
|
|
||||||
- name: "[eth-pm] build"
|
|
||||||
run: npm run build
|
|
||||||
working-directory: examples/eth-pm
|
|
||||||
|
|
||||||
- name: "[eth-pm] Deploy on gh pages to /eth-pm"
|
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
publish_dir: ./examples/eth-pm/build
|
|
||||||
destination_dir: eth-pm
|
|
||||||
|
|
||||||
- name: "[eth-pm-wallet] install using npm i"
|
|
||||||
run: npm install
|
|
||||||
working-directory: examples/eth-pm-wallet-encryption
|
|
||||||
|
|
||||||
- name: "[eth-pm-wallet] build"
|
|
||||||
run: npm run build
|
|
||||||
working-directory: examples/eth-pm-wallet-encryption
|
|
||||||
|
|
||||||
- name: "[eth-pm-wallet] Deploy on gh pages to /eth-pm-wallet"
|
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
publish_dir: ./examples/eth-pm-wallet-encryption/build
|
|
||||||
destination_dir: eth-pm-wallet
|
|
||||||
|
|
||||||
- name: Generate docs
|
|
||||||
run: npm run doc:html
|
|
||||||
|
|
||||||
- name: Deploy documentation on gh pages
|
|
||||||
uses: peaceiris/actions-gh-pages@v3
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
keep_files: true # Do not delete web chat app
|
|
||||||
publish_dir: ./build/docs
|
|
||||||
destination_dir: docs
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
pipeline {
|
||||||
|
agent { label 'linux' }
|
||||||
|
|
||||||
|
options {
|
||||||
|
disableConcurrentBuilds()
|
||||||
|
/* manage how many builds we keep */
|
||||||
|
buildDiscarder(logRotator(
|
||||||
|
numToKeepStr: '20',
|
||||||
|
daysToKeepStr: '30',
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
environment {
|
||||||
|
GIT_AUTHOR_NAME = 'status-im-auto'
|
||||||
|
GIT_AUTHOR_EMAIL = 'auto@status.im'
|
||||||
|
}
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Install Deps') {
|
||||||
|
steps {
|
||||||
|
sh 'yarn install'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Build') {
|
||||||
|
steps {
|
||||||
|
sh 'yarn run doc'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Publish Prod') {
|
||||||
|
when { expression { GIT_BRANCH.endsWith('docs-build') } }
|
||||||
|
steps { script {
|
||||||
|
sshagent(credentials: ['status-im-auto-ssh']) {
|
||||||
|
sh 'yarn run deploy'
|
||||||
|
}
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Configuration of CI builds executed under a Jenkins instance at https://ci.status.im/.
|
||||||
|
|
||||||
|
# Website
|
||||||
|
|
||||||
|
The `Jenkinsfile.gh-pages` file builds the documentation site with this job:
|
||||||
|
https://ci.status.im/job/website/job/js-waku.wakuconnect.dev/
|
||||||
|
|
||||||
|
And deploys it via `gh-pages` branch and [GitHub Pages](https://pages.github.com/) to:
|
||||||
|
https://js-waku.wakuconnect.dev/
|
|
@ -0,0 +1,39 @@
|
||||||
|
const { promisify } = require('util')
|
||||||
|
const { publish } = require('gh-pages')
|
||||||
|
const ghpublish = promisify(publish)
|
||||||
|
|
||||||
|
/* fix for "Unhandled promise rejections" */
|
||||||
|
process.on('unhandledRejection', err => { throw err })
|
||||||
|
|
||||||
|
const Args = process.argv.slice(2)
|
||||||
|
const USE_HTTPS = Args[0] && Args[0].toUpperCase() === 'HTTPS'
|
||||||
|
|
||||||
|
const branch = 'gh-pages'
|
||||||
|
const org = 'status-im'
|
||||||
|
const repo = 'js-waku'
|
||||||
|
/* use SSH auth by default */
|
||||||
|
let repoUrl = USE_HTTPS
|
||||||
|
? `https://github.com/${org}/${repo}.git`
|
||||||
|
: `git@github.com:${org}/${repo}.git`
|
||||||
|
|
||||||
|
/* alternative auth using GitHub user and API token */
|
||||||
|
if (process.env.GH_USER != undefined) {
|
||||||
|
repoUrl = (
|
||||||
|
'https://' + process.env.GH_USER +
|
||||||
|
':' + process.env.GH_TOKEN +
|
||||||
|
'@' + `github.com/${org}/${repo}.git`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const main = async (url, branch)=> {
|
||||||
|
console.log(`Pushing to: ${url}`)
|
||||||
|
console.log(`On branch: ${branch}`)
|
||||||
|
await ghpublish('build/docs', {
|
||||||
|
repo: url,
|
||||||
|
branch: branch,
|
||||||
|
dotfiles: true,
|
||||||
|
silent: false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
main(repoUrl, branch)
|
|
@ -57,7 +57,7 @@
|
||||||
"eslint-plugin-import": "^2.25.3",
|
"eslint-plugin-import": "^2.25.3",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"fast-check": "^2.14.0",
|
"fast-check": "^2.14.0",
|
||||||
"gh-pages": "^3.1.0",
|
"gh-pages": "^3.2.3",
|
||||||
"karma": "^6.3.4",
|
"karma": "^6.3.4",
|
||||||
"karma-chrome-launcher": "^3.1.0",
|
"karma-chrome-launcher": "^3.1.0",
|
||||||
"karma-mocha": "^2.0.1",
|
"karma-mocha": "^2.0.1",
|
||||||
|
|
|
@ -46,8 +46,10 @@
|
||||||
"proto:build": "buf generate",
|
"proto:build": "buf generate",
|
||||||
"watch:build": "tsc -p tsconfig.json -w",
|
"watch:build": "tsc -p tsconfig.json -w",
|
||||||
"watch:test": "nyc --silent mocha --watch",
|
"watch:test": "nyc --silent mocha --watch",
|
||||||
"doc": "run-s doc:html && open-cli build/docs/index.html",
|
"doc": "run-s doc:*",
|
||||||
"doc:html": "typedoc --excludeInternal --listInvalidSymbolLinks --exclude **/*.spec.ts --out build/docs src/",
|
"doc:html": "typedoc --excludeInternal --listInvalidSymbolLinks --exclude **/*.spec.ts --out build/docs src/",
|
||||||
|
"doc:cname": "echo 'js-waku.wakuconnect.dev' > build/docs/CNAME",
|
||||||
|
"deploy": "node ci/deploy.js",
|
||||||
"reset-hard": "git clean -dfx && git reset --hard && npm i && npm run build && for d in examples/*; do (cd $d; npm i); done"
|
"reset-hard": "git clean -dfx && git reset --hard && npm i && npm run build && for d in examples/*; do (cd $d; npm i); done"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -102,7 +104,7 @@
|
||||||
"eslint-plugin-import": "^2.25.3",
|
"eslint-plugin-import": "^2.25.3",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"fast-check": "^2.14.0",
|
"fast-check": "^2.14.0",
|
||||||
"gh-pages": "^3.1.0",
|
"gh-pages": "^3.2.3",
|
||||||
"karma": "^6.3.4",
|
"karma": "^6.3.4",
|
||||||
"karma-chrome-launcher": "^3.1.0",
|
"karma-chrome-launcher": "^3.1.0",
|
||||||
"karma-mocha": "^2.0.1",
|
"karma-mocha": "^2.0.1",
|
||||||
|
|
Loading…
Reference in New Issue