diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 0f14d62..581adeb 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -15,12 +15,12 @@ defaults:
working-directory: ./client
on:
push:
- branches: [ master ]
+ branches: [master]
pull_request:
# The branches below must be a subset of the branches above
- branches: [ master ]
+ branches: [master]
schedule:
- - cron: '19 3 * * 5'
+ - cron: "19 3 * * 5"
jobs:
analyze:
@@ -34,47 +34,45 @@ jobs:
strategy:
fail-fast: false
matrix:
- language: [ 'java', 'javascript' ]
+ language: ["java", "javascript"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- - name: Checkout repository
- uses: actions/checkout@v2
+ - name: Checkout repository
+ uses: actions/checkout@v2
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
-
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
- - name: Build with Maven
- run: mvn -B -Pm2 clean verify --file pom.xml
- working-directory: server
-
- - name: Build Client with yarn
- uses: actions/setup-node@v2
- with:
- node-version: '12'
- - run: yarn install
+ - name: Build with Maven
+ run: mvn -B -Pm2 clean verify --file pom.xml
+ working-directory: server
+ - name: Build Client with yarn
+ uses: actions/setup-node@v2
+ with:
+ node-version: "14"
+ - run: yarn install
- # âšī¸ Command-line programs to run using the OS shell.
- # đ https://git.io/JvXDl
+ # âšī¸ Command-line programs to run using the OS shell.
+ # đ https://git.io/JvXDl
- # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
+ # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
- #- run: |
- # make bootstrap
- # make release
+ #- run: |
+ # make bootstrap
+ # make release
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v2
diff --git a/Jenkinsfile b/Jenkinsfile
index 0a765e6..02a0388 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -4,7 +4,7 @@ kind: Pod
spec:
containers:
- name: ci
- image: eclipseglsp/ci:alpine
+ image: eclipseglsp/ci:alpine-v3.1
tty: true
resources:
limits:
@@ -59,6 +59,7 @@ pipeline {
environment {
YARN_CACHE_FOLDER = "${env.WORKSPACE}/yarn-cache"
SPAWN_WRAP_SHIM_ROOT = "${env.WORKSPACE}"
+ EMAIL_TO= "glsp-build@eclipse.org"
}
stages {
@@ -67,8 +68,14 @@ pipeline {
container('ci') {
timeout(30){
dir('client') {
- sh 'yarn install --ignore-scripts'
- sh 'yarn build'
+ sh "yarn install"
+ script {
+ // Fail the step if there are uncommited changes to the yarn.lock file
+ if (sh(returnStatus: true, script: 'git diff --name-only | grep -q "^yarn.lock"') == 0) {
+ echo 'The yarn.lock file has uncommited changes!'
+ error 'The yarn.lock file has uncommited changes!'
+ }
+ }
}
}
}
@@ -111,19 +118,40 @@ pipeline {
expression {
/* Only trigger the deployment job if the changeset contains changes in
the `server` or `client/packages/` directory */
- sh(returnStatus: true, script: 'git diff --name-only HEAD^ | grep --quiet "^server\\|client/packages/"') == 0
+ sh(returnStatus: true, script: 'git diff --name-only HEAD^ | grep -q "^server\\|client/packages/"') == 0
}
}
}
- steps {
- build job: 'deploy-p2-ide-integration', wait: true
- build job: 'deploy-npm-ide-integration', wait: true
+ stages {
+ stage('Deploy client (NPM)') {
+ steps {
+ container('ci') {
+ timeout(30) {
+ dir(client) {
+ withCredentials([string(credentialsId: 'npmjs-token', variable: 'NPM_AUTH_TOKEN')]) {
+ sh 'printf "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}\n" >> $WORKSPACE/.npmrc'
+ }
+ sh 'git config user.email "eclipse-glsp-bot@eclipse.org"'
+ sh 'git config user.name "eclipse-glsp-bot"'
+ sh 'yarn publish:next'
+ }
+ }
+ }
+ }
+ }
+ stage('Deploy server (P2)') {
+ steps {
+ timeout(30){
+ build job: 'deploy-p2-ide-integration', wait: true
+ }
+ }
+ }
}
}
}
post{
- always{
+ success{
container('ci') {
// Record & publish checkstyle issues
@@ -140,5 +168,38 @@ pipeline {
qualityGates: [[threshold: 1, type: 'TOTAL', unstable: true]]
}
}
+ failure {
+ script {
+ if (env.BRANCH_NAME == 'master') {
+ echo "Build result FAILURE: Send email notification to ${EMAIL_TO}"
+ emailext attachLog: true,
+ from: 'glsp-bot@eclipse.org',
+ body: 'Job: ${JOB_NAME}
Build Number: ${BUILD_NUMBER}
Build URL: ${BUILD_URL}',
+ mimeType: 'text/html', subject: 'Build ${JOB_NAME} (#${BUILD_NUMBER}) FAILURE', to: "${EMAIL_TO}"
+ }
+ }
+ }
+ unstable {
+ script {
+ if (env.BRANCH_NAME == 'master') {
+ echo "Build result UNSTABLE: Send email notification to ${EMAIL_TO}"
+ emailext attachLog: true,
+ from: 'glsp-bot@eclipse.org',
+ body: 'Job: ${JOB_NAME}
Build Number: ${BUILD_NUMBER}
Build URL: ${BUILD_URL}',
+ mimeType: 'text/html', subject: 'Build ${JOB_NAME} (#${BUILD_NUMBER}) UNSTABLE', to: "${EMAIL_TO}"
+ }
+ }
+ }
+ fixed {
+ script {
+ if (env.BRANCH_NAME == 'master') {
+ echo "Build back to normal: Send email notification to ${EMAIL_TO}"
+ emailext attachLog: false,
+ from: 'glsp-bot@eclipse.org',
+ body: 'Job: ${JOB_NAME}
Build Number: ${BUILD_NUMBER}
Build URL: ${BUILD_URL}',
+ mimeType: 'text/html', subject: 'Build ${JOB_NAME} back to normal (#${BUILD_NUMBER})', to: "${EMAIL_TO}"
+ }
+ }
+ }
}
}
diff --git a/README.md b/README.md
index 6861470..6ff33e8 100755
--- a/README.md
+++ b/README.md
@@ -1,8 +1,4 @@
-# Eclipse GLSP Eclipse IDE Integration
-
-[![build-status](https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fci.eclipse.org%2Fglsp%2Fjob%2Feclipse-glsp%2Fjob%2Fglsp-eclipse-integration%2Fjob%2Fmaster%2F)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-eclipse-integration/)
-[![publish-status-npm](https://img.shields.io/jenkins/build?jobUrl=https://ci.eclipse.org/glsp/job/deploy-npm-ide-integration/&label=npm)](https://ci.eclipse.org/glsp/job/deploy-npm-ide-integration/)
-[![publish-status-p2](https://img.shields.io/jenkins/build?jobUrl=https://ci.eclipse.org/glsp/job/deploy-p2-ide-integration/&label=p2)](https://ci.eclipse.org/glsp/job/deploy-p2-ide-integration/)
+# Eclipse GLSP Eclipse IDE Integration [![build-status](https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fci.eclipse.org%2Fglsp%2Fjob%2Feclipse-glsp%2Fjob%2Fglsp-eclipse-integration%2Fjob%2Fmaster%2F)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-eclipse-integration/) [![publish-status-p2](https://img.shields.io/jenkins/build?jobUrl=https://ci.eclipse.org/glsp/job/deploy-p2-ide-integration/&label=p2)](https://ci.eclipse.org/glsp/job/deploy-p2-ide-integration/)
Contains the glue code for opening browser-based GLSP diagrams in an Eclipse IDE Editor
diff --git a/client/.gitignore b/client/.gitignore
index c560541..e5af2e5 100644
--- a/client/.gitignore
+++ b/client/.gitignore
@@ -6,4 +6,5 @@ lib
*.log
*.ttf
-tsconfig.tsbuildinfo
\ No newline at end of file
+tsconfig.tsbuildinfo
+eslint.xml
diff --git a/client/examples/workflow-webapp/package.json b/client/examples/workflow-webapp/package.json
index ccf6452..f1d7910 100644
--- a/client/examples/workflow-webapp/package.json
+++ b/client/examples/workflow-webapp/package.json
@@ -20,11 +20,13 @@
"webpack-cli": "^4.9.1"
},
"scripts": {
- "prepare": "yarn clean && yarn build && yarn lint",
+ "build": "tsc -b",
"clean": "rimraf lib tsconfig.tsbuildinfo app/bundle.js app/bundle.js.map",
- "build": "tsc && webpack",
"lint": "eslint --ext .ts,.tsx ./src",
- "lint:fix": "eslint --fix --ext .ts,.tsx ./src",
+ "lint:ci": "yarn lint -o eslint.xml -f checkstyle",
+ "prepare": "yarn clean && yarn build",
+ "test": "mocha --config ../../.mocharc.json \"./src/**/*.spec.?(ts|tsx)\"",
+ "test:ci": "export JUNIT_REPORT_PATH=./report.xml && yarn test --reporter mocha-jenkins-reporter",
"watch": "tsc -w"
}
}
diff --git a/client/package.json b/client/package.json
index dafa7d8..ab20801 100644
--- a/client/package.json
+++ b/client/package.json
@@ -3,28 +3,31 @@
"name": "parent",
"version": "1.1.0-next",
"engines": {
- "yarn": ">=1.7.0 <2.x.x"
+ "yarn": ">=1.7.0 <2.x.x",
+ "node": ">=14.18.0"
},
"devDependencies": {
- "@eclipse-glsp/config": "next",
- "@types/node": "12.x",
+ "@eclipse-glsp/config": "1.1.0-next.d03ad9f.112",
+ "@types/node": "14",
"copyfiles": "^2.4.1",
"lerna": "^4.0.0",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
- "typescript": "^4.4.5"
+ "typescript": "^4.9.3"
},
"scripts": {
- "prepare": "lerna run prepare && yarn copyClient",
- "install:only": "yarn install --ignore-scripts",
- "watch": "lerna run --parallel watch",
- "build": "lerna run build",
- "lint": "lerna run lint --",
+ "all": "yarn install && yarn lint",
+ "build": "lerna run build && yarn copy:client",
+ "clean": "lerna run clean",
"copyClient": "copyfiles -f ./examples/workflow-webapp/app/* ../server/example/org.eclipse.glsp.ide.workflow.editor/diagram",
+ "lint": "lerna run lint",
+ "lint:ci": "lerna run lint:ci",
+ "prepare": "lerna run prepare && yarn copy:client",
"publish:prepare": "lerna version --ignore-scripts --yes --no-push",
"publish:latest": "lerna publish from-git --no-git-reset --no-git-tag-version --no-verify-access --no-push",
"publish:next": "SHA=$(git rev-parse --short HEAD) && lerna publish preminor --exact --canary --preid next.${SHA} --dist-tag next --no-git-reset --no-git-tag-version --no-push --ignore-scripts --yes --no-verify-access",
- "upgrade:next": "yarn upgrade -p \"@eclipse-glsp.*|sprotty\" --next "
+ "upgrade:next": "yarn upgrade -p \"@eclipse-glsp.*|sprotty.*\" --next ",
+ "watch": "lerna run --parallel watch"
},
"workspaces": [
"packages/*",
diff --git a/client/packages/ide/package.json b/client/packages/ide/package.json
index 28f3230..925048d 100644
--- a/client/packages/ide/package.json
+++ b/client/packages/ide/package.json
@@ -30,11 +30,11 @@
"@eclipse-glsp/client": "next"
},
"scripts": {
- "prepare": "yarn clean && yarn build && yarn lint",
+ "build": "tsc -b",
"clean": "rimraf lib tsconfig.tsbuildinfo ",
- "build": "tsc",
"lint": "eslint --ext .ts,.tsx ./src",
- "lint:fix": "eslint --fix --ext .ts,.tsx ./src",
+ "lint:ci": "yarn lint -o eslint.xml -f checkstyle",
+ "prepare": "yarn clean && yarn build",
"watch": "tsc -w"
},
"publishConfig": {