Merge pull request #184 from epics-modules/github-actions

Configured to build with github-actions
This commit is contained in:
Kevin Peterson
2022-04-28 16:05:23 -05:00
committed by GitHub
8 changed files with 429 additions and 6 deletions
+1 -1
Submodule .ci updated: 12d769835e...5764601630
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env python
import os
import sys
import subprocess
from util import *
def get_submodule_releases():
#
releases = []
for root, dirs, files in os.walk('modules'):
for submodule in dirs:
if 'motor' in submodule:
release_path = "modules/{}/configure/RELEASE".format(submodule)
if os.path.exists(release_path):
releases.append(release_path)
return releases[:]
# Comment out SUPPORT from motor's RELEASE file
motor_release = "configure/RELEASE"
update_release_file(motor_release, "SUPPORT", '#')
print("{}Updated {}{}".format(ANSI_BLUE, motor_release, ANSI_RESET))
grep_release_file(motor_release, "#SUPPORT")
# Comment out SUPPORT from the driver module RELEASE files
releases = get_submodule_releases()
for release in releases:
updated = update_release_file(release, "SUPPORT", '#')
if updated:
print("{}Updated {}{}".format(ANSI_BLUE, release, ANSI_RESET))
grep_release_file(release, "#SUPPORT")
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env python
import os
import pprint
pprint.pprint(dict(os.environ), width = 1)
#!print("{}", breakmehere)
+68
View File
@@ -0,0 +1,68 @@
#!/usr/bin/env python
from __future__ import print_function
import logging
import fileinput
import os
# Setup ANSI Colors
ANSI_RED = "\033[31;1m"
ANSI_GREEN = "\033[32;1m"
ANSI_YELLOW = "\033[33;1m"
ANSI_BLUE = "\033[34;1m"
ANSI_MAGENTA = "\033[35;1m"
ANSI_CYAN = "\033[36;1m"
ANSI_RESET = "\033[0m"
ANSI_CLEAR = "\033[0K"
logger = logging.getLogger(__name__)
def create_file(filename):
dirname = os.path.dirname(filename)
print(dirname)
if not os.path.exists(dirname):
os.makedirs(dirname, 0o0755)
if not os.path.exists(filename):
fh = open(filename, 'w')
fh.close()
else:
logger.debug("{} already exists".format(filename))
# Update a definition in a release file that already exists
# Append a defintion to a release file that already exists
# Commented out a definition in a release file (location='#')
def update_release_file(filename, var, location):
updated_line = '{0}={1}'.format(var, location.replace('\\', '/'))
found = False
logger.debug("Opening '%s' for adding '%s'", filename, updated_line)
for line in fileinput.input(filename, inplace=1):
output_line = line.strip()
if '{0}='.format(var) in line:
logger.debug("Found '%s=' line, replacing", var)
found = True
if location != '#':
output_line = updated_line
else:
if output_line[0] != '#':
output_line = "#{}".format(output_line)
logger.debug("Writing line to '%s': '%s'", filename, output_line)
print(output_line)
fileinput.close()
if not found and location != '#':
fh = open(release_local, "a")
logger.debug("Adding new definition: '%s'", updated_line)
print(updated_line, file=fh)
fh.close()
return found
def grep_release_file(filename, var):
fh = open(filename, 'r')
for line in fh:
if '{0}='.format(var) in line:
print(line)
fh.close()
+4 -4
View File
@@ -1,7 +1,7 @@
MODULES="sncseq ipac asyn autosave busy"
SNCSEQ=R2-2-8
SNCSEQ=R2-2-9
IPAC=master
ASYN=R4-38
AUTOSAVE=R5-9
BUSY=R1-7-1
ASYN=R4-42
AUTOSAVE=R5-10-2
BUSY=R1-7-3
+210
View File
@@ -0,0 +1,210 @@
# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
# This is YAML - indentation levels are crucial
# Set the 'name:' properties to values that work for you (MYMODULE)
name: "GHA full build"
# Only run manually
on:
workflow_dispatch
env:
SETUP_PATH: .ci-local:.ci
# For the sequencer on Linux/Windows/MacOS
APT: re2c
CHOCO: re2c
BREW: re2c
jobs:
build-base:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
WINE: ${{ matrix.wine }}
RTEMS: ${{ matrix.rtems }}
RTEMS_TARGET: ${{ matrix.rtems_target }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
SET: ${{ matrix.set }}
strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- os: ubuntu-20.04
cmp: gcc
configuration: default
wine: "64"
base: "7.0"
set: modules
name: "Ub-20 gcc-9 + MinGW"
- os: ubuntu-20.04
cmp: gcc
configuration: static
wine: "64"
base: "7.0"
set: modules
name: "Ub-20 gcc-9 + MinGW, static"
- os: ubuntu-20.04
cmp: gcc
configuration: static
extra: "CMD_CXXFLAGS=-std=c++11"
base: "7.0"
set: modules
name: "Ub-20 gcc-9 C++11, static"
- os: ubuntu-20.04
cmp: clang
configuration: default
extra: "CMD_CXXFLAGS=-std=c++11"
base: "7.0"
set: modules
name: "Ub-20 clang-10 C++11"
### fails building autosave
#!- os: ubuntu-20.04
#! cmp: gcc
#! configuration: default
#! rtems: "4.10"
#! base: "7.0"
#! set: modules
#! name: "Ub-20 gcc-9 + RT-4.10"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.9"
base: "7.0"
set: modules
name: "Ub-20 gcc-9 + RT-4.9"
### fails building asyn
#!- os: ubuntu-20.04
#! cmp: gcc
#! configuration: default
#! rtems: "5"
#! rtems_target: RTEMS-pc686-qemu
#! base: "7.0"
#! set: modules
#! name: "Ub-20 gcc-9 + RT-5.1 pc686"
### fails building autosave
#!- os: ubuntu-20.04
#! cmp: gcc
#! configuration: default
#! rtems: "5"
#! rtems_target: RTEMS-beatnik
#! test: NO
#! base: "7.0"
#! set: modules
#! name: "Ub-20 gcc-9 + RT-5.1 beatnik"
- os: ubuntu-18.04
cmp: gcc
configuration: default
base: "7.0"
set: modules
name: "Ub-18 gcc-7"
### g++-8 not found
#!- os: ubuntu-18.04
#! cmp: gcc-8
#! utoolchain: true
#! configuration: default
#! base: "7.0"
#! set: modules
#! name: "Ub-18 gcc-8"
#!- os: ubuntu-20.04
#! cmp: gcc-8
#! utoolchain: true
#! configuration: default
#! base: "7.0"
#! set: modules
#! name: "Ub-20 gcc-8"
- os: ubuntu-20.04
cmp: clang
configuration: default
base: "7.0"
set: modules
name: "Ub-20 clang-10"
- os: macos-latest
cmp: clang
configuration: default
base: "7.0"
set: modules
name: "MacOS clang-12"
- os: windows-2019
cmp: gcc
configuration: default
base: "7.0"
set: modules
name: "Win2019 MinGW"
- os: windows-2019
cmp: gcc
configuration: static
base: "7.0"
set: modules
name: "Win2019 MinGW, static"
- os: windows-2019
cmp: vs2019
configuration: default
base: "7.0"
set: modules
name: "Win2019 MSC-19"
- os: windows-2019
cmp: vs2019
configuration: static
base: "7.0"
set: modules
name: "Win2019 MSC-19, static"
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
- name: "apt-get install"
run: |
sudo apt-get update
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
if: runner.os == 'Linux'
- name: "apt-get install ${{ matrix.cmp }}"
run: |
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install ${{ matrix.cmp }}
if: matrix.utoolchain
- name: Sanity Check
run: python .ci-local/github-actions/sanity-check.py
- name: Prepare and compile dependencies
run: python .ci/cue.py prepare
- name: Patch main module
run: python .ci-local/github-actions/post-prepare.py
- name: Build main module
run: python .ci/cue.py build
- name: Run main module tests
run: python .ci/cue.py test
- name: Upload tapfiles Artifact
uses: actions/upload-artifact@v2
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
- name: Collect and show test results
run: python .ci/cue.py test-results
+103
View File
@@ -0,0 +1,103 @@
# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
# This is YAML - indentation levels are crucial
# Set the 'name:' properties to values that work for you (MYMODULE)
name: "GHA build"
# Trigger on pushes to the master branch and PRs
on:
push:
paths-ignore:
- 'documentation/*'
- '**/*.html'
- '**/*.md'
- '.github/workflows/ci-scripts-build-full.yml'
branches:
- master
pull_request:
env:
SETUP_PATH: .ci-local:.ci
# For the sequencer on Linux/Windows/MacOS
APT: re2c
CHOCO: re2c
BREW: re2c
jobs:
build-base:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
WINE: ${{ matrix.wine }}
RTEMS: ${{ matrix.rtems }}
RTEMS_TARGET: ${{ matrix.rtems_target }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
SET: ${{ matrix.set }}
strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- os: ubuntu-20.04
cmp: gcc
configuration: default
base: "7.0"
set: modules
name: "7.0 Ub-20 gcc-9"
- os: macos-latest
cmp: clang
configuration: default
base: "3.15"
set: modules
name: "3.15 MacOS clang-12"
- os: windows-2019
cmp: vs2019
configuration: static
base: "3.15"
set: modules
name: "3.15 Win VS2019, static"
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
- name: "apt-get install"
run: |
sudo apt-get update
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
if: runner.os == 'Linux'
- name: "apt-get install ${{ matrix.cmp }}"
run: |
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install ${{ matrix.cmp }}
if: matrix.utoolchain
- name: Sanity Check
run: python .ci-local/github-actions/sanity-check.py
- name: Prepare and compile dependencies
run: python .ci/cue.py prepare
- name: Patch main module
run: python .ci-local/github-actions/post-prepare.py
- name: Build main module
run: python .ci/cue.py build
- name: Run main module tests
run: python .ci/cue.py test
- name: Upload tapfiles Artifact
uses: actions/upload-artifact@v2
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
- name: Collect and show test results
run: python .ci/cue.py test-results
+2 -1
View File
@@ -1,5 +1,6 @@
# motor
[![Build Status](https://travis-ci.org/epics-modules/motor.png)](https://travis-ci.org/epics-modules/motor)
[![Build Status](https://github.com/epics-modules/motor/actions/workflows/ci-scripts-build.yml/badge.svg)](https://github.com/epics-modules/motor/actions/workflows/ci-scripts-build.yml)
<!--[![Build Status](https://travis-ci.org/epics-modules/motor.png)](https://travis-ci.org/epics-modules/motor)-->
This module contains motor support for the Experimental Physics and Industrial Control System (EPICS).