-
Notifications
You must be signed in to change notification settings - Fork 1
137 lines (121 loc) · 4.58 KB
/
main.yaml
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
134
135
136
137
# Copyright 2023 Contributors to the Eclipse Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
name: Build All
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-container-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
pull-requests: write
strategy:
matrix:
arch: [ amd64, arm64 ]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Build Docker image
uses: ./.github/actions/build-container-image
with:
arch: ${{ matrix.arch }}
run_number: ${{ github.run_number }}
commit_hash: ${{ github.sha }}
username: ${{ github.actor }}
token: ${{ secrets.GITHUB_TOKEN }}
suffix: ""
push-container-image:
if: github.event_name == 'push'
runs-on: ubuntu-latest
needs: build-container-image
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- id: repo_name
uses: ASzc/change-string-case-action@v5
with:
string: ${{ github.repository }}
- name: Log into registry ghcr.io
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create merged manifest and push
env:
REPO: ghcr.io/${{ steps.repo_name.outputs.lowercase }}
run: |
docker buildx imagetools create -t ghcr.io/${{ steps.repo_name.outputs.lowercase }}/self-update-agent:build-${{ github.run_number }} ghcr.io/${{ steps.repo_name.outputs.lowercase }}/self-update-agent:build-${{ github.run_number }}_arm64 ghcr.io/${{ steps.repo_name.outputs.lowercase }}/self-update-agent:build-${{ github.run_number }}_amd64
docker buildx imagetools create -t ghcr.io/${{ steps.repo_name.outputs.lowercase }}/self-update-agent:latest ghcr.io/${{ steps.repo_name.outputs.lowercase }}/self-update-agent:latest_arm64 ghcr.io/${{ steps.repo_name.outputs.lowercase }}/self-update-agent:latest_amd64
build-native-binary:
runs-on: ubuntu-latest
strategy:
matrix:
arch: [ amd64, arm64 ]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Build native binary
id: build-native-binary
uses: ./.github/actions/build-native-binary
with:
arch: ${{ matrix.arch }}
run_number: ${{ github.run_number }}
- name: Upload ${{ matrix.arch }} artifacts to workspace
uses: actions/upload-artifact@v3
with:
path: self-update-agent-${{ matrix.arch }}-build-${{ github.run_number }}.tar.gz
- name: Upload code-coverage results to workspace
if: ${{ matrix.arch == 'amd64' }}
uses: actions/upload-artifact@v3
with:
path: code-coverage.tar.gz
- name: Upload unit tests results to workspace
uses: actions/upload-artifact@v3
with:
path: unit_tests_report_${{ matrix.arch }}.*
upload-native-binary:
runs-on: ubuntu-latest
needs: build-native-binary
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download artifacts
uses: actions/download-artifact@v3
- name: Upload artifacts to build results
if: github.event_name == 'push'
uses: marvinpinto/action-automatic-releases@latest
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
draft: false
prerelease: true
automatic_release_tag: build_${{ github.run_number }}
title: "Build ${{ github.run_number }}"
files: |
./artifact/unit_tests_report_amd64.*
./artifact/unit_tests_report_arm64.*
./artifact/code-coverage.tar.gz
./artifact/self-update-agent-amd64-build-${{ github.run_number }}.tar.gz
./artifact/self-update-agent-arm64-build-${{ github.run_number }}.tar.gz