#!/usr/bin/env groovy library 'status-jenkins-lib@v1.9.11' def changesDetected = false pipeline { agent { label 'linux' } options { timestamps() /* Prevent Jenkins jobs from running forever */ timeout(time: 10, unit: 'MINUTES') /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '20', daysToKeepStr: '30', )) disableConcurrentBuilds() } environment { PLATFORM = 'chrome' ZIP_NAME = utils.pkgFilename( type: 'Extension', version: 'none', arch: 'chrome', ext: 'zip', ) } stages { stage('Check Changed Files') { when { changeset pattern: "apps/connector/**", comparator: "GLOB" } steps { script { changesDetected = true } } } stage('Install') { when { expression { changesDetected } } steps { dir("${env.WORKSPACE}/apps/connector") { script { nix.shell( 'pnpm install --frozen-lockfile', pure: false, entryPoint: "${env.WORKSPACE}/apps/connector/shell.nix" ) } } } } stage('Build') { when { expression { changesDetected } } steps { dir("${env.WORKSPACE}/apps/connector") { script { nix.shell( 'pnpm build:chrome', pure: false, entryPoint: "${env.WORKSPACE}/apps/connector/shell.nix" ) } } } } stage('Zip') { when { expression { changesDetected } } steps { dir("${env.WORKSPACE}/apps/connector") { zip( zipFile: env.ZIP_NAME, dir: 'build/chrome-mv3-prod', archive: false, ) } } } stage('Archive') { when { expression { changesDetected } } steps { dir("${env.WORKSPACE}/apps/connector") { archiveArtifacts( artifacts: env.ZIP_NAME, fingerprint: true, ) } } } stage('Upload') { when { expression { changesDetected } } steps { dir("${env.WORKSPACE}/apps/connector") { script { env.PKG_URL = s5cmd.upload(env.ZIP_NAME) } } } } } post { success { script { if(changesDetected) { github.notifyPR(true) } } } failure { script { if(changesDetected) { github.notifyPR(false) } } } cleanup { cleanWs() } } }