Browse Source

feat: add ci-cd configuration

develop
Apostolos Fanakis 4 years ago
parent
commit
2388090add
  1. 739
      jenkins/Jenkinsfile
  2. 16
      jenkins/env/concordia.production.jenkins.env
  3. 16
      jenkins/env/concordia.staging.jenkins.env
  4. 8
      jenkins/env/contracts.production.jenkins.env
  5. 8
      jenkins/env/contracts.provider.production.env
  6. 8
      jenkins/env/contracts.provider.staging.env
  7. 8
      jenkins/env/contracts.staging.jenkins.env
  8. 4
      jenkins/env/contracts.test.jenkins.env
  9. 10
      jenkins/env/ganache.production.jenkins.env
  10. 10
      jenkins/env/ganache.staging.jenkins.env
  11. 6
      jenkins/env/ganache.test.jenkins.env
  12. 20
      jenkins/env/pinner.production.jenkins.env
  13. 20
      jenkins/env/pinner.staging.jenkins.env

739
jenkins/Jenkinsfile

@ -0,0 +1,739 @@
#!groovy
def cleanSlateEnabled
// Package change state
def appPackageChanged
def contractsPackageChanged
def contractsProviderPackageChanged
def pinnerPackageChanged
def sharedPackageChanged
// Package versions
def appPackageVersion
def contractsPackageVersion
def contractsProviderPackageVersion
def pinnerPackageVersion
def sharedPackageVersion
// Docker images
def appImage
def appTestsImage
def contractsImage
def contractsTestsImage
def contractsProviderImage
def pinnerImage
def freshGanacheStagingRunning
def freshGanacheProductionRunning
pipeline {
agent any
post {
failure {
updateGitlabCommitStatus name: 'build', state: 'failed'
}
success {
updateGitlabCommitStatus name: 'build', state: 'success'
}
always {
archiveArtifacts artifacts: "reports/${BUILD_NUMBER}/**/* , build/**/*, ganache/*", fingerprint: true
sleep 2
sh 'docker images | grep -E "ecentrics/concordia.+tests" | tr -s \' \' | cut -d \' \' -f 3 | xargs --no-run-if-empty docker rmi -f || true'
sh 'docker images | grep -E "ecentrics/concordia.+staging" | tr -s \' \' | cut -d \' \' -f 3 | xargs --no-run-if-empty docker rmi -f || true'
sh 'docker system prune -f'
sh 'rm -rf reports'
sh 'rm -rf build'
}
}
options {
gitLabConnection('apella')
}
triggers {
gitlab(triggerOnPush: true, triggerOnMergeRequest: true, branchFilterType: 'All')
}
environment {
DOCKER_BUILDKIT='1'
}
stages {
stage ('VERSION') {
steps {
script {
cleanSlateEnabled = sh (script: "git log -1 | grep -qE 'ci: force'", returnStatus: true)
appPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh app "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
contractsPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh contracts "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
contractsProviderPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh concordia-contracts-provider "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
pinnerPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh pinner "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
sharedPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh shared "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
appPackageVersion = sh(script: 'grep "\\"version\\":" ./packages/concordia-app/package.json | head -1 | awk -F: \'{ print $2 }\' | sed \'s/[",]//g\' | tr -d \'[[:space:]]\'', returnStdout: true).trim()
contractsPackageVersion = sh(script: 'grep "\\"version\\":" ./packages/concordia-contracts/package.json | head -1 | awk -F: \'{ print $2 }\' | sed \'s/[",]//g\' | tr -d \'[[:space:]]\'', returnStdout: true).trim()
contractsProviderPackageVersion = sh(script: 'grep "\\"version\\":" ./packages/concordia-contracts-provider/package.json | head -1 | awk -F: \'{ print $2 }\' | sed \'s/[",]//g\' | tr -d \'[[:space:]]\'', returnStdout: true).trim()
pinnerPackageVersion = sh(script: 'grep "\\"version\\":" ./packages/concordia-pinner/package.json | head -1 | awk -F: \'{ print $2 }\' | sed \'s/[",]//g\' | tr -d \'[[:space:]]\'', returnStdout: true).trim()
sharedPackageVersion = sh(script: 'grep "\\"version\\":" ./packages/concordia-shared/package.json | head -1 | awk -F: \'{ print $2 }\' | sed \'s/[",]//g\' | tr -d \'[[:space:]]\'', returnStdout: true).trim()
echo "Package: app, Version: ${appPackageVersion}, Changed: ${appPackageChanged}"
echo "Package: contracts, Version: ${contractsPackageVersion}, Changed: ${contractsPackageChanged}"
echo "Package: contracts-provider, Version: ${contractsProviderPackageVersion}, Changed: ${contractsProviderPackageChanged}"
echo "Package: pinner, Version: ${pinnerPackageVersion}, Changed: ${pinnerPackageChanged}"
echo "Package: shared, Version: ${sharedPackageVersion}, Changed: ${sharedPackageChanged}"
}
}
}
stage('TEST') {
parallel {
stage('TEST CONTRACTS') {
steps {
script {
try {
echo "${BRANCH_NAME}-${BUILD_NUMBER}"
def ganacheTestPort = sh(script: "bash ./jenkins/hash_build_properties.sh ${BRANCH_NAME} ${BUILD_NUMBER} | xargs bash ./jenkins/map_to_thousand.sh", returnStdout: true).trim()
echo "$ganacheTestPort"
def ganacheTestImage = docker.build(
"ecentrics/concordia-ganache",
"-f docker/ganache/Dockerfile \
./"
)
sh 'docker network create --driver bridge concordia_ganache_test_network || true'
ganacheTestImage.withRun("""-d -p 6${ganacheTestPort}:8546 \
--env-file=./jenkins/env/ganache.test.jenkins.env \
--name concordia-ganache-test-6${ganacheTestPort} \
--net=concordia_ganache_test_network""") { concordiaGanacheTest ->
contractsTestsImage = docker.build(
"ecentrics/concordia-contracts-tests:v${contractsPackageVersion}-b${BUILD_NUMBER}-tests",
"-f docker/concordia-contracts/Dockerfile \
./ \
--target test \
--build-arg TZ=Europe/Athens"
)
contractsTestsImage.run("""--rm \
-v ecentrics_janus_common:/mnt/concordia/test-reports/ \
--env-file=./jenkins/env/contracts.test.jenkins.env \
-e WEB3_HOST=concordia-ganache-test-6${ganacheTestPort} \
-e WEB3_PORT=6${ganacheTestPort} \
--net=concordia_ganache_test_network""")
sh 'mkdir -p ./reports/${BUILD_NUMBER}/contracts'
sh 'find /mnt/janus/common/ -name "concordia-contracts-*" -exec cp \'{}\' ./reports/${BUILD_NUMBER}/contracts/ \\;'
}
} catch (e) {
error('Some tests failed!')
error('Aborting the build.')
throw e
}
}
}
}
stage('TEST APP') {
steps {
script {
appTestsImage = docker.build(
"ecentrics/concordia-app:v${appPackageVersion}-b${BUILD_NUMBER}-tests",
"-f docker/concordia-app/Dockerfile \
./ \
--target test \
--build-arg TZ=Europe/Athens"
)
try {
appTestsImage.run('--rm \
-v ecentrics_janus_common:/mnt/concordia/test-reports/')
sh 'mkdir -p ./reports/${BUILD_NUMBER}/app'
sh 'find /mnt/janus/common/ -name "concordia-app-*" -exec cp \'{}\' ./reports/${BUILD_NUMBER}/app/ \\;'
} catch (e) {
error('Some tests failed!')
error('Aborting the build.')
throw e
}
}
}
}
}
}
stage('BUILD FOR PRODUCTION') {
when {
branch 'master'
}
parallel {
stage('BUILD CONTRACTS') {
when {
expression {
return "${contractsPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
contractsImage = docker.build(
"ecentrics/concordia-contracts-migrate:v${contractsPackageVersion}",
"-f docker/concordia-contracts/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
contractsImage.run('--rm \
-v ecentrics_janus_common:/mnt/concordia/build \
--entrypoint=sh',
"-c 'mkdir -p /mnt/concordia/build/contract-artifacts && cp /usr/src/concordia/packages/concordia-contracts/build/* /mnt/concordia/build/contract-artifacts'")
sh 'mkdir -p ./build/${BUILD_NUMBER}/contracts'
sh 'cp /mnt/janus/common/contract-artifacts/* ./build/${BUILD_NUMBER}/contracts'
}
}
}
stage('BUILD APP') {
when {
expression {
return "${appPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
appImage = docker.build(
"ecentrics/concordia-app:v${appPackageVersion}",
"-f docker/concordia-app/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
}
}
}
stage('BUILD CONTRACTS PROVIDER') {
when {
expression {
return "${contractsProviderPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
contractsProviderImage = docker.build(
"ecentrics/concordia-contracts-provider:v${contractsProviderPackageVersion}",
"-f docker/concordia-contracts-provider/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
}
}
}
stage('BUILD PINNER') {
when {
expression {
return "${pinnerPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
pinnerImage = docker.build(
"ecentrics/concordia-pinner:v${pinnerPackageVersion}",
"-f docker/concordia-pinner/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
}
}
}
}
}
stage('BUILD FOR STAGING') {
when {
branch 'develop'
}
parallel {
stage('BUILD CONTRACTS') {
when {
expression {
return "${contractsPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
contractsImage = docker.build(
"ecentrics/concordia-contracts-migrate:v${contractsPackageVersion}-staging-b${BUILD_NUMBER}",
"-f docker/concordia-contracts/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
// Get contract artifacts
contractsImage.run('--rm \
-v ecentrics_janus_common:/mnt/concordia/build \
--entrypoint=sh',
"-c 'mkdir -p /mnt/concordia/build/contract-artifacts && cp /usr/src/concordia/packages/concordia-contracts/build/* /mnt/concordia/build/contract-artifacts'")
sh 'mkdir -p ./build/${BUILD_NUMBER}/contracts'
sh 'cp /mnt/janus/common/contract-artifacts/* ./build/${BUILD_NUMBER}/contracts'
}
}
}
stage('BUILD APP') {
when {
expression {
return "${appPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
appImage = docker.build(
"ecentrics/concordia-app:v${appPackageVersion}-staging-b${BUILD_NUMBER}",
"-f docker/concordia-app/Dockerfile \
./ \
--target staging \
--build-arg TZ=Europe/Athens"
)
}
}
}
stage('BUILD CONTRACTS PROVIDER') {
when {
expression {
return "${contractsProviderPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
contractsProviderImage = docker.build(
"ecentrics/concordia-contracts-provider:v${contractsProviderPackageVersion}-staging-b${BUILD_NUMBER}",
"-f docker/concordia-contracts-provider/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
}
}
}
stage('BUILD PINNER') {
when {
expression {
return "${pinnerPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
pinnerImage = docker.build(
"ecentrics/concordia-pinner:v${pinnerPackageVersion}-staging-b${BUILD_NUMBER}",
"-f docker/concordia-pinner/Dockerfile \
./ \
--build-arg TZ=Europe/Athens"
)
}
}
}
}
}
stage('PUBLISH') {
when {
branch 'master'
}
parallel {
stage('PUBLISH CONTRACTS') {
when {
expression {
return "${contractsPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
docker.withRegistry('https://registry.hub.docker.com/', 'docker-hub-concordia') {
contractsImage.push()
contractsImage.push('latest')
}
}
}
}
stage('PUBLISH APP') {
when {
expression {
return "${appPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
docker.withRegistry('https://registry.hub.docker.com/', 'docker-hub-concordia') {
appImage.push()
appImage.push('latest')
}
}
}
}
stage('PUBLISH CONTRACTS PROVIDER') {
when {
expression {
return "${contractsProviderPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
docker.withRegistry('https://registry.hub.docker.com/', 'docker-hub-concordia') {
contractsProviderImage.push()
contractsProviderImage.push('latest')
}
}
}
}
stage('PUBLISH PINNER') {
when {
expression {
return "${pinnerPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
docker.withRegistry('https://registry.hub.docker.com/', 'docker-hub-concordia') {
pinnerImage.push()
pinnerImage.push('latest')
}
}
}
}
}
}
stage('DEPLOY STAGING') {
when {
branch 'develop'
}
stages {
stage('STAGING DEPLOY PREPARATION') {
steps {
script {
sh 'docker network create --driver bridge ecentrics_concordia_staging_network || true'
def rendezvousServerRunning = sh (script: 'docker ps -f name=concordia-rendezvous | \
grep -qE concordia-rendezvous', returnStatus: true)
if ("$rendezvousServerRunning" == '1') {
sh 'docker run \
-d \
-p 9090:9090 \
--name concordia-rendezvous \
--net=ecentrics_concordia_staging_network \
libp2p/js-libp2p-webrtc-star:version-0.20.5'
} else {
sh 'docker network connect ecentrics_concordia_staging_network concordia-rendezvous || true'
}
}
}
}
stage('DEPLOY CONTRACTS PROVIDER') {
when {
expression {
def contractsProviderStagingRunning = sh (script: 'docker ps -f name=concordia-contracts-provider-staging | \
grep -qE concordia-contracts-provider-staging', returnStatus: true)
return "${contractsProviderPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "$contractsProviderStagingRunning" == '1' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh 'docker stop concordia-contracts-provider-staging || true \
&& docker rm concordia-contracts-provider-staging || true'
sh 'if [ "$cleanSlateEnabled" -eq "0" ]; then \
docker volume rm concordia-contracts-provider-staging || true; \
fi'
sh (script: """docker run \
-d \
-v concordia-contracts-provider-staging:/mnt/concordia/contracts \
--env-file=./jenkins/env/contracts.provider.staging.env \
-p 8450:8450 \
--name concordia-contracts-provider-staging \
--net=ecentrics_concordia_staging_network \
ecentrics/concordia-contracts-provider:v${contractsProviderPackageVersion}-staging-b${BUILD_NUMBER}""")
}
}
}
stage('RECREATE GANACHE') {
when {
expression {
def ganacheStagingRunning = sh (script: 'docker ps -f name=concordia-ganache-staging | \
grep -qE concordia-ganache-staging', returnStatus: true)
return "$cleanSlateEnabled" == '0' || "$ganacheStagingRunning" == '1';
}
}
steps {
script {
sh 'docker stop concordia-ganache-staging || true \
&& docker rm concordia-ganache-staging || true'
sh 'docker volume rm concordia-ganache-staging || true'
sh (script: 'docker run \
-d \
-v concordia-ganache-staging:/mnt/concordia/ganache_keys \
-p 8555:8555 \
--env-file=./jenkins/env/ganache.staging.jenkins.env \
--name concordia-ganache-staging \
--net=ecentrics_concordia_staging_network \
ecentrics/concordia-ganache:latest')
// Ganache image might take a while to come alive
sleep 10
sh 'mkdir -p ./ganache/ && docker cp concordia-ganache-staging:/mnt/concordia/ganache_keys/keys.json ./ganache/'
freshGanacheStagingRunning = true
}
}
}
stage('DEPLOY CONTRACTS') {
when {
expression {
return "${contractsPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "$freshGanacheStagingRunning" || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh """docker run \
--rm \
--env-file=./jenkins/env/contracts.staging.jenkins.env \
-e CONTRACTS_VERSION_HASH=${contractsPackageVersion}-dev \
--net=ecentrics_concordia_staging_network \
ecentrics/concordia-contracts-migrate:v${contractsPackageVersion}-staging-b${BUILD_NUMBER}"""
}
}
}
stage('DEPLOY PINNER') {
when {
expression {
def pinnerStagingRunning = sh (script: 'docker ps -f name=concordia-pinner-staging | \
grep -qE concordia-pinner-staging', returnStatus: true)
return "${pinnerPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "${contractsPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh 'docker stop concordia-pinner-staging || true \
&& docker rm concordia-pinner-staging || true'
sh 'if [ "$cleanSlateEnabled" -eq "0" ]; then \
docker volume rm concordia-pinner-staging || true; \
fi'
sh """docker run \
-d \
-v concordia-pinner-staging:/mnt/concordia/orbitdb \
-p 5555:5555 \
--env-file=./jenkins/env/pinner.staging.jenkins.env \
--name concordia-pinner-staging \
--net=ecentrics_concordia_staging_network \
ecentrics/concordia-pinner:v${pinnerPackageVersion}-staging-b${BUILD_NUMBER}"""
}
}
}
stage('DEPLOY APP') {
when {
expression {
def pinnerStagingRunning = sh (script: 'docker ps -f name=concordia-app-staging | \
grep -qE concordia-app-staging', returnStatus: true)
return "${appPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh 'docker stop concordia-app-staging || true \
&& docker rm concordia-app-staging || true'
sh """docker run \
-itd \
-p 7000:3000 \
--env-file=./jenkins/env/concordia.staging.jenkins.env \
--name concordia-app-staging \
ecentrics/concordia-app:v${appPackageVersion}-staging-b${BUILD_NUMBER}"""
}
}
}
}
}
stage('DEPLOY PRODUCTION') {
when {
branch 'master'
}
stages {
stage('PRODUCTION DEPLOY PREPARATION') {
steps {
script {
sh 'docker network create --driver bridge ecentrics_concordia_production_network || true'
def rendezvousServerRunning = sh (script: 'docker ps -f name=concordia-rendezvous | \
grep -qE concordia-rendezvous', returnStatus: true)
if ("$rendezvousServerRunning" == '1') {
sh 'docker run \
-d \
-p 9090:9090 \
--name concordia-rendezvous \
--net=ecentrics_concordia_production_network \
libp2p/js-libp2p-webrtc-star:version-0.20.5'
} else {
sh 'docker network connect ecentrics_concordia_production_network concordia-rendezvous || true'
}
}
}
}
stage('DEPLOY CONTRACTS PROVIDER') {
when {
expression {
def contractsProviderProductionRunning = sh (script: 'docker ps -f name=concordia-contracts-provider-production | \
grep -qE concordia-contracts-provider-production', returnStatus: true)
return "${contractsProviderPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "$contractsProviderProductionRunning" == '1' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh 'docker stop concordia-contracts-provider-production || true \
&& docker rm concordia-contracts-provider-production || true'
sh 'if [ "$cleanSlateEnabled" -eq "0" ]; then \
docker volume rm concordia-contracts-provider-production || true; \
fi'
sh (script: """docker run \
-d \
-v concordia-contracts-provider-production:/mnt/concordia/contracts \
--env-file=./jenkins/env/contracts.provider.production.env \
-e NODE_ENV=production \
-p 8400:8400 \
--name concordia-contracts-provider-production \
--net=ecentrics_concordia_production_network \
ecentrics/concordia-contracts-provider:v${contractsProviderPackageVersion}""")
}
}
}
stage('RECREATE GANACHE') {
when {
expression {
def ganacheProductionRunning = sh (script: 'docker ps -f name=concordia-ganache-production | \
grep -qE concordia-ganache-production', returnStatus: true)
return "$cleanSlateEnabled" == '0' || "$ganacheProductionRunning" == '1';
}
}
steps {
script {
sh 'docker stop concordia-ganache-production || true \
&& docker rm concordia-ganache-production || true'
sh 'docker volume rm concordia-ganache-production || true'
sh (script: 'docker run \
-d \
-v concordia-ganache-production:/mnt/concordia/ganache_keys \
-p 8545:8545 \
--env-file=./jenkins/env/ganache.production.jenkins.env \
--name concordia-ganache-production \
--net=ecentrics_concordia_production_network \
ecentrics/concordia-ganache:latest')
// Ganache image might take a while to come alive
sleep 10
sh 'mkdir -p ./ganache/ && docker cp concordia-ganache-production:/mnt/concordia/ganache_keys/keys.json ./ganache/'
freshGanacheProductionRunning = true
}
}
}
stage('DEPLOY CONTRACTS') {
when {
expression {
return "${contractsPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "$freshGanacheProductionRunning" || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh """docker run \
--rm \
--env-file=./jenkins/env/contracts.production.jenkins.env \
-e CONTRACTS_VERSION_HASH=${contractsPackageVersion} \
--net=ecentrics_concordia_production_network \
ecentrics/concordia-contracts-migrate:v${contractsPackageVersion}"""
}
}
}
stage('DEPLOY PINNER') {
when {
expression {
def pinnerProductionRunning = sh (script: 'docker ps -f name=concordia-pinner-production | \
grep -qE concordia-pinner-production', returnStatus: true)
return "${pinnerPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' || "${pinnerProductionRunning}" == '1' || "${contractsPackageChanged}" == '0' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh 'docker stop concordia-pinner-production || true \
&& docker rm concordia-pinner-production || true'
sh 'if [ "$cleanSlateEnabled" -eq "0" ]; then \
docker volume rm concordia-pinner-production || true; \
fi'
sh """docker run \
-d \
-v concordia-pinner-production:/mnt/concordia/orbitdb \
-p 4444:4444 \
-e NODE_ENV=production \
--env-file=./jenkins/env/pinner.production.jenkins.env \
--name concordia-pinner-production \
--net=ecentrics_concordia_production_network \
ecentrics/concordia-pinner:v${pinnerPackageVersion}"""
}
}
}
stage('DEPLOY APP') {
when {
expression {
def appProductionRunning = sh (script: 'docker ps -f name=concordia-app-production | \
grep -qE concordia-app-production', returnStatus: true)
return "${appPackageChanged}" == '0' || "$cleanSlateEnabled" == '0' ||"${appProductionRunning}" == '1' || "${sharedPackageChanged}" == '0';
}
}
steps {
script {
sh 'docker stop concordia-app-production || true \
&& docker rm concordia-app-production || true'
sh """docker run \
-d \
-p 7777:80 \
--env-file=./jenkins/env/concordia.production.jenkins.env \
--name concordia-app-production \
ecentrics/concordia-app:v${appPackageVersion}"""
}
}
}
}
}
}
}

16
jenkins/env/concordia.production.jenkins.env

@ -0,0 +1,16 @@
VIRTUAL_HOST=concordia.ecentrics.net
VIRTUAL_PORT=7777
LETSENCRYPT_HOST=concordia.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
# Variables needed in runtime (in browser)
REACT_APP_CONCORDIA_HOST=concordia.ecentrics.net
REACT_APP_CONCORDIA_PORT=7777
REACT_APP_RENDEZVOUS_HOST=rendezvous.ecentrics.net
REACT_APP_RENDEZVOUS_PORT=9090
REACT_APP_USE_EXTERNAL_CONTRACTS_PROVIDER=true
REACT_APP_CONTRACTS_PROVIDER_HOST=contracts.concordia.ecentrics.net
REACT_APP_CONTRACTS_PROVIDER_PORT=8400
REACT_APP_CONTRACTS_VERSION_HASH=stable

16
jenkins/env/concordia.staging.jenkins.env

@ -0,0 +1,16 @@
VIRTUAL_HOST=staging.concordia.ecentrics.net
VIRTUAL_PORT=7000
LETSENCRYPT_HOST=staging.concordia.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
# Variables needed in runtime (in browser)
REACT_APP_CONCORDIA_HOST=staging.concordia.ecentrics.net
REACT_APP_CONCORDIA_PORT=7000
REACT_APP_RENDEZVOUS_HOST=rendezvous.ecentrics.net
REACT_APP_RENDEZVOUS_PORT=9090
REACT_APP_USE_EXTERNAL_CONTRACTS_PROVIDER=true
REACT_APP_CONTRACTS_PROVIDER_HOST=staging.contracts.concordia.ecentrics.net
REACT_APP_CONTRACTS_PROVIDER_PORT=8450
REACT_APP_CONTRACTS_VERSION_HASH=latest

8
jenkins/env/contracts.production.jenkins.env

@ -0,0 +1,8 @@
# Variables needed in runtime
MIGRATE_NETWORK=env
WEB3_HOST=concordia-ganache-production
WEB3_PORT=8545
CONTRACTS_PROVIDER_HOST=contracts.concordia.ecentrics.net
CONTRACTS_PROVIDER_PORT=8400
CONTRACTS_VERSION_TAG=stable

8
jenkins/env/contracts.provider.production.env

@ -0,0 +1,8 @@
VIRTUAL_HOST=contracts.concordia.ecentrics.net
VIRTUAL_PORT=8400
LETSENCRYPT_HOST=contracts.concordia.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
CONTRACTS_PROVIDER_PORT=8400
UPLOAD_CONTRACTS_DIRECTORY=/mnt/concordia/contracts/
CORS_ALLOWED_ORIGINS="concordia.ecentrics.net;http://concordia.ecentrics.net;https://concordia.ecentrics.net;concordia.ecentrics.net:7777;http://concordia.ecentrics.net:7777;https://concordia.ecentrics.net:7777;127.0.0.1;http://127.0.0.1;127.0.0.1:7777;http://127.0.0.1"

8
jenkins/env/contracts.provider.staging.env

@ -0,0 +1,8 @@
VIRTUAL_HOST=staging.contracts.concordia.ecentrics.net
VIRTUAL_PORT=8450
LETSENCRYPT_HOST=staging.contracts.concordia.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
CONTRACTS_PROVIDER_PORT=8450
UPLOAD_CONTRACTS_DIRECTORY=/mnt/concordia/contracts/
#CORS_ALLOWED_ORIGINS="staging.concordia.ecentrics.net;http://staging.concordia.ecentrics.net;https://staging.concordia.ecentrics.net;staging.concordia.ecentrics.net:7000;http://staging.concordia.ecentrics.net:7000;https://staging.concordia.ecentrics.net:7000;172.21.0.4;http://172.21.0.4;127.0.0.1;http://127.0.0.1"

8
jenkins/env/contracts.staging.jenkins.env

@ -0,0 +1,8 @@
# Variables needed in runtime
MIGRATE_NETWORK=env
WEB3_HOST=concordia-ganache-staging
WEB3_PORT=8555
CONTRACTS_PROVIDER_HOST=staging.contracts.concordia.ecentrics.net
CONTRACTS_PROVIDER_PORT=8450
CONTRACTS_VERSION_TAG=latest

4
jenkins/env/contracts.test.jenkins.env

@ -0,0 +1,4 @@
# Variables needed in runtime
MIGRATE_NETWORK=env
WEB3_HOST=concordia-ganache-test
WEB3_PORT=8546

10
jenkins/env/ganache.production.jenkins.env

@ -0,0 +1,10 @@
VIRTUAL_HOST=ganache.ecentrics.net
VIRTUAL_PORT=8545
LETSENCRYPT_HOST=ganache.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
ACCOUNTS_NUMBER=1000
ACCOUNTS_ETHER=100000
HOST=0.0.0.0
PORT=8545
NETWORK_ID=5778

10
jenkins/env/ganache.staging.jenkins.env

@ -0,0 +1,10 @@
VIRTUAL_HOST=staging.ganache.ecentrics.net
VIRTUAL_PORT=8555
LETSENCRYPT_HOST=staging.ganache.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
ACCOUNTS_NUMBER=100
ACCOUNTS_ETHER=1000
HOST=0.0.0.0
PORT=8555
NETWORK_ID=5778

6
jenkins/env/ganache.test.jenkins.env

@ -0,0 +1,6 @@
ACCOUNTS_NUMBER=5
ACCOUNTS_ETHER=1
MNEMONIC="myth like bonus scare over problem client lizard pioneer submit female collect"
HOST=0.0.0.0
PORT=8546
NETWORK_ID=5778

20
jenkins/env/pinner.production.jenkins.env

@ -0,0 +1,20 @@
VIRTUAL_HOST=pinner.concordia.ecentrics.net
VIRTUAL_PORT=4444
LETSENCRYPT_HOST=pinner.concordia.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
USE_EXTERNAL_CONTRACTS_PROVIDER=true
ORBIT_DIRECTORY=/mnt/concordia/orbitdb
CONTRACTS_PROVIDER_HOST=contracts.concordia.ecentrics.net
CONTRACTS_PROVIDER_PORT=8400
CONTRACTS_VERSION_HASH=stable
PINNER_API_HOST=127.0.0.1
PINNER_API_PORT=4444
RENDEZVOUS_HOST=rendezvous.ecentrics.net
RENDEZVOUS_PORT=9090
WEB3_HOST=ganache.ecentrics.net
WEB3_PORT=8545

20
jenkins/env/pinner.staging.jenkins.env

@ -0,0 +1,20 @@
VIRTUAL_HOST=staging.pinner.concordia.ecentrics.net
VIRTUAL_PORT=5555
LETSENCRYPT_HOST=staging.pinner.concordia.ecentrics.net
LETSENCRYPT_EMAIL=ecentricsgr@gmail.com
USE_EXTERNAL_CONTRACTS_PROVIDER=true
ORBIT_DIRECTORY=/mnt/concordia/orbitdb
CONTRACTS_PROVIDER_HOST=staging.contracts.concordia.ecentrics.net
CONTRACTS_PROVIDER_PORT=8450
CONTRACTS_VERSION_HASH=latest
PINNER_API_HOST=127.0.0.1
PINNER_API_PORT=5555
RENDEZVOUS_HOST=rendezvous.ecentrics.net
RENDEZVOUS_PORT=9090
WEB3_HOST=staging.ganache.ecentrics.net
WEB3_PORT=8555
Loading…
Cancel
Save