-
Notifications
You must be signed in to change notification settings - Fork 29
150 lines (140 loc) · 5.09 KB
/
ci.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
name: MIL CI
# We do not trigger on the pull_request hook because it will have already been
# triggered by the push hook!
# yamllint disable-line rule:truthy
on:
[push, workflow_dispatch]
env:
# The version of caching we are using. This can be upgraded if we
# significantly change CI to the point where old caches become irrelevant.
CACHE_VERSION: 0
# Default Python version. Noetic defaults to 3.8.
DEFAULT_PYTHON: 3.8
# Location of the pre-commit cache. This is set by pre-commit, not us!
PRE_COMMIT_CACHE: ~/.cache/pre-commit
# Cancels this run if a new one referring to the same object and same workflow
# is requested
concurrency:
group: >
${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
avoid-duplicate-ci:
name: Check if CI has already be ran
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.check_skip.outputs.should_skip }}
steps:
- id: check_skip
uses: fkirc/skip-duplicate-actions@v5
super-ci:
name: Run tests and build docs
needs: avoid-duplicate-ci
if: needs.avoid-duplicate-ci.outputs.should_skip != 'true'
runs-on:
group: mala-lab-main
steps:
- name: Configure catkin workspace folder structure
run: |
mkdir -p $GITHUB_WORKSPACE/catkin_ws/src
sudo apt reinstall python3-pip
- name: Check out code from GitHub
uses: actions/checkout@v4
with:
submodules: recursive
path: catkin_ws/src/mil
- name: Setup ROS Noetic
uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: noetic
- name: Install pip dependencies
run: |
cd $GITHUB_WORKSPACE/catkin_ws/src/mil
pip3 install -r requirements.txt
# We want to run a full test suite in CI - this includes the BlueView
# tests!
- name: Install BlueView Sonar SDK
run: |
cd $GITHUB_WORKSPACE/catkin_ws/src/mil
./scripts/hw/install_bvtsdk --pass ${{ secrets.ZOBELISK_PASSWORD }}
ls mil_common/drivers/mil_blueview_driver
echo $PWD
- name: Install system dependencies
run: |
# Needed for /etc/update-manager/release-upgrades
sudo apt-get install -y ubuntu-release-upgrader-core
cd $GITHUB_WORKSPACE/catkin_ws/src/mil
rm -rf build devel
export HOME=$GITHUB_WORKSPACE # Temporary fix for setup scripts
./scripts/install.sh
# - name: Run catkin_make
# run: |
# cd $GITHUB_WORKSPACE/catkin_ws
# source /opt/ros/noetic/setup.bash
# catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 \
# -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \
# -j6
- name: Run catkin_make tests
run: |
export HOME=$GITHUB_WORKSPACE # Temporary fix for setup scripts
cd $GITHUB_WORKSPACE/catkin_ws
source /opt/ros/noetic/setup.bash
source devel/setup.bash
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \
"-j$(($(nproc)-2))" \
run_tests
- name: Get test results
run: >
source /opt/ros/noetic/setup.bash
catkin_test_results $GITHUB_WORKSPACE/catkin_ws/build/test_results
--verbose
- name: Build docs
run: |
export HOME=$GITHUB_WORKSPACE # Temporary fix for setup scripts
mkdir -p $HOME/.mil
source /opt/ros/noetic/setup.bash
source $GITHUB_WORKSPACE/catkin_ws/devel/setup.bash
cd $GITHUB_WORKSPACE/catkin_ws/src/mil
./scripts/build_docs -s -d
- name: Publish docs artifact
uses: actions/upload-artifact@v3
with:
name: docs-ci-html-${{ github.sha }}
path: ${{ github.workspace }}/.mil/docs/html
deploy-docs:
name: Deploy docs from master
runs-on:
group: mala-lab-main
needs: super-ci
# https://github.com/actions/runner/issues/491#issuecomment-850884422
if: |
always() &&
(needs.super-ci.result == 'skipped' || needs.super-ci.result == 'success') &&
github.ref == 'refs/heads/master'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Make folders
run: |
mkdir -p $GITHUB_WORKSPACE/build/docs
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: docs-ci-html-${{ github.sha }}
path: ${{ github.workspace }}/build/docs
# Publish the artifact to the GitHub Pages branch
- name: Push docs to mil.ufl.edu
run: |
# Install sshpass
sudo apt-get install sshpass
# Upload contents of local folder to remote folder
sshpass -p ${{ secrets.MIL_UFL_SFTP_PASS }} \
sftp -o StrictHostKeyChecking=no \
-P ${{ secrets.MIL_UFL_SFTP_PORT }} mil@mil.ufl.edu << EOF
cd htdocs/docs
lcd ${{ github.workspace }}/build/docs
put -r .
exit
EOF