Browse Source

Switch from jenkins to github actions

master
kamilritz 5 years ago committed by Daniel Agar
parent
commit
26125c245d
  1. 43
      .github/workflows/build_tests.yml
  2. 33
      .github/workflows/firmware_build_test.yml
  3. 26
      .github/workflows/unit_tests.yml
  4. 187
      Jenkinsfile

43
.github/workflows/build_tests.yml

@ -0,0 +1,43 @@
name: Build Tests
on: [push]
jobs:
Linux-GCC:
runs-on: ubuntu-latest
container: px4io/px4-dev-base-bionic:2020-01-13
steps:
- uses: actions/checkout@v1
- name: main build
run: make
- name: clean build
run: make clean
- name: main test
run: make test
Linux-Clang:
runs-on: ubuntu-latest
container: px4io/px4-dev-clang:2019-10-24
env:
CC: clang
CXX: clang++
steps:
- uses: actions/checkout@v1
- name: main build
run: make
- name: clean build
run: make clean
# TODO: This is not running at the moment
#- name: main test
# run: make test
Mac-OS:
runs-on: macos-latest
steps:
- uses: actions/checkout@v1
- name: main build
run: make
- name: clean build
run: make clean
# TODO: This is not running at the moment
#- name: main test
# run: make test

33
.github/workflows/firmware_build_test.yml

@ -0,0 +1,33 @@
name: Firmware Build Test
on: [push]
jobs:
Firmware-build:
runs-on: ubuntu-latest
container: px4io/px4-dev-base-bionic:2020-01-13
env:
GIT_COMMITTER_EMAIL: bot@px4.io
GIT_COMMITTER_NAME: PX4BuildBot
steps:
- name: Checkout Firmware master
uses: actions/checkout@v1
with:
repository: PX4/Firmware
ref: master
submodules: recurvise
- run: git submodule update --init --recursive
working-directory: ../Firmware
- name: Configure Firmware to include current ECL version
working-directory: ../Firmware/src/lib/ecl
run: git checkout ${{ github.sha }}
- name: Add and commit new ECL version
run: |
git config --global user.email "${GIT_COMMITTER_EMAIL}"
git config --global user.name "${GIT_COMMITTER_NAME}"
git add src/lib/ecl
git commit -m "Update ECL"
working-directory: ../Firmware
- name: Build Firmware
working-directory: ../Firmware
run: make

26
.github/workflows/unit_tests.yml

@ -0,0 +1,26 @@
name: Unit Tests
on: [push]
jobs:
unit_tests:
runs-on: ubuntu-latest
container: px4io/px4-dev-base-bionic:2020-01-13
steps:
- uses: actions/checkout@v1
- name: main test
run: make test
coverage:
runs-on: ubuntu-latest
container: px4io/px4-dev-base-bionic:2020-01-13
steps:
- uses: actions/checkout@v1
- name: coverage
run: make coverage
- name: coverage_html
run: make coverage_html
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: ecl

187
Jenkinsfile vendored

@ -1,187 +0,0 @@
pipeline {
agent none
stages {
stage('Build') {
parallel {
stage('Linux GCC') {
agent {
docker {
image 'px4io/px4-dev-base-bionic:2019-10-24'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make'
sh 'ccache -s'
sh 'make distclean'
}
}
stage('Linux Clang') {
agent {
docker {
image 'px4io/px4-dev-clang:2019-10-24'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
CC = 'clang'
CXX = 'clang++'
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make'
sh 'ccache -s'
sh 'make distclean'
}
}
stage('OSX') {
agent {
node {
label 'mac'
}
}
environment {
CCACHE_BASEDIR = "${env.WORKSPACE}"
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make'
sh 'ccache -s'
sh 'make distclean'
}
}
} // parallel
} // stage Build
stage('Test') {
parallel {
stage('coverage') {
agent {
docker {
image 'px4io/px4-dev-base-bionic:2019-10-24'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make coverage'
sh 'make coverage_html'
// publish html
publishHTML target: [
reportTitles: 'code coverage',
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'build/coverage_build/out',
reportFiles: '*',
reportName: 'Code Coverage'
]
withCredentials([string(credentialsId: 'ECL_CODECOV_TOKEN', variable: 'CODECOV_TOKEN')]) {
sh 'curl -s https://codecov.io/bash | bash -s - -F ecl_tests'
}
sh 'ccache -s'
sh 'make distclean'
}
}
stage('test') {
agent {
docker {
image 'px4io/px4-dev-base-bionic:2019-10-24'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
sh 'make test'
sh 'ccache -s'
sh 'make distclean'
}
}
stage('doxygen') {
agent {
docker {
image 'px4io/px4-dev-base-bionic:2019-10-24'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
steps {
sh 'export'
sh 'ccache -z'
sh 'make distclean'
//sh 'make doxygen'
sh 'ccache -s'
publishHTML([
reportTitles: 'Doxygen',
allowMissing: true,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'build/doxygen/Documentation',
reportFiles: '*',
reportName: 'doxygen'
])
sh 'make distclean'
}
}
stage('PX4/Firmware build') {
agent {
docker {
image 'px4io/px4-dev-base-bionic:2019-10-24'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
environment {
GIT_COMMITTER_EMAIL = "bot@px4.io"
GIT_COMMITTER_NAME = "PX4BuildBot"
PX4_FIRMWARE_TEST_BRANCH = "ecl_${env.JOB_BASE_NAME}"
}
steps {
sh 'export'
withCredentials([usernamePassword(credentialsId: 'px4buildbot_github_personal_token', passwordVariable: 'GIT_PASS', usernameVariable: 'GIT_USER')]) {
sh('git clone --branch master --origin px4 https://${GIT_USER}:${GIT_PASS}@github.com/PX4/Firmware.git')
sh('cd Firmware; git checkout -B ${PX4_FIRMWARE_TEST_BRANCH}')
sh('if [ -n "${CHANGE_FORK+set}" ]; then cd Firmware; git config --file=.gitmodules submodule."src/lib/ecl".url https://github.com/${CHANGE_FORK}/ecl.git; fi')
sh('cd Firmware; git submodule sync')
sh('cd Firmware; git submodule update --init --recursive --force src/lib/ecl')
sh 'cd Firmware/src/lib/ecl; git fetch --all --tags; git checkout -f ${GIT_COMMIT}'
sh('cd Firmware; git commit -a -m "PX4/ecl test `date` ${GIT_BRANCH} ${GIT_COMMIT}"')
sh('cd Firmware; git push --force px4 ${PX4_FIRMWARE_TEST_BRANCH}')
}
}
}
} // parallel
} // stage Test
} // stages
environment {
CCACHE_DIR = '/tmp/ccache'
CI = true
}
options {
buildDiscarder(logRotator(numToKeepStr: '10', artifactDaysToKeepStr: '30'))
timeout(time: 60, unit: 'MINUTES')
}
}
Loading…
Cancel
Save