Build and test (0.150-lcm, scheduled) #103
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and test (0.150-lcm, scheduled) | |
on: | |
schedule: | |
# run every Monday, this refreshes the cache | |
- cron: '13 2 * * 1' | |
jobs: | |
python-test: | |
name: Python tests | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
ref: '0.150-lcm' | |
- name: Run python tests | |
run: bash .github/python-nosetests.sh | |
ocaml-test: | |
name: Ocaml tests | |
runs-on: ubuntu-20.04 | |
env: | |
package: "xapi-xenopsd xapi-xenopsd-simulator xapi-xenopsd-cli xapi-xenopsd-xc" | |
steps: | |
- name: Update apt cache | |
run: sudo apt-get update | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
with: | |
ref: '0.150-lcm' | |
- name: Pull configuration from xs-opam | |
run: | | |
curl --fail --silent https://raw.githubusercontent.com/xapi-project/xs-opam/release/yangtze/lcm/tools/xs-opam-ci.env | cut -f2 -d " " > .env | |
- name: Load environment file | |
id: dotenv | |
uses: falti/dotenv-action@v0.2.6 | |
- name: Retrieve date for cache key (year-week) | |
id: cache-key | |
run: echo "::set-output name=date::$(/bin/date -u "+%Y%W")" | |
shell: bash | |
- name: Restore opam cache | |
id: opam-cache | |
uses: actions/cache@v2 | |
with: | |
path: "~/.opam" | |
# invalidate cache daily, gets built daily using a scheduled job | |
key: ${{ steps.cache-key.outputs.date }}-0.150 | |
- name: Use ocaml | |
uses: avsm/setup-ocaml@v1 | |
with: | |
ocaml-version: ${{ steps.dotenv.outputs.ocaml_version_full }} | |
opam-repository: ${{ steps.dotenv.outputs.repository }} | |
- name: Update opam metadata | |
run: | | |
opam update | |
opam pin add . --no-action | |
- name: Install external dependencies | |
run: opam depext -u ${{ env.package }} | |
- name: Install dependencies | |
run: | | |
opam upgrade | |
opam install ${{ env.package }} --deps-only --with-test -v | |
- name: Build | |
run: | | |
opam exec -- ./configure | |
opam exec -- make | |
- name: Run tests | |
run: opam exec -- make test | |
- name: Avoid built packages to appear in the cache | |
# only packages in this repository follow a branch, the rest point to a tag | |
run: opam uninstall ${{ env.package }} |