-
Notifications
You must be signed in to change notification settings - Fork 2
133 lines (116 loc) · 4.79 KB
/
Copy pathbuild-nightly.yml
File metadata and controls
133 lines (116 loc) · 4.79 KB
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
name: Build Nightly 12.3
run-name: Version 12.3.${{ github.run_number }}
on:
workflow_dispatch:
schedule:
- cron: '0 2 * * *'
env:
MAJOR: 12
MINOR: 3
RUN: ${{ github.run_number }}
TARGET_FRAMEWORK: net8
permissions:
contents: read
packages: read
jobs:
get-latest-commit-timespan:
runs-on: ubuntu-latest
outputs:
LATEST_COMMIT_TIMESPAN: ${{ steps.get-latest-commit-timespan.outputs.LATEST_COMMIT_TIMESPAN}}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get the previous commit timespan
id: get-latest-commit-timespan
shell: bash
run: |
commit=$(git log origin/develop -1 --format="%at")
echo $commit
now=$(date +%s)
echo $now
timespan=$[now - commit]
echo "Timespan: ${timespan}"
echo "LATEST_COMMIT_TIMESPAN=${timespan}" >> $GITHUB_ENV
echo "LATEST_COMMIT_TIMESPAN=${timespan}" >> $GITHUB_OUTPUT
build-nightly:
needs: get-latest-commit-timespan
# the build-nightly job should be run in 2 cases:
# - either the workflow was triggered manually (on 'workflow_dispatch')
# - or the workflow was triggered on schedule and last repository commit is not older than 24h (=86400 sec)
if: needs.get-latest-commit-timespan.outputs.LATEST_COMMIT_TIMESPAN < 86400 || github.event_name == 'workflow_dispatch'
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Restore dependencies
run: |
nuget sources add -username Open-Systems-Pharmacology -password ${{ secrets.GITHUB_TOKEN }} -name OSP-GitHub-Packages -source "https://nuget.pkg.github.com/Open-Systems-Pharmacology/index.json"
nuget restore
- name: define env variables
run: |
echo "APP_VERSION=${{ env.MAJOR }}.${{ env.MINOR }}.${{ env.RUN }}" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Build
run: |
dotnet build InstallationValidator.sln /p:Version=${{env.APP_VERSION}}
- name: Test
run: dotnet test .\tests\**\bin\Debug\net472\InstallationValidator*Tests.dll --filter “TestCategory!=Reporting” --no-build -v normal --logger:"html;LogFileName=../testLog_Windows.html"
- name: Sign InstallationValidator.exe with CodeSignTool
uses: Open-Systems-Pharmacology/Workflows/.github/actions/codesigner-SSL@main
env:
ES_USERNAME: ${{ secrets.ES_USERNAME }}
ES_PASSWORD: ${{ secrets.ES_PASSWORD }}
ES_CREDENTIAL_ID: ${{ secrets.ES_CREDENTIAL_ID }}
ES_TOTP_SECRET: ${{ secrets.ES_TOTP_SECRET }}
with:
file_path: ./src/InstallationValidator/bin/Debug/net472/InstallationValidator.exe
- name: Sign SimulationOutputComparer.exe with CodeSignTool
uses: Open-Systems-Pharmacology/Workflows/.github/actions/codesigner-SSL@main
env:
ES_USERNAME: ${{ secrets.ES_USERNAME }}
ES_PASSWORD: ${{ secrets.ES_PASSWORD }}
ES_CREDENTIAL_ID: ${{ secrets.ES_CREDENTIAL_ID }}
ES_TOTP_SECRET: ${{ secrets.ES_TOTP_SECRET }}
with:
file_path: ./src/SimulationOutputComparer/bin/Debug/net472/SimulationOutputComparer.exe
- name: Create Setup
run: |
rake "create_setup[${{env.APP_VERSION}}, Debug]"
- name: Sign InstallationValidator setup with CodeSignTool
uses: Open-Systems-Pharmacology/Workflows/.github/actions/codesigner-SSL@main
env:
ES_USERNAME: ${{ secrets.ES_USERNAME }}
ES_PASSWORD: ${{ secrets.ES_PASSWORD }}
ES_CREDENTIAL_ID: ${{ secrets.ES_CREDENTIAL_ID }}
ES_TOTP_SECRET: ${{ secrets.ES_TOTP_SECRET }}
with:
file_path: ./setup/deploy/InstallationValidator.${{ env.APP_VERSION }}.msi
- name: Push test log as artifact
uses: actions/upload-artifact@v4
with:
name: testLog_Windows
path: ./testLog*.html
- name: Push nightly installer as artifact
uses: actions/upload-artifact@v4
with:
name: Installation Validator Installer ${{env.APP_VERSION}}
path: setup\deploy\*.msi
cleanup-job:
needs: build-nightly
# run only if the build-nightly job was skipped
if: always() && needs.build-nightly.result == 'skipped'
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: Cancel workflow run
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/cancel"