feat: use two deploy branches for CI builds

This way we have two branches on GitHub that reflect the state of the
website after CI build has finished and pushed. See README.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
Jakub Sokołowski 2024-02-19 15:06:46 +01:00
parent b0ff826302
commit 64d5b7fbbe
No known key found for this signature in database
GPG Key ID: FE65CD384D5BF7B4
2 changed files with 16 additions and 24 deletions

33
Jenkinsfile vendored
View File

@ -16,16 +16,12 @@ pipeline {
environment {
GIT_COMMITTER_NAME = 'status-im-auto'
GIT_COMMITTER_EMAIL = 'auto@status.im'
PROD_SITE = 'waku.org'
DEV_SITE = 'dev.waku.org'
DEV_HOST = 'jenkins@node-01.do-ams3.sites.misc.statusim.net'
SCP_OPTS = 'StrictHostKeyChecking=no'
}
stages {
stage('Install') {
steps {
sh "yarn install"
sh 'yarn install'
}
}
@ -40,29 +36,18 @@ pipeline {
]) {
sh 'yarn build'
}
dir('build') {
sh "echo ${env.PROD_SITE} > CNAME"
jenkins.genBuildMetaJSON()
}
jenkins.genBuildMetaJSON('build/build.json')
} }
}
stage('Publish Prod') {
when { expression { env.GIT_BRANCH ==~ /.*master/ } }
stage('Publish') {
steps {
sshagent(credentials: ['status-im-auto-ssh']) {
sh "ghp-import -p build"
}
}
}
stage('Publish Devel') {
when { expression { env.GIT_BRANCH ==~ /.*develop/ } }
steps {
sshagent(credentials: ['jenkins-ssh']) {
sh """
rsync -e 'ssh -o ${SCP_OPTS}' -r --delete build/. \
${env.DEV_HOST}:/var/www/${env.DEV_SITE}/
ghp-import \
-b ${deployBranch()} \
-c ${deployDomain()} \
-p build
"""
}
}
@ -73,3 +58,7 @@ pipeline {
cleanup { cleanWs() }
}
}
def isMasterBranch() { GIT_BRANCH ==~ /.*master/ }
def deployBranch() { isMasterBranch() ? 'deploy-master' : 'deploy-develop' }
def deployDomain() { isMasterBranch() ? 'waku.org' : 'dev.waku.org' }

View File

@ -71,9 +71,12 @@ $ yarn serve
## CI/CD
- The `master` branch is automatically deployed to the production server (e.g., logos.co) through [CI](https://ci.infra.status.im)
- The `develop` branch is automatically deployed to the staging server (e.g., dev.logos.co) through [CI](https://ci.infra.status.im)
- [CI builds](https://ci.infra.status.im/job/website/job/waku.org/) `master` and pushes to `deploy-master` branch, which is hosted at <https://waku.org/>.
- [CI builds](https://ci.infra.status.im/job/website/job/waku.org/) `develop` and pushes to `deploy-develop` branch, which is hosted at <https://dev.waku.org/>.
The hosting is done using [Caddy server with Git plugin for handling GitHub webhooks](https://github.com/status-im/infra-misc/blob/master/ansible/roles/caddy-git).
Information about deployed build can be also found in `/build.json` available on the website.
## Change Process