-
Notifications
You must be signed in to change notification settings - Fork 9
132 lines (119 loc) · 4.8 KB
/
build.yml
File metadata and controls
132 lines (119 loc) · 4.8 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
name: build
on:
push:
branches: [ "develop-lf-6.6.52-2.2.0-imx8mp" ]
pull_request:
branches: [ "develop-lf-6.6.52-2.2.0-imx8mp" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
prepare_container:
runs-on: self-hosted
outputs:
uid: ${{ steps.uid_step.outputs.userid }}
gid: ${{ steps.uid_step.outputs.groupid }}
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
- name: Get user id/group
id: uid_step
run: |
echo "userid=$(id -u)" >> "$GITHUB_OUTPUT"
echo "groupid=$(id -g)" >> "$GITHUB_OUTPUT"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
buildkitd-config: /etc/docker/cibuilder.toml
- name: Login to Docker Registry
uses: docker/login-action@v3
with:
registry: ciserver.ci:5000
username: ${{ secrets.CI_CACHE_REGISTRY_LOGIN }}
password: ${{ secrets.CI_CACHE_REGISTRY_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: docker
push: true
tags: ciserver.ci:5000/${{ github.repository_id }}:lf-6.6.52-2.2.0-imx8mp
cache-from: type=registry,ref=ciserver.ci:5000/${{ github.repository_id }}:cache
cache-to: type=registry,ref=ciserver.ci:5000/${{ github.repository_id }}:cache,mode=max
build-args: |
USER_ID=${{ steps.uid_step.outputs.userid }}
GROUP_ID=${{ steps.uid_step.outputs.groupid }}
build_images:
needs: prepare_container
runs-on: self-hosted
timeout-minutes: 1080
container:
image: ciserver.ci:5000/${{ github.repository_id }}:lf-6.6.52-2.2.0-imx8mp
credentials:
username: ${{ secrets.CI_CACHE_REGISTRY_LOGIN }}
password: ${{ secrets.CI_CACHE_REGISTRY_PASSWORD }}
options: --user "${{ needs.prepare_container.outputs.uid }}:${{ needs.prepare_container.outputs.gid }}"
outputs:
build_tag: ${{ steps.tag_step.outputs.build_tag }}
steps:
- name: Checkout pull-request version of imx8mp_build
uses: actions/checkout@v4
- name: Get build tag
shell: bash -e {0}
id: tag_step
run: |
build_tag=$(date +%Y-%m-%d)_$(git rev-parse --short HEAD)
echo "build_tag=$build_tag" >> "$GITHUB_OUTPUT"
- name: Build
shell: bash -e {0}
run: |
env SHALLOW=true BOOTSOURCE=mmc-data DISTRO=buildroot ./runme.sh
env SHALLOW=true BOOTSOURCE=mmc-boot0 DISTRO=buildroot ./runme.sh
env SHALLOW=true BOOTSOURCE=mmc-boot1 DISTRO=buildroot ./runme.sh
env SHALLOW=true BOOTSOURCE=mmc-data DISTRO=debian ./runme.sh
env SHALLOW=true BOOTSOURCE=mmc-boot0 DISTRO=debian ./runme.sh
env SHALLOW=true BOOTSOURCE=mmc-boot1 DISTRO=debian ./runme.sh
- name: Select artifacts for publishing
shell: bash -e {0}
run: |
mkdir deploy
cp -L images/linux-*.tar deploy/
cp -L images/linux-headers-*.tar deploy/
cp -L images/*.img deploy/
cp -L images/*.bin deploy/
xz -9 deploy/*
ls -lh deploy
- name: Deploy to the local minio storage
uses: yakubique/minio-upload@v1.1.3
with:
endpoint: http://ciserver.ci:9000
insecure: true
access_key: ${{ secrets.CI_CACHE_MINIO_ACCESS }}
secret_key: ${{ secrets.CI_CACHE_MINIO_SECRET }}
bucket: cipublish
source: ./deploy
target: "/${{ github.repository_id }}/${{ steps.tag_step.outputs.build_tag }}"
recursive: true
publish_images:
needs: build_images
runs-on: self-hosted
if: github.ref == 'refs/heads/develop-lf-6.6.52-2.2.0-imx8mp' && github.event_name != 'pull_request'
steps:
- name: Download an artifacts from MinIO
uses: yakubique/minio-download@v1.1.1
with:
endpoint: http://ciserver.ci:9000
insecure: true
access_key: ${{ secrets.CI_CACHE_MINIO_ACCESS }}
secret_key: ${{ secrets.CI_CACHE_MINIO_SECRET }}
bucket: cipublish
source: "/${{ github.repository_id }}/${{ needs.build_images.outputs.build_tag }}/"
target: "."
recursive: true
- name: Upload to S3
uses: shallwefootball/upload-s3-action@v1.3.3
with:
aws_key_id: ${{ secrets.IMAGES_S3_ACCESS }}
aws_secret_access_key: ${{ secrets.IMAGES_S3_SECRET }}
aws_bucket: ${{ secrets.IMAGES_S3_BUCKET }}
endpoint: ${{ secrets.IMAGES_S3_HOST }}
source_dir: deploy
destination_dir: IMX8/imx8mp_build/lf-6.6.52-2.2.0/${{ needs.build_images.outputs.build_tag }}