---
title: Jenkins流水线编译代码示例
description: "若需要使用毕昇编译器或GCC for openEuler相关能力，请使用以下代码示例。"
url: https://www.hikunpeng.com/document/detail/zh/nativedevp/userguide/pipeline/NativeDevelopment_0012.html
sourcePath: /source/zh/nativedevp/userguide/pipeline/NativeDevelopment_0012.html
indexId: f9f2c1316e65f4d2071820537897c71346298c4a40550433836823f3b6930afd68
---
# Jenkins流水线编译代码示例

若需要使用毕昇编译器或GCC for openEuler相关能力，请使用以下代码示例。

#### A-FOT（配置文件参数优化）

```
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
parameters {
string(name: 'GIT_URL', defaultValue: 'https://gitee.com/devkit-pipeline/c_demo.git', description: '--> git url <--')
string(name: 'GIT_BRANCH', defaultValue: 'master', description: '--> code branch <--')
string(name: 'GIT_TARGET_DIR_NAME', defaultValue: 'c_demo', description: '--> code branch <--')
}
stages{
stage('Git   Code') {
agent {
label 'kunpeng_scanner'
}
steps {
echo '====== 获取源码 ======'
checkout scmGit(branches: [[name: "${params.GIT_BRANCH}"]],
browser: github("${params.GIT_URL}"),
extensions: [[$class: 'RelativeTargetDirectory',
relativeTargetDir: "${params.GIT_TARGET_DIR_NAME}"],
cleanBeforeCheckout(deleteUntrackedNestedRepositories: true)],
userRemoteConfigs: [[url: "${params.GIT_URL}"]])
}
}
stage('build') {
agent {
# 如果想要使用毕昇编译器的相关能力，label请指定为kunpeng_c_builder_bisheng_compiler
label 'kunpeng_c_builder_gcc'
}
steps {
script{
sh '''
source ${HOME}/.local/wrap-bin/devkit_NonInvasiveSwitching.sh
cd ./c_demo
make
'''
}
}
}
}
stages{
stage('A-FOT') {
agent {
label 'kunpeng_c_builder_gcc'
}
steps{
# 安装完成后已有GCC for openEuler的环境，编译命令与其他平台保持一致。
####################################
# 此处替换为用户实际场景的编译命令 #
####################################
sh 'a-fot --config_file a-fot.ini'
}
}
}
}
```


#### A-FOT（命令行参数优化）

```
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
parameters {
string(name: 'GIT_URL', defaultValue: 'https://gitee.com/devkit-pipeline/c_demo.git', description: '--> git url <--')
string(name: 'GIT_BRANCH', defaultValue: 'master', description: '--> code branch <--')
string(name: 'GIT_TARGET_DIR_NAME', defaultValue: 'c_demo', description: '--> code branch <--')
}
stages{
stage('Git Code') {
steps {
echo '====== 获取源码 ======'
checkout scmGit(branches: [[name: "${params.GIT_BRANCH}"]],
browser: github("${params.GIT_URL}"),
extensions: [[$class: 'RelativeTargetDirectory',
relativeTargetDir: "${params.GIT_TARGET_DIR_NAME}"],
cleanBeforeCheckout(deleteUntrackedNestedRepositories: true)],
userRemoteConfigs: [[url: "${params.GIT_URL}"]])
}
}
stage('build') {
agent {
# 如果想要使用毕昇编译器的相关能力，label请指定为kunpeng_c_builder_bisheng_compiler
label 'kunpeng_c_builder_gcc'
}
steps {
script{
sh '''
source ${HOME}/.local/wrap-bin/devkit_NonInvasiveSwitching.sh
cd ./c_demo
make
'''
}
}
}
}
stages{
stage('A-FOT') {
agent {
label 'kunpeng_c_builder_gcc'
}
steps{
sh 'a-fot --opt_mode AutoFDO --gcc_path
/usr
--run_script
/root/run.sh
--build_script
/root/build.sh
--build_mode Wrapper --work_path
./
--bin_file
/tmp/test
'
}
}
}
}
```

优化模式为AutoFDO，GCC路径为/usr，应用运行脚本路径为/root/run.sh，应用构建脚本路径为/root/build.sh，构建模式为Wrapper，脚本工作目录为当前目录，可执行二进制文件路径为/tmp/test，请根据实际情况进行替换。
