Skip to content

Commit 087e718

Browse files
add PR testing CI into master branch
1 parent 2c0d22b commit 087e718

4 files changed

Lines changed: 125 additions & 0 deletions

File tree

.CI/ReSim/prepare_pr.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
event_number=$1
2+
# checkout the pull request
3+
docker run --name compile_msl --rm --volume shared_data:/shared_data wsm_image /shared_data/run_scripts/git_pr_pull.sh $event_number
4+
# compile msl binaries
5+
docker run --name compile_msl --rm --volume shared_data:/shared_data wsm_image /shared_data/run_scripts/compile_msl.sh /shared_data/repos/pr_testing/ModelicaStandardLibrary
6+
# delete old PRs with same number (in case of a new commit on a PR)
7+
docker run --name compile_msl --rm --volume shared_data:/shared_data dymola_image /shared_data/run_scripts/delete_old_PRs.sh $event_number

.CI/ReSim/run_pr.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
event_number=$1
2+
master_hash=$2
3+
pkg_name=$3
4+
5+
# Run Modelica in all tools
6+
tools=$4
7+
8+
for tool in $tools
9+
do
10+
uppertool=$tool | tr 'a-z' 'A-Z'
11+
docker run --rm --name $tool\_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data $tool\_image python /shared_data/run_scripts/$uppertool\_PR_compare.py $master_hash $event_number $pkg_name
12+
done
13+
14+
#docker run --rm --name dymola_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data dymola_image python /shared_data/run_scripts/Dymola_PR_compare.py $master_hash $event_number $pkg_name
15+
#docker run --rm --name om_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data om_image python /shared_data/run_scripts/OM_PR_compare.py $master_hash $event_number $pkg_name
16+
#docker run --rm --name wsm_pr_compare_$event_number\_$pkg_name --volume shared_data:/shared_data wsm_image python /shared_data/run_scripts/WSM_PR_compare.py $master_hash $event_number $pkg_name
17+
18+
# create an overview over all tools
19+
docker run --name create_overview_$event_number\_$pkg_name --volume shared_data:/shared_data om_image python /shared_data/run_scripts/overview_report.py $event_number $pkg_name
20+
21+
# clear published directory (web server)
22+
if [ -d "/var/www/html/prs/$event_number/$pkg_name" ]; then
23+
rm -rf "/var/www/html/prs/$event_number/$pkg_name"
24+
fi
25+
if [ ! -d "/var/www/html/prs/$event_number" ]; then
26+
mkdir /var/www/html/prs/$event_number
27+
fi
28+
mkdir /var/www/html/prs/$event_number/$pkg_name
29+
30+
# copy data to webserver directory
31+
docker cp create_overview_$event_number\_$pkg_name:/shared_data/resim_output/PRs/PR_$event_number/$pkg_name/report /var/www/html/prs/$event_number/$pkg_name
32+
docker rm create_overview_$event_number\_$pkg_name
33+
exit $(head -n 1 /var/www/html/prs/$event_number/$pkg_name/status.txt)

.github/workflows/resimCI.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: CI ReSim
2+
3+
on:
4+
workflow_run:
5+
workflows: ["Trigger CI ReSim"]
6+
types:
7+
- completed
8+
9+
jobs:
10+
resim_checks:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v6
16+
with:
17+
ref: ${{ github.event.workflow_run.head_sha }}
18+
19+
- name: Get PR number
20+
uses: 8BitJonny/gh-get-current-pr@4.0.0
21+
id: PR
22+
with:
23+
sha: ${{ github.event.workflow_run.head_sha }}
24+
filterOutClosed: true
25+
filterOutDraft: true
26+
27+
- name: Run ReSim
28+
if: steps.PR.outputs.pr_found == 'true'
29+
run: |
30+
echo "LTX_PR_SERVER=${{ vars.LTX_PR_SERVER }}"
31+
echo "LTX_SCRIPT_LOCATION=${{ vars.LTX_SCRIPT_LOCATION }}"
32+
echo "LTX_TESTING_TOOLS=${{ vars.LTX_TESTING_TOOLS }}"
33+
34+
- name: Report status back to PR
35+
if: steps.PR.outputs.pr_found == 'true'
36+
uses: actions/github-script@v8
37+
with:
38+
script: |
39+
const run = context.payload.workflow_run;
40+
const sha = run.head_sha;
41+
const conclusion = run.conclusion;
42+
let state;
43+
switch (conclusion) {
44+
case "success":
45+
state = "success";
46+
break;
47+
case "failure":
48+
case "timed_out":
49+
case "action_required":
50+
state = "failure";
51+
break;
52+
case "cancelled":
53+
case "skipped":
54+
state = "error";
55+
break;
56+
default:
57+
state = "error";
58+
}
59+
const prNumber = process.env.PR_NUMBER || null;
60+
const ltxServer = process.env.LTX_PR_SERVER;
61+
const targetUrl = prNumber ? `${ltxServer}/${prNumber}/` : ltxServer;
62+
await github.rest.repos.createCommitStatus({
63+
owner: context.repo.owner,
64+
repo: context.repo.repo,
65+
sha: sha,
66+
state: state,
67+
context: "CI / resim_checks",
68+
description: `ReSim finished with ${conclusion}`,
69+
target_url: targetUrl
70+
});
71+
env:
72+
PR_NUMBER: ${{ steps.PR.outputs.number }}
73+
LTX_PR_SERVER: ${{ vars.LTX_PR_SERVER }}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: Trigger CI ReSim
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
trigger_resim_checks:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- name: Trigger ReSim from PR
12+
run: echo "🚀 Let's go"

0 commit comments

Comments
 (0)