Compare commits

..
Author SHA1 Message Date
marko 40f015563a jenkinsfile: filter stages based on path
Ideally we would want to trigger Jenkins build based on the path where
change occurred. Unfortunately this is not supported by Jenkins. As a
workaround we are conditionally executing steps if the change occured in
the apps/connector/ path. Prior to this we need to fetch the changelog
diff between current branch and target branch to understand if there was
a change present in the target dir and if we need to run all stages.
The population of changelog is needed just the first time the PR is
opened and in the subsequent steps we don't need this.

Referenced issue: https://github.com/status-im/status-web/issues/590

Signed-off-by: markoburcul <marko@status.im>
2024-10-11 15:53:58 +02:00
2 changed files with 35 additions and 26 deletions
+7 -7
View File
@@ -6,13 +6,13 @@ This monorepo contains packages for building web applications in the Status ecos
## Packages
| Name | `npm` | Description |
| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`@status-im/components`](./packages/components) | [![npm version](https://img.shields.io/npm/v/@status-im/components)](https://www.npmjs.com/package/@status-im/components) | Component library built with Radix UI, React Aria, Tailwind CSS. |
| [`@status-im/js`](./packages/status-js) | [![npm version](https://img.shields.io/npm/v/@status-im/js)](https://www.npmjs.com/package/@status-im/js) | Libary for Waku protocol integration and blockchain interactions. |
| [`@status-im/icons`](./packages/icons) | [![npm version](https://img.shields.io/npm/v/@status-im/icons)](https://www.npmjs.com/package/@status-im/icons) | Auto-generated icon library based on our [design system](https://www.figma.com/design/qLLuMLfpGxK9OfpIavwsmK/Iconset?node-id=3239-987&node-type=frame&t=0h8iIiZ3Sf0g4MRV-11). |
| [`@status-im/colors`](./packages/colors) | [![npm version](https://img.shields.io/npm/v/@status-im/colors.svg)](https://www.npmjs.com/package/@status-im/colors) | Auto-generated color palette based on our [design system](https://www.figma.com/design/v98g9ZiaSHYUdKWrbFg9eM/Foundations?node-id=619-5995&node-type=canvas&m=dev). |
| [`@status-im/eslint-config`](./packages/eslint-config) | [![npm version](https://img.shields.io/npm/v/@status-im/eslint-config.svg)](https://www.npmjs.com/package/@status-im/eslint-config) | Shared ESLint configuration for consistent code style across projects. |
| Name | `npm` | Description |
| ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`@status-im/components`](./packages/components) | [![npm version](https://img.shields.io/npm/v/@status-im/components)](https://www.npmjs.com/package/@status-im/components) | Component library built with Radix UI, React Aria, Tailwind CSS. |
| [`@status-im/js`](./packages/status-js) | [![npm version](https://img.shields.io/npm/v/@status-im/js)](https://www.npmjs.com/package/@status-im/js) | Libary for Waku protocol integration and blockchain interactions. |
| [`@status-im/icons`](./packages/icons) | [![npm version](https://img.shields.io/npm/v/@status-im/icons)](https://www.npmjs.com/package/@status-im/icons) | Auto-generated icon library based on our [design system](https://www.figma.com/design/qLLuMLfpGxK9OfpIavwsmK/Iconset?node-id=3239-987&node-type=frame&t=0h8iIiZ3Sf0g4MRV-11). |
| [`@status-im/colors`](./packages/colors) | [![npm version](https://img.shields.io/npm/v/@status-im/colors.svg)](https://www.npmjs.com/package/@status-im/colors) | Auto-generated color palette based on our [design system](https://www.figma.com/design/v98g9ZiaSHYUdKWrbFg9eM/Foundations?node-id=619-5995&node-type=canvas&m=dev). |
| [`@status-im/eslint-config`](./packages/eslint-config) | | Shared ESLint configuration for consistent code style across projects. |
## Apps
+28 -19
View File
@@ -29,28 +29,37 @@ pipeline {
}
stages {
stage('Check Changed Files') {
steps {
script {
// Get the list of changed files
def changedFiles = sh(
script: "git diff --name-only origin/main...HEAD",
returnStdout: true
).trim()
// Check if the changes are relevant
def isRelevant = changedFiles.split('\n').any { file ->
file.startsWith('apps/connector/')
}
// If no relevant changes, skip the build
if (isRelevant) {
changesDetected = true
}
}
stage('Initial changelog checkout') {
when {
expression { currentBuild.previousCompletedBuild == null }
}
steps {
script {
checkout scmGit(
branches: scm.branches,
extensions: [
cloneOption(depth: 100, noTags: true, reference: '', shallow: true),
changelogToBranch(changelogBase(
compareRemote: 'origin',
compareTarget: CHANGE_TARGET
))
],
userRemoteConfigs: scm.userRemoteConfigs
)
}
}
}
stage('Check changes') {
when {
changeset pattern: "apps/connector/**", comparator: "GLOB"
}
steps {
script {
changesDetected = true
}
}
}
stage('Install') {
when {
expression { changesDetected }