|
47 | 47 | </div> |
48 | 48 | <div class="section"><div class="titlepage"><div><div><h5 class="title"><a id="agent.docker"></a>6.3.1.1.2. docker</h5></div></div></div> |
49 | 49 |
|
| 50 | + <p><a class="ulink" href="https://jenkins.io/doc/book/pipeline/docker/" target="_top">https://jenkins.io/doc/book/pipeline/docker/</a></p> |
| 51 | + <p>添加 jenkins 用户到 docker 组</p> |
| 52 | + <pre class="screen"> |
| 53 | + |
| 54 | +[root@localhost ~]# gpasswd -a jenkins docker |
| 55 | +Adding user jenkins to group docker |
| 56 | + |
| 57 | +[root@localhost ~]# cat /etc/group | grep ^docker |
| 58 | +docker:x:993:jenkins |
| 59 | + |
| 60 | + </pre> |
| 61 | + |
50 | 62 | <pre class="screen"> |
51 | 63 |
|
52 | 64 | pipeline { |
|
72 | 84 | } |
73 | 85 | } |
74 | 86 | } |
75 | | -} |
| 87 | +} |
| 88 | + |
| 89 | +pipeline { |
| 90 | + agent { |
| 91 | + docker { image 'php:latest' } |
| 92 | + } |
| 93 | + stages { |
| 94 | + stage('Test') { |
| 95 | + steps { |
| 96 | + sh 'php --version' |
| 97 | + } |
| 98 | + } |
| 99 | + } |
| 100 | +} |
76 | 101 |
|
77 | | - </pre> |
| 102 | + </pre> |
78 | 103 | </div> |
79 | 104 | </div> |
80 | 105 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pipeline.stages"></a>6.3.1.2. stages</h4></div></div></div> |
|
107 | 132 | </div> |
108 | 133 |
|
109 | 134 |
|
110 | | - |
111 | 135 |
|
112 | | - |
| 136 | + |
| 137 | + |
113 | 138 |
|
114 | 139 |
|
115 | 140 |
|
|
176 | 201 | } |
177 | 202 |
|
178 | 203 | </pre> |
179 | | -</div> |
| 204 | + </div> |
| 205 | + |
| 206 | + |
180 | 207 |
|
181 | 208 |
|
182 | | - |
183 | 209 |
|
184 | | - |
185 | 210 |
|
186 | 211 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pipeline.environment"></a>6.3.1.5. 设置环境变量</h4></div></div></div> |
187 | 212 |
|
|
260 | 285 |
|
261 | 286 | </pre> |
262 | 287 | </div> |
263 | | - |
264 | | - |
| 288 | + |
| 289 | + |
265 | 290 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pipeline.options"></a>6.3.1.7. options</h4></div></div></div> |
266 | 291 |
|
267 | 292 | <p>还能定义一些管道特定的选项,介绍几个常用的:</p> |
|
273 | 298 | timestamps - 控制台输出前面加时间戳options { timestamps() } |
274 | 299 |
|
275 | 300 | </pre> |
276 | | - </div> |
| 301 | + </div> |
277 | 302 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pipeline.triggers"></a>6.3.1.8. triggers</h4></div></div></div> |
278 | 303 |
|
279 | 304 | <p>触发器指令定义了这个管道何时该执行,就可以定义两种cron和pollSCM</p> |
|
1095 | 1120 | } |
1096 | 1121 |
|
1097 | 1122 | </pre> |
1098 | | - |
| 1123 | + |
1099 | 1124 | <pre class="screen"> |
1100 | 1125 |
|
1101 | 1126 |
|
|
1214 | 1239 |
|
1215 | 1240 | </pre> |
1216 | 1241 | </div> |
1217 | | - |
1218 | | - |
1219 | | - |
| 1242 | + |
| 1243 | + |
| 1244 | + |
1220 | 1245 | </div> |
1221 | 1246 | <div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pipeline.scm"></a>6.3.4. 版本控制</h3></div></div></div> |
1222 | 1247 |
|
1223 | | - |
| 1248 | + |
1224 | 1249 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="steps.checkout"></a>6.3.4.1. checkout</h4></div></div></div> |
1225 | 1250 |
|
1226 | 1251 | <p>https://github.com/jenkinsci/workflow-scm-step-plugin/blob/master/README.md</p> |
|
1326 | 1351 | </div> |
1327 | 1352 | <div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="pipeline.workspace"></a>6.3.6. 工作区</h3></div></div></div> |
1328 | 1353 |
|
1329 | | - |
| 1354 | + |
1330 | 1355 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="pipeline.dir"></a>6.3.6.1. 变更目录</h4></div></div></div> |
1331 | 1356 |
|
1332 | 1357 | <pre class="screen"> |
|
1390 | 1415 |
|
1391 | 1416 | </pre> |
1392 | 1417 | </div> |
1393 | | - |
| 1418 | + |
1394 | 1419 | <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="steps.cleanWs"></a>6.3.6.4. 清理工作区</h4></div></div></div> |
1395 | 1420 |
|
1396 | 1421 | <pre class="screen"> |
|
1439 | 1464 | } |
1440 | 1465 |
|
1441 | 1466 | </pre> |
1442 | | - |
| 1467 | + |
1443 | 1468 | </div> |
| 1469 | + |
| 1470 | + |
| 1471 | + </div> |
| 1472 | + <div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Jenkinsfile.example"></a>6.3.7. Jenkinsfile Pipeline Example ()</h3></div></div></div> |
1444 | 1473 |
|
1445 | | - |
| 1474 | + <div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp31"></a>6.3.7.1. Maven 子模块范例</h4></div></div></div> |
| 1475 | + |
| 1476 | + <p> |
| 1477 | + Maven 子模块创建方法 |
| 1478 | + <a class="ulink" href="https://www.netkiller.cn/java/build/maven.html#maven.module" target="_top">https://www.netkiller.cn/java/build/maven.html#maven.module</a> |
| 1479 | + </p> |
| 1480 | + <p>目录结构</p> |
| 1481 | + <pre class="screen"> |
| 1482 | + |
| 1483 | +Project |
| 1484 | + | |
| 1485 | + |--- common (Shared) |
| 1486 | + | | ---pom.xml |
| 1487 | + |--- project1 (depend common) |
| 1488 | + | |--- pom.xml |
| 1489 | + |--- project2 (depend common) |
| 1490 | + | |--- pom.xml |
| 1491 | + |---pom.xml |
| 1492 | + |
| 1493 | + |
| 1494 | + </pre> |
| 1495 | + <p>构建 父项目</p> |
| 1496 | + <pre class="screen"> |
| 1497 | + |
| 1498 | +pipeline { |
| 1499 | + agent { |
| 1500 | + label "default" |
| 1501 | + } |
| 1502 | + stages { |
| 1503 | + |
| 1504 | + stage("检出") { |
| 1505 | + steps { |
| 1506 | + checkout( |
| 1507 | + [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], |
| 1508 | + userRemoteConfigs: [[url: env.GIT_REPO_URL]]] |
| 1509 | + ) |
| 1510 | + } |
| 1511 | + } |
| 1512 | + |
| 1513 | + stage("构建") { |
| 1514 | + steps { |
| 1515 | + echo "构建中..." |
| 1516 | + sh 'mvn package -Dmaven.test.skip=true' // mvn 示例 |
| 1517 | + archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物 |
| 1518 | + echo "构建完成." |
| 1519 | + } |
| 1520 | + } |
| 1521 | + |
| 1522 | + stage("测试") { |
| 1523 | + steps { |
| 1524 | + echo "单元测试中..." |
| 1525 | + // 请在这里放置您项目代码的单元测试调用过程,例如: |
| 1526 | + sh 'mvn test' // mvn 示例 |
| 1527 | + echo "单元测试完成." |
| 1528 | + junit '**/target/surefire-reports/*.xml' // 收集单元测试报告的调用过程 |
| 1529 | + } |
| 1530 | + } |
| 1531 | + |
| 1532 | + stage("部署") { |
| 1533 | + steps { |
| 1534 | + echo "部署中..." |
| 1535 | + echo "部署完成" |
| 1536 | + } |
| 1537 | + } |
| 1538 | + } |
| 1539 | +} |
| 1540 | + |
| 1541 | + </pre> |
| 1542 | + <p>构建共享项目</p> |
| 1543 | + <pre class="screen"> |
| 1544 | + |
| 1545 | +pipeline { |
| 1546 | + agent { |
| 1547 | + label "default" |
| 1548 | + } |
| 1549 | + stages { |
| 1550 | + |
| 1551 | + stage("检出") { |
| 1552 | + steps { |
| 1553 | + checkout( |
| 1554 | + [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], |
| 1555 | + userRemoteConfigs: [[url: env.GIT_REPO_URL]]] |
| 1556 | + ) |
| 1557 | + } |
| 1558 | + } |
| 1559 | + |
| 1560 | + stage("构建") { |
| 1561 | + steps { |
| 1562 | + echo "构建中..." |
| 1563 | + dir(path: 'common') { |
| 1564 | + sh 'mvn package -Dmaven.test.skip=true' // mvn 示例 |
| 1565 | + archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物 |
| 1566 | + } |
| 1567 | + echo "构建完成." |
| 1568 | + } |
| 1569 | + } |
| 1570 | + |
| 1571 | + stage("测试") { |
| 1572 | + steps { |
| 1573 | + echo "单元测试中..." |
| 1574 | + sh 'mvn test' // mvn 示例 |
| 1575 | + echo "单元测试完成." |
| 1576 | + junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程 |
| 1577 | + } |
| 1578 | + } |
| 1579 | + |
| 1580 | + stage("部署") { |
| 1581 | + steps { |
| 1582 | + echo "部署中..." |
| 1583 | + dir(path: 'common') { |
| 1584 | + sh 'mvn install' |
| 1585 | + } |
| 1586 | + echo "部署完成" |
| 1587 | + } |
| 1588 | + } |
| 1589 | + } |
| 1590 | +} |
| 1591 | + |
| 1592 | + </pre> |
| 1593 | + <p>构建 project1 和 project2</p> |
| 1594 | + <pre class="screen"> |
| 1595 | + |
| 1596 | +pipeline { |
| 1597 | + agent { |
| 1598 | + label "default" |
| 1599 | + } |
| 1600 | + stages { |
| 1601 | + |
| 1602 | + stage("检出") { |
| 1603 | + steps { |
| 1604 | + checkout( |
| 1605 | + [$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], |
| 1606 | + userRemoteConfigs: [[url: env.GIT_REPO_URL]]] |
| 1607 | + ) |
| 1608 | + } |
| 1609 | + } |
| 1610 | + stage("共享库") { |
| 1611 | + steps { |
| 1612 | + echo "构建中..." |
| 1613 | + dir(path: 'common') { |
| 1614 | + sh 'mvn install -Dmaven.test.skip=true' // mvn 示例 |
| 1615 | + archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物 |
| 1616 | + } |
| 1617 | + echo "构建完成." |
| 1618 | + } |
| 1619 | + } |
| 1620 | + stage("构建") { |
| 1621 | + steps { |
| 1622 | + echo "构建中..." |
| 1623 | + dir(path: 'project1') { |
| 1624 | + sh 'mvn package -Dmaven.test.skip=true' // mvn 示例 |
| 1625 | + archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true // 收集构建产物 |
| 1626 | + } |
| 1627 | + echo "构建完成." |
| 1628 | + |
| 1629 | + } |
| 1630 | + } |
| 1631 | + |
| 1632 | + stage("测试") { |
| 1633 | + steps { |
| 1634 | + echo "单元测试中..." |
| 1635 | + sh 'mvn test' // mvn 示例 |
| 1636 | + echo "单元测试完成." |
| 1637 | + junit 'target/surefire-reports/*.xml' // 收集单元测试报告的调用过程 |
| 1638 | + } |
| 1639 | + } |
| 1640 | + |
| 1641 | + stage("部署") { |
| 1642 | + steps { |
| 1643 | + echo "部署中..." |
| 1644 | + // 部署脚本 |
| 1645 | + echo "部署完成" |
| 1646 | + } |
| 1647 | + } |
| 1648 | + } |
| 1649 | +} |
| 1650 | + |
| 1651 | + </pre> |
| 1652 | + </div> |
| 1653 | + |
1446 | 1654 | </div> |
1447 | | - |
1448 | 1655 | </div><div xmlns="" id="disqus_thread"></div><script xmlns=""> |
1449 | 1656 |
|
1450 | 1657 | var disqus_config = function () { |
|
0 commit comments