Skip to content

Commit 5b9f9fb

Browse files
authored
Merge pull request #9 from intersystems/github-actions
Add CI workflow
2 parents c737db6 + e9d090f commit 5b9f9fb

File tree

2 files changed

+84
-48
lines changed

2 files changed

+84
-48
lines changed

.github/workflows/main.yml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Continuous integration workflow
2+
name: CI
3+
4+
# Controls when the action will run. Triggers the workflow on push or pull request
5+
# events in all branches
6+
on: [push, pull_request]
7+
8+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
9+
jobs:
10+
# This workflow contains a single job called "build"
11+
build:
12+
# The type of runner that the job will run on
13+
runs-on: ubuntu-latest
14+
15+
env:
16+
# ** FOR GENERAL USE, LIKELY NEED TO CHANGE: **
17+
package: TestCoverage
18+
container_image: intersystemsdc/iris-community:2019.4.0.383.0-zpm
19+
20+
# ** FOR GENERAL USE, MAY NEED TO CHANGE: **
21+
build_flags: -dev -verbose # Load in -dev mode to get unit test code preloaded
22+
test_package: UnitTest
23+
24+
# ** FOR GENERAL USE, SHOULD NOT NEED TO CHANGE: **
25+
instance: iris
26+
# Note: test_reports value is duplicated in test_flags environment variable
27+
test_reports: test-reports
28+
test_flags: >-
29+
-verbose -DUnitTest.ManagerClass=TestCoverage.Manager -DUnitTest.JUnitOutput=/test-reports/junit.xml
30+
-DUnitTest.FailuresAreFatal=1 -DUnitTest.Manager=TestCoverage.Manager
31+
-DUnitTest.UserParam.CoverageReportClass=TestCoverage.Report.Cobertura.ReportGenerator
32+
-DUnitTest.UserParam.CoverageReportFile=/source/coverage.xml
33+
34+
# Steps represent a sequence of tasks that will be executed as part of the job
35+
steps:
36+
37+
# Checks out this repository under $GITHUB_WORKSPACE, so your job can access it
38+
- uses: actions/checkout@v2
39+
40+
- name: Run Container
41+
run: |
42+
# Create test_reports directory to share test results before running container
43+
mkdir $test_reports
44+
chmod 777 $test_reports
45+
# Run InterSystems IRIS instance
46+
docker pull $container_image
47+
docker run -d -h $instance --name $instance -v $GITHUB_WORKSPACE:/source -v $GITHUB_WORKSPACE/$test_reports:/$test_reports --init $container_image
48+
echo halt > wait
49+
# Wait for instance to be ready
50+
until docker exec --interactive $instance iris session $instance < wait; do sleep 1; done
51+
52+
- name: Install TestCoverage
53+
run: |
54+
echo "zpm \"install testcoverage\":1:1" > install-testcoverage
55+
docker exec --interactive $instance iris session $instance -B < install-testcoverage
56+
# Workaround for permissions issues in TestCoverage (creating directory for source export)
57+
chmod 777 $GITHUB_WORKSPACE
58+
59+
# Runs a set of commands using the runners shell
60+
- name: Build and Test
61+
run: |
62+
# Run build
63+
echo "zpm \"load /source $build_flags\":1:1" > build
64+
# Test package is compiled first as a workaround for some dependency issues.
65+
echo "do \$System.OBJ.CompilePackage(\"$test_package\",\"ckd\") " > test
66+
# Run tests
67+
echo "zpm \"$package test -only $test_flags\":1:1" >> test
68+
docker exec --interactive $instance iris session $instance -B < build && docker exec --interactive $instance iris session $instance -B < test && bash <(curl -s https://codecov.io/bash)
69+
# Generate and Upload HTML xUnit report
70+
- name: XUnit Viewer
71+
id: xunit-viewer
72+
uses: AutoModality/action-xunit-viewer@v1
73+
if: always()
74+
with:
75+
# With -DUnitTest.FailuresAreFatal=1 a failed unit test will fail the build before this point.
76+
# This action would otherwise misinterpret our xUnit style output and fail the build even if
77+
# all tests passed.
78+
fail: false
79+
- name: Attach the report
80+
uses: actions/upload-artifact@v1
81+
if: always()
82+
with:
83+
name: ${{ steps.xunit-viewer.outputs.report-name }}
84+
path: ${{ steps.xunit-viewer.outputs.report-dir }}

.travis.yml

Lines changed: 0 additions & 48 deletions
This file was deleted.

0 commit comments

Comments
 (0)