https://github.com/gcarreno/re-usable-workflows
Collection of GitHub reusable workflows for a variety of languages
https://github.com/gcarreno/re-usable-workflows
fpc free-pascal freepascal github-reusable-workflows github-workflow github-workflows lazarus
Last synced: 5 months ago
JSON representation
Collection of GitHub reusable workflows for a variety of languages
- Host: GitHub
- URL: https://github.com/gcarreno/re-usable-workflows
- Owner: gcarreno
- License: mit
- Created: 2023-08-31T20:21:15.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-03T18:29:05.000Z (about 1 year ago)
- Last Synced: 2025-06-18T12:50:33.047Z (6 months ago)
- Topics: fpc, free-pascal, freepascal, github-reusable-workflows, github-workflow, github-workflows, lazarus
- Language: Pascal
- Homepage:
- Size: 144 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# GitHub Reusable Workflows
- [](https://github.com/gcarreno/re-usable-workflows/actions)
- [](https://github.com/gcarreno/re-usable-workflows/actions)
[](https://github.com/gcarreno/re-usable-workflows/releases/latest)
[](https://github.com/gcarreno/re-usable-workflows/releases/latest)
[](https://github.com/gcarreno/re-usable-workflows/blob/master/LICENSE)
[](https://github.com/gcarreno/re-usable-workflows/releases/latest)
[](https://github.com/gcarreno/re-usable-workflows/releases)
Collection of GitHub reusable workflows for a variety of languages
# Warning
I have not yet implemented sane defaults and error detection.
I've also made a hard coded dependency on [git-cliff](https://git-cliff.org/) to produce the release notes.
The next phase will be to get all this corrected and/or made optional, somehow.
# Languages
## Object Pascal: Lazarus
- [main](.github/workflows/main.lazarus.yml)
This is the one you should copy to your Lazarus repository, and customise, because it calls the ones bellow
- [build](.github/workflows/build.lazarus.yml)
This one takes care of compiling the app itself and uploading the compiled binaries as an artefact. It's called remotely from the main one above
- [test](.github/workflows/test.lazarus.yml)
This one takes care of compiling the test app and running it. It's called remotely from the main one above
- [release](.github/workflows/release.lazarus.yml)
This one takes care of downloading the artefacts and then creating a release with archived binaries. It's called remotely from the main one above
### The `JSON` config string
Example:
```json
{
"app-name": "helloworld",
"lpi-path": "lazarus/src",
"bin-path": "lazarus/bin",
"build-mode": "Release",
"lazarus-packages": "",
"matrix": {
"os": [
"ubuntu-latest",
"windows-latest",
"macos-latest"
],
"include":[
{
"os": "ubuntu-latest",
"triplet": "x86_64-linux"
},
{
"os": "windows-latest",
"triplet": "x86_64-win64"
},
{
"os": "macos-latest",
"triplet": "x86_64-darwin"
}
],
"lazarus-versions": [
"stable",
"2.0.12"
]
}
}
```
#### `app-name`
The application name.
This field is used to find the `.lpi` file one the [`lpi-path`](#lpi-path) folder and also the binary on [`bin-path`](#bin-path).
#### `lpi-path`
The path where the `.lpi` file resides.
Example value: "src"
#### `bin-path`
The path where the compiled binary can be found.
Example value: "bin"
#### `build-mode`
The name of one of the build modes you've defined on your `.lpi` file.
Example values: "Default", "Release", "Debug"
#### `matrix`
A `JSON` representation of the matrix to allow parallel compiling for various platforms and Lazarus versions.
**NOTE**: Needs more explanation