Skip to content

Commit

Permalink
Merge pull request #1682 from aml-org/publish-5.2.2
Browse files Browse the repository at this point in the history
Publish 5.2.2
  • Loading branch information
looseale authored Dec 14, 2022
2 parents f2ed69f + cea3000 commit c9e1b40
Show file tree
Hide file tree
Showing 1,131 changed files with 5,261 additions and 2,215 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
language: scala
scala:
- 2.12.11
- 2.12.13
sbt_args: -mem 4096 -Dfile.encoding=UTF-8
script: sbt ++$TRAVIS_SCALA_VERSION clean test
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ behavior that is not occurring.
## Code Contributions

### Development Requirements
* Scala 2.12.11
* sbt 1.6.1
* Scala 2.12.13
* sbt 1.7.1
* Node

### Version control branching
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
FROM ghcr.io/aml-org/amf-ci-tools-base-image:1.0.0
FROM ghcr.io/aml-org/amf-ci-tools-base-image:1.2.0
341 changes: 150 additions & 191 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,210 +16,169 @@ def headerFlavour = "WARNING"
@Field EXAMPLES_JOB = "application/AMF/examples/master"

pipeline {
options {
timeout(time: 30, unit: 'MINUTES')
ansiColor('xterm')
}
agent {
dockerfile {
filename 'Dockerfile'
label 'gn-8-16-1'
registryCredentialsId 'github-salt'
registryUrl 'https://ghcr.io'
options {
timeout(time: 30, unit: 'MINUTES')
ansiColor('xterm')
}
}
environment {
NEXUS = credentials('exchange-nexus')
NEXUSIQ = credentials('nexus-iq')
GITHUB_ORG = 'aml-org'
GITHUB_REPO = 'amf'
NPM_TOKEN = credentials('aml-org-bot-npm-token')
NPM_CONFIG_PRODUCTION = true
}
stages {
stage('Test') {
steps {
script {
lastStage = env.STAGE_NAME
sh 'sbt -mem 6144 -Dfile.encoding=UTF-8 clean coverage test coverageAggregate'
agent {
dockerfile {
registryCredentialsId 'dockerhub-pro-credentials'
registryCredentialsId 'github-salt'
registryUrl 'https://ghcr.io'
label 'gn-8-16-1'
}
}
}
stage('Coverage') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'sonarqube-official', passwordVariable: 'SONAR_SERVER_TOKEN', usernameVariable: 'SONAR_SERVER_URL']]) {
script {
lastStage = env.STAGE_NAME
sh 'sbt -Dsonar.host.url=${SONAR_SERVER_URL} sonarScan'
}
}
}
}
stage('Build JS Package') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
sh 'chmod +x js-build.sh'
sh './js-build.sh'
}
}
}
stage('Publish JVM Artifact') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
sh 'sbt publish'
}
}
}
stage("Publish JS Package") {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
// They are separate commands because we want an earlyExit in case one of them doesnt end with exit code 0
sh 'chmod +x ./scripts/setup-npmrc.sh'
sh './scripts/setup-npmrc.sh'
sh 'chmod +x ./js-publish.sh'
sh './js-publish.sh'
}
}
}
stage('Tag version') {
when {
anyOf {
branch 'master'
branch 'support/*'
}
}
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'github-salt', passwordVariable: 'GITHUB_PASS', usernameVariable: 'GITHUB_USER']]) {
script {
lastStage = env.STAGE_NAME
def version = sbtArtifactVersion("apiContractJVM")
tagCommitToGithub(version)
}
}
}
environment {
NEXUS = credentials('exchange-nexus')
NEXUSIQ = credentials('nexus-iq')
GITHUB_ORG = 'aml-org'
GITHUB_REPO = 'amf-core'
BUILD_NUMBER = "${env.BUILD_NUMBER}"
BRANCH_NAME = "${env.BRANCH_NAME}"
NPM_TOKEN = credentials('aml-org-bot-npm-token')
NPM_CONFIG_PRODUCTION = true
CURRENT_VERSION = sh(script: "cat dependencies.properties | grep \"version\" | cut -d '=' -f 2", returnStdout: true)
}
stage('Nexus IQ') {
when {
anyOf {
branch 'develop'
branch 'master'
branch 'support/*'
}
}
steps {
script {
lastStage = env.STAGE_NAME
sh './gradlew nexusIq'
}
}
}
stage('Trigger amf projects') {
when {
anyOf {
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
stages {
stage('Test') {
steps {
script {
lastStage = env.STAGE_NAME
sh 'sbt -mem 6144 -Dfile.encoding=UTF-8 clean coverage test coverageAggregate'
}
}
}
stage('Coverage') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'sonarqube-official', passwordVariable: 'SONAR_SERVER_TOKEN', usernameVariable: 'SONAR_SERVER_URL']]) {
script {
lastStage = env.STAGE_NAME
sh 'sbt -Dsonar.host.url=${SONAR_SERVER_URL} -Dsonar.login=${SONAR_SERVER_TOKEN} sonarScan'
}
}
}
}
stage('Build JS Package') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
sh 'chmod +x js-build.sh'
sh './js-build.sh'
}
}
}
stage('Publish JVM Artifact') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
sh 'sbt publish'
}
}
}
stage("Publish JS Package") {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
// They are separate commands because we want an earlyExit in case one of them doesnt end with exit code 0
sh 'chmod +x ./scripts/setup-npmrc.sh'
sh './scripts/setup-npmrc.sh'
sh 'chmod +x ./js-publish.sh'
sh './js-publish.sh'
}
}
}
stage('Tag version') {
when {
anyOf {
branch 'master'
}
}
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'github-salt', passwordVariable: 'GITHUB_PASS', usernameVariable: 'GITHUB_USER']]) {
script {
lastStage = env.STAGE_NAME
def version = sbtArtifactVersion("apiContractJVM")
tagCommitToGithub(version)
}
}
}
}
stage('Nexus IQ') {
when {
anyOf {
branch 'master'
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME
sh './gradlew nexusIq'
}
}
}
stage('Trigger amf projects') {
when {
anyOf {
branch 'develop'
}
}
steps {
script {
lastStage = env.STAGE_NAME

echo "Starting TCKutor $TCKUTOR_JOB"
build job: TCKUTOR_JOB, wait: false
echo "Starting TCKutor $TCKUTOR_JOB"
build job: TCKUTOR_JOB, wait: false

echo "Starting Amf Interface Tests $INTERFACES_JOB"
build job: INTERFACES_JOB, wait: false
echo "Starting Amf Interface Tests $INTERFACES_JOB"
build job: INTERFACES_JOB, wait: false

echo "Starting $METADATA_JOB"
build job: METADATA_JOB, wait: false
echo "Starting $METADATA_JOB"
build job: METADATA_JOB, wait: false

echo "Starting $APB_JOB"
build job: APB_JOB, wait: false
echo "Starting $APB_JOB"
build job: APB_JOB, wait: false

echo "Starting $EXAMPLES_JOB"
build job: EXAMPLES_JOB, wait: false
echo "Starting $EXAMPLES_JOB"
build job: EXAMPLES_JOB, wait: false

def newAmfVersion = sbtArtifactVersion("apiContractJVM")
echo "Starting ApiQuery hook $API_QUERY_JOB with amf version: ${newAmfVersion}"
build job: API_QUERY_JOB, wait: false, parameters: [[$class: 'StringParameterValue', name: 'AMF_NEW_VERSION', value: newAmfVersion]]
def newAmfVersion = sbtArtifactVersion("apiContractJVM")
echo "Starting ApiQuery hook $API_QUERY_JOB with amf version: ${newAmfVersion}"
build job: API_QUERY_JOB, wait: false, parameters: [[$class: 'StringParameterValue', name: 'AMF_NEW_VERSION', value: newAmfVersion]]
}
}
}
}
}
}
post {
unsuccessful {
script {
if (isMaster() || isDevelop()) {
sendBuildErrorSlackMessage(lastStage, SLACK_CHANNEL, PRODUCT_NAME)
} else {
echo "Unsuccessful build: skipping slack message notification as branch is not master or develop"
post {
unsuccessful {
failureSlackNotify(lastStage, SLACK_CHANNEL, PRODUCT_NAME)
}
}
}
success {
script {
echo "SUCCESSFUL BUILD"
if (isMaster()) {
sendSuccessfulSlackMessage(SLACK_CHANNEL, PRODUCT_NAME)
} else {
echo "Successful build: skipping slack message notification as branch is not master"
success {
successSlackNotify(SLACK_CHANNEL, PRODUCT_NAME)
}
}
}
}
}

Boolean isDevelop() {
env.BRANCH_NAME == "develop"
}

Boolean isMaster() {
env.BRANCH_NAME == "master"
}

def sendBuildErrorSlackMessage(String lastStage, String slackChannel, String productName) {
def color = '#FF8C00'
def headerFlavour = 'WARNING'
if (isMaster()) {
color = '#FF0000'
headerFlavour = "RED ALERT"
} else if (isDevelop()) {
color = '#FFD700'
}
def message = """:alert: ${headerFlavour}! :alert: Build failed!.
|Branch: ${env.BRANCH_NAME}
|Stage: ${lastStage}
|Product: ${productName}
|Build URL: ${env.BUILD_URL}""".stripMargin().stripIndent()
slackSend color: color, channel: "${slackChannel}", message: message
}

def sendSuccessfulSlackMessage(String slackChannel, String productName) {
slackSend color: '#00FF00', channel: "${slackChannel}", message: ":ok_hand: ${productName} Master Publish OK! :ok_hand:"
}
Loading

0 comments on commit c9e1b40

Please sign in to comment.