diff --git a/Jenkinsfile-ios b/Jenkinsfile-ios index 32d307a2..bdbb5e28 100644 --- a/Jenkinsfile-ios +++ b/Jenkinsfile-ios @@ -219,48 +219,16 @@ pipeline { stage('🔐 生成 JWT') { steps { script { - //JWT_TOKEN = sh( - // script: "node ${CERT_DIR}/generate-jwt.js", - // returnStdout: true - //).trim() + // 一行式 node -e "代码" 必须写在同一行! JWT_TOKEN = sh( script: ''' - node -e - const fs = require('fs'); - const jwt = require('jsonwebtoken'); - - // 从 Jenkins 环境变量获取 - const API_KEY = process.env.API_KEY; - const API_ISSUER = process.env.API_ISSUER; - const P8_FILE = process.env.P8_FILE; - - // 读取 p8 私钥 - const privateKey = fs.readFileSync(P8_FILE, 'utf8'); - - // 生成 JWT(苹果标准格式) - const token = jwt.sign( - { - iss: API_ISSUER, - exp: Math.floor(Date.now() / 1000) + 1200, // 20分钟 - aud: 'appstoreconnect-v1' - }, - privateKey, - { - algorithm: 'ES256', - header: { - kid: API_KEY, - alg: 'ES256' - } - } - ); - // 输出 JWT(Jenkins 会捕获这个值) - console.log(token); - ''', +node -e "const fs=require('fs');const jwt=require('jsonwebtoken');const privateKey=fs.readFileSync(process.env.P8_FILE,'utf8');const token=jwt.sign({iss:process.env.API_ISSUER,exp:Math.floor(Date.now()/1000)+1200,aud:'appstoreconnect-v1'},privateKey,{algorithm:'ES256',header:{kid:process.env.API_KEY}});console.log(token);" +''', returnStdout: true ).trim() - } - echo "✅ JWT 生成成功${JWT_TOKEN}" + echo "✅ JWT 生成成功:${JWT_TOKEN}" + } } }