Skip to content

Commit c8682f1

Browse files
authored
add release artifacts and daiy builds (#35)
* [+] add artifacts uploading for releases to GitHub Action, closes #34 * rename PQConn to connMain * add release workflow * add separate daily build workflow
1 parent 21c861e commit c8682f1

6 files changed

Lines changed: 175 additions & 35 deletions

File tree

.github/workflows/build.yml

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,23 @@ on:
77
jobs:
88
build:
99
runs-on: ${{ matrix.operating-system }}
10+
1011
strategy:
1112
matrix:
12-
operating-system: [ubuntu-latest,windows-latest,macos-latest]
13-
# lazarus-versions: [dist, stable, 2.0.10, 2.0.6, 1.6.4, 1.6.2, 1.4.4, 1.2]
14-
lazarus-versions: [stable]
13+
kind: ['linux', 'windows', 'macOS']
14+
include:
15+
- kind: linux
16+
operating-system: ubuntu-latest
17+
target: linux-x64
18+
- kind: windows
19+
operating-system: windows-latest
20+
target: win-x64
21+
- kind: macOS
22+
operating-system: windows-latest
23+
target: osx-x64
24+
25+
lazarus-versions: [stable] # [dist, stable, 2.0.10, 2.0.6, 1.6.4, 1.6.2, 1.4.4, 1.2]
26+
1527
steps:
1628
- uses: actions/checkout@v2
1729
- name: Install Lazarus
@@ -20,24 +32,21 @@ jobs:
2032
lazarus-version: ${{ matrix.lazarus-versions }}
2133
# include-packages: "Synapse 40.1"
2234

23-
- name: Build the Main Application
35+
- name: Build the application
2436
if: ${{ matrix.operating-system != 'macos-latest' }}
25-
run: lazbuild -B "pg_timetable_gui.lpi"
37+
run: |
38+
lazbuild -B "pg_timetable_gui.lpi"
39+
ls
2640
27-
- name: Build the Main Application (macOS)
41+
- name: Build the application (macOS)
2842
if: ${{ matrix.operating-system == 'macos-latest' }}
2943
run: lazbuild -B --ws=cocoa "pg_timetable_gui.lpi"
3044

31-
- uses: actions/upload-artifact@v2
45+
- name: Upload build artifacts
46+
uses: actions/upload-artifact@v2
3247
with:
3348
name: pg_timetable_gui for ${{ matrix.operating-system }}
3449
retention-days: 3
3550
path: |
3651
pg_timetable_gui.exe
37-
pg_timetable_gui
38-
39-
# - name: Build the Unit Tests Application
40-
# run: lazbuild -B "tests/testconsoleapplication.lpi"
41-
42-
# - name: Run the Unit Tests Application
43-
# run: bin/testconsoleapplication "--all" "--format=plain"
52+
pg_timetable_gui

.github/workflows/daily-build.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: daily-build
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
9+
jobs:
10+
daily_build:
11+
runs-on: ${{ matrix.operating-system }}
12+
13+
strategy:
14+
matrix:
15+
kind: ['linux', 'windows', 'macOS']
16+
include:
17+
- kind: linux
18+
operating-system: ubuntu-latest
19+
target: linux-x64
20+
- kind: windows
21+
operating-system: windows-latest
22+
target: win-x64
23+
- kind: macOS
24+
operating-system: windows-latest
25+
target: osx-x64
26+
27+
lazarus-versions: [stable] # [dist, stable, 2.0.10, 2.0.6, 1.6.4, 1.6.2, 1.4.4, 1.2]
28+
29+
steps:
30+
- uses: actions/checkout@v2
31+
- name: Install Lazarus
32+
uses: gcarreno/setup-lazarus@v3.0.2
33+
with:
34+
lazarus-version: ${{ matrix.lazarus-versions }}
35+
# include-packages: "Synapse 40.1"
36+
37+
- name: Build the application
38+
if: ${{ matrix.operating-system != 'macos-latest' }}
39+
run: |
40+
lazbuild -B "pg_timetable_gui.lpi"
41+
ls
42+
43+
- name: Build the application (macOS)
44+
if: ${{ matrix.operating-system == 'macos-latest' }}
45+
run: lazbuild -B --ws=cocoa "pg_timetable_gui.lpi"
46+
47+
- name: Pack
48+
shell: bash
49+
run: |
50+
release_name="pg_timetable_gui-${{ matrix.target }}"
51+
ls -a
52+
if [ "${{ matrix.target }}" == "win-x64" ]; then
53+
# Pack to zip for Windows
54+
7z a -tzip "${release_name}.zip" "pg_timetable_gui.exe"
55+
else
56+
tar czvf "${release_name}.tar.gz" "pg_timetable_gui"
57+
fi
58+
59+
- name: Publish the daily build
60+
uses: softprops/action-gh-release@v1
61+
with:
62+
tag_name: daily_builds
63+
files: |
64+
*.zip
65+
*.tar.gz
66+
LICENSE
67+
prerelease: true

.github/workflows/release.yml

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
name: release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*.*.*"
7+
8+
jobs:
9+
release:
10+
runs-on: ${{ matrix.operating-system }}
11+
12+
strategy:
13+
matrix:
14+
kind: ['linux', 'windows', 'macOS']
15+
include:
16+
- kind: linux
17+
operating-system: ubuntu-latest
18+
target: linux-x64
19+
- kind: windows
20+
operating-system: windows-latest
21+
target: win-x64
22+
- kind: macOS
23+
operating-system: windows-latest
24+
target: osx-x64
25+
26+
lazarus-versions: [stable] # [dist, stable, 2.0.10, 2.0.6, 1.6.4, 1.6.2, 1.4.4, 1.2]
27+
28+
steps:
29+
- uses: actions/checkout@v2
30+
- name: Install Lazarus
31+
uses: gcarreno/setup-lazarus@v3.0.2
32+
with:
33+
lazarus-version: ${{ matrix.lazarus-versions }}
34+
# include-packages: "Synapse 40.1"
35+
36+
- name: Build the application
37+
if: ${{ matrix.operating-system != 'macos-latest' }}
38+
run: |
39+
lazbuild -B "pg_timetable_gui.lpi"
40+
ls
41+
42+
- name: Build the application (macOS)
43+
if: ${{ matrix.operating-system == 'macos-latest' }}
44+
run: lazbuild -B --ws=cocoa "pg_timetable_gui.lpi"
45+
46+
- name: Pack
47+
shell: bash
48+
run: |
49+
release_name="pg_timetable_gui-${{ matrix.target }}"
50+
ls -a
51+
if [ "${{ matrix.target }}" == "win-x64" ]; then
52+
# Pack to zip for Windows
53+
7z a -tzip "${release_name}.zip" "pg_timetable_gui.exe"
54+
else
55+
tar czvf "${release_name}.tar.gz" "pg_timetable_gui"
56+
fi
57+
58+
- name: Publish Release Artifacts
59+
uses: softprops/action-gh-release@v1
60+
with:
61+
files: |
62+
*.zip
63+
*.tar.gz
64+
LICENSE

forms/fmmain.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ procedure TfmMain.acTaskToolbarUpdate(Sender: TObject);
353353

354354
procedure TfmMain.acConnectClick(Sender: TObject);
355355
begin
356-
if not dmPgEngine.PQConn.Connected then
356+
if not dmPgEngine.connMain.Connected then
357357
try
358358
dmPgEngine.Connect;
359359
except

udatamodule.lfm

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
object dmPgEngine: TdmPgEngine
22
OldCreateOrder = False
33
Height = 524
4-
HorizontalOffset = 2019
5-
VerticalOffset = 712
4+
HorizontalOffset = 1284
5+
VerticalOffset = 619
66
Width = 668
77
PPI = 144
88
object dsChains: TDataSource
99
DataSet = qryChains
1010
Left = 108
1111
Top = 48
1212
end
13-
object PQConn: TPQConnection
13+
object connMain: TPQConnection
1414
Connected = False
1515
LoginPrompt = True
16-
OnLogin = PQConnLogin
16+
OnLogin = connMainLogin
1717
DatabaseName = 'timetable'
1818
KeepConnection = False
1919
Password = 'somestrong'
2020
Transaction = transChains
2121
UserName = 'scheduler'
22-
OnLog = PQConnLog
22+
OnLog = connMainLog
2323
LogEvents = [detPrepare, detExecute, detCommit, detParamValue, detActualSQL]
2424
Left = 105
2525
Top = 312
@@ -34,7 +34,7 @@ object dmPgEngine: TdmPgEngine
3434
AfterInsert = qryChainsAfterInsert
3535
AfterPost = qryAfterPost
3636
BeforeDelete = qryChainsBeforeDelete
37-
Database = PQConn
37+
Database = connMain
3838
Transaction = transChains
3939
SQL.Strings = (
4040
'SELECT'
@@ -104,7 +104,7 @@ object dmPgEngine: TdmPgEngine
104104
end
105105
object transChains: TSQLTransaction
106106
Active = False
107-
Database = PQConn
107+
Database = connMain
108108
Options = [stoUseImplicit]
109109
Left = 192
110110
Top = 312
@@ -119,7 +119,7 @@ object dmPgEngine: TdmPgEngine
119119
AfterPost = qryAfterPost
120120
AfterRefresh = qryTasksAfterOpen
121121
BeforePost = qryTasksBeforePost
122-
Database = PQConn
122+
Database = connMain
123123
Transaction = transChains
124124
SQL.Strings = (
125125
'WITH RECURSIVE x ('

udatamodule.pas

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ interface
1414
TdmPgEngine = class(TDataModule)
1515
dsTasks: TDataSource;
1616
dsChains: TDataSource;
17-
PQConn: TPQConnection;
17+
connMain: TPQConnection;
1818
qryChains: TSQLQuery;
1919
qryTasks: TSQLQuery;
2020
transChains: TSQLTransaction;
21-
procedure PQConnLog(Sender: TSQLConnection; EventType: TDBEventType;
21+
procedure connMainLog(Sender: TSQLConnection; EventType: TDBEventType;
2222
const Msg: String);
23-
procedure PQConnLogin(Sender: TObject; Username, Password: string);
23+
procedure connMainLogin(Sender: TObject; Username, Password: string);
2424
procedure qryChainsAfterClose(DataSet: TDataSet);
2525
procedure qryChainsAfterDelete(DataSet: TDataSet);
2626
procedure qryChainsAfterInsert(DataSet: TDataSet);
@@ -53,7 +53,7 @@ implementation
5353

5454
{ TdmPgEngine }
5555

56-
procedure TdmPgEngine.PQConnLog(Sender: TSQLConnection;
56+
procedure TdmPgEngine.connMainLog(Sender: TSQLConnection;
5757
EventType: TDBEventType; const Msg: String);
5858
const et: array[TDBEventType] of string = ('detCustom', 'detPrepare', 'detExecute',
5959
'detFetch', 'detCommit', 'detRollBack', 'detParamValue', 'detActualSQL');
@@ -64,7 +64,7 @@ procedure TdmPgEngine.PQConnLog(Sender: TSQLConnection;
6464
end;
6565
end;
6666

67-
procedure TdmPgEngine.PQConnLogin(Sender: TObject; Username, Password: string);
67+
procedure TdmPgEngine.connMainLogin(Sender: TObject; Username, Password: string);
6868
begin
6969
if not fmConnect.EditDatabase(Sender as TPQConnection) then Abort();
7070
end;
@@ -156,7 +156,7 @@ procedure TdmPgEngine.Connect;
156156

157157
procedure TdmPgEngine.Disconnect;
158158
begin
159-
PQConn.Close(True);
159+
connMain.Close(True);
160160
end;
161161

162162
function TdmPgEngine.IsCronValueValid(const S: string): boolean;
@@ -166,8 +166,8 @@ function TdmPgEngine.IsCronValueValid(const S: string): boolean;
166166
Result := True;
167167
Q := TSQLQuery.Create(nil);
168168
try
169-
Q.DataBase := PQConn;
170-
Q.Transaction := PQConn.Transaction;
169+
Q.DataBase := connMain;
170+
Q.Transaction := connMain.Transaction;
171171
Q.SQL.Text := 'SELECT CAST(:cron AS timetable.cron)';
172172
Q.ParamByName('cron').AsString := S;
173173
try
@@ -193,8 +193,8 @@ function TdmPgEngine.SelectSQL(const sql: string): string;
193193
Result := '';
194194
Q := TSQLQuery.Create(nil);
195195
try
196-
Q.DataBase := PQConn;
197-
Q.Transaction := PQConn.Transaction;
196+
Q.DataBase := connMain;
197+
Q.Transaction := connMain.Transaction;
198198
Q.SQL.Text := sql;
199199
try
200200
Q.Open;
@@ -214,12 +214,12 @@ function TdmPgEngine.SelectSQL(const sql: string): string;
214214

215215
procedure TdmPgEngine.MoveTaskUp(const ATaskID: integer);
216216
begin
217-
PQConn.ExecuteDirect(Format('SELECT timetable.move_task_up(%d)', [ATaskID]));
217+
connMain.ExecuteDirect(Format('SELECT timetable.move_task_up(%d)', [ATaskID]));
218218
end;
219219

220220
procedure TdmPgEngine.MoveTaskDown(const ATaskID: integer);
221221
begin
222-
PQConn.ExecuteDirect(Format('SELECT timetable.move_task_down(%d)', [ATaskID]));
222+
connMain.ExecuteDirect(Format('SELECT timetable.move_task_down(%d)', [ATaskID]));
223223
end;
224224

225225
function TdmPgEngine.IsTaskDeleteAllowed: boolean;

0 commit comments

Comments
 (0)