Skip to content
This repository was archived by the owner on Jan 28, 2022. It is now read-only.

Commit 35feb2b

Browse files
committed
ci: Generic matrix build for cross-compile targets
Moved cross-compile configuration into matrix build configuration. Targets can be added with additional matrix configuration entries. The rest of the build is now generic. This allows to use the new Buildroot SDK in YIO-Remote/remote-os#3
1 parent d94abf2 commit 35feb2b

File tree

1 file changed

+51
-39
lines changed

1 file changed

+51
-39
lines changed

.github/workflows/build.yml

+51-39
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
env:
1313
APP_NAME: YIO-remote-software
14-
APP_ARCHITECTURE: RPi0
1514
PROJECT_NAME: remote-software
1615
HASH_FILENAME: yio-remote-software.hash
1716

@@ -23,46 +22,61 @@
2322
matrix:
2423
config:
2524
- {
26-
name: "RPi0 Release Build", artifact: "RPi0-release",
27-
qmake-args: "CONFIG+=release"
25+
name: "remote-os v0.x Build", artifact: "RPi0-release",
26+
qmake-args: "CONFIG+=release",
27+
build-image: "zehnm/yio-crosscompile-action:1.1.0"
2828
}
29-
29+
- {
30+
name: "remote-os v1.x Build", artifact: "RPi0-Qt5.12.8",
31+
qmake-args: "CONFIG+=release",
32+
build-image: "zehnm/yio-crosscompile-action:2.0.0"
33+
}
34+
3035
steps:
31-
- name: github env vars
32-
run: |
33-
echo "$GITHUB_REF"
34-
echo "$GITHUB_HEAD_REF"
35-
echo "$GITHUB_BASE_REF"
36-
3736
- name: Checkout ${{ env.PROJECT_NAME}}
3837
uses: actions/checkout@v2
3938
with:
4039
# History of 500 should be more than enough to calculate commit count since last release tag.
4140
fetch-depth: 500
41+
# Check out into sub folder, we also need the integrations.library at the same level!
4242
path: ${{ env.PROJECT_NAME}}
4343

4444
- name: Fetch all tags to determine version
45+
# Used in cross compile step
4546
run: |
4647
cd ${{ env.PROJECT_NAME}}
4748
git fetch origin +refs/tags/*:refs/tags/*
4849
git describe --match "v[0-9]*" --tags HEAD --always
4950
50-
- name: Set build timestamp
51-
run: echo "::set-env name=TIMESTAMP::$(date +"%Y%m%d_%H%M%S")"
52-
51+
# Unfortunately we can't use a dynamic Action as in "uses: ${{ matrix.config.build-image }}"
52+
# - name: Cross compile
53+
# id: cross-compile
54+
# uses: zehnm/yio-crosscompile-action@2.0.0
55+
# with:
56+
# project-name: ${{ env.PROJECT_NAME }}
57+
# output-path: ${GITHUB_WORKSPACE}/binaries/app
58+
# qmake-args: ${{ matrix.config.qmake-args }}
59+
#
60+
# So let's do it manually :-( Maybe one day we'll get that feature from GitHub...
5361
- name: Cross compile
54-
id: cross-compile
55-
uses: zehnm/yio-crosscompile-action@v1.1.0
56-
with:
57-
project-name: ${{ env.PROJECT_NAME }}
58-
output-path: ${GITHUB_WORKSPACE}/binaries/app
59-
qmake-args: ${{ matrix.config.qmake-args }}
60-
62+
run: |
63+
docker pull ${{ matrix.config.build-image }}
64+
docker run --workdir /github/workspace --rm \
65+
-e GITHUB_WORKSPACE=/github/workspace \
66+
-v /home/runner/work/${{ env.PROJECT_NAME}}/${{ env.PROJECT_NAME}}:/github/workspace \
67+
${{ matrix.config.build-image }} ${{ env.PROJECT_NAME}} /github/workspace/binaries/app ${{ matrix.config.qmake-args }} https://github.com/YIO-Remote/integrations.library.git .
68+
69+
- name: Get artifact version
70+
run: |
71+
read -r APP_VERSION < binaries/version.txt
72+
echo "::set-env name=APP_VERSION::$APP_VERSION"
73+
6174
- name: Upload build artefacts
62-
uses: actions/upload-artifact@v1
75+
uses: actions/upload-artifact@v2
6376
with:
6477
path: binaries
65-
name: ${{ env.APP_NAME }}-${{ matrix.config.artifact }}
78+
name: ${{ env.APP_NAME }}-v${{ env.APP_VERSION }}-${{ matrix.config.artifact }}
79+
if-no-files-found: error
6680

6781
release:
6882
name: Create Release
@@ -71,49 +85,47 @@
7185
needs: build
7286

7387
steps:
74-
- run: mkdir release
75-
- name: Download release artifact
76-
uses: actions/download-artifact@v1
77-
with:
78-
name: ${{ env.APP_NAME }}-${{ env.APP_ARCHITECTURE }}-release
79-
path: ./release
88+
- name: Download build artifacts
89+
uses: actions/download-artifact@v2
8090

81-
- name: Get artifact version
91+
- name: Display structure of downloaded files
92+
run: ls -R
93+
94+
- name: Get timestamp
8295
run: |
83-
read -r APP_VERSION < release/version.txt
84-
echo "::set-env name=APP_VERSION::$APP_VERSION"
8596
echo "::set-env name=TIMESTAMP::$(date +"%Y%m%d_%H%M%S")"
86-
97+
8798
- name: Create GitHub development build archives
8899
if: "!contains(github.ref, 'tags/v')"
89100
run: |
90-
tar cvf ${{ env.APP_NAME }}-v${{ env.APP_VERSION }}-${{ env.TIMESTAMP }}-${{ env.APP_ARCHITECTURE }}-release.tar -C release .
101+
for D in *; do if [ -d "${D}" ]; then tar cvf $D-${{ env.TIMESTAMP }}.tar -C $D .; fi; done;
91102
for filename in *.tar; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME }}; done;
92103
93-
- name: Create Pre-Release ${{ env.APP_VERSION }}
104+
- name: Create Pre-Release
94105
uses: "marvinpinto/action-automatic-releases@latest"
95106
if: "!contains(github.ref, 'tags/v')"
96107
with:
97108
repo_token: "${{ secrets.GITHUB_TOKEN }}"
98109
automatic_release_tag: "latest"
99110
prerelease: true
100-
title: "Development Build ${{ env.APP_VERSION }}"
111+
title: "Development Build"
101112
files: |
102113
*.tar
103114
${{ env.HASH_FILENAME }}
104115
105116
- name: Create GitHub release archives
106117
if: "contains(github.ref, 'tags/v')"
107118
run: |
108-
tar cvf ${{ env.APP_NAME }}-v${{ env.APP_VERSION }}-${{ env.APP_ARCHITECTURE }}-release.tar -C release .
119+
for D in *; do if [ -d "${D}" ]; then tar cvf $D.tar -C $D .; fi; done;
109120
for filename in *.tar; do echo "sha256 `sha256sum $filename`" >> ${{ env.HASH_FILENAME }}; done;
110121
111-
- name: Create Release ${{ env.APP_VERSION }}
122+
- name: Create Release
112123
uses: "marvinpinto/action-automatic-releases@latest"
113124
if: "contains(github.ref, 'tags/v')"
114125
with:
115126
repo_token: "${{ secrets.GITHUB_TOKEN }}"
116127
prerelease: false
117128
files: |
118-
*.tar
119-
${{ env.HASH_FILENAME }}
129+
*.tar
130+
${{ env.HASH_FILENAME }}
131+

0 commit comments

Comments
 (0)