forked from immortalwrt/docker
-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (117 loc) · 4.87 KB
/
sdk.yml
File metadata and controls
135 lines (117 loc) · 4.87 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
133
134
135
# SPDX-License-Identifier: GPL-2.0-only
#
# Copyright (C) 2021 ImmortalWrt.org
name: Build SDK images
on:
workflow_dispatch:
inputs:
branch:
description: "Source branch"
required: true
default: "master"
version:
description: "Release version"
required: true
default: "snapshot"
jobs:
generate_targets:
name: Generate target list
runs-on: ubuntu-latest
outputs:
targets: ${{ steps.list_targets.outputs.targets }}
steps:
- name: Checkout ImmortalWrt source tree
uses: actions/checkout@v4
with:
repository: "immortalwrt/immortalwrt"
ref: ${{ github.event.inputs.branch }}
- name: Generate target list
id: list_targets
run: |
for TARGET in $(perl ./scripts/dump-target-info.pl targets 2>/dev/null | awk '{ print $1 }'); do \
TARGET_LIST="${TARGET_LIST:+$TARGET_LIST,}\"${TARGET/\//-}\""; \
done
JSON_LIST="{\"runner\": [\"ubuntu-latest\"],\"targets\":[$TARGET_LIST]}"
echo "$JSON_LIST" | jq .
echo "targets=$JSON_LIST" >> "$GITHUB_OUTPUT"
build:
name: Build SDK image for ${{ matrix.targets }}
needs: generate_targets
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate_targets.outputs.targets)}}
max-parallel: 10
steps:
- name: Free disk spaces
env:
DEBIAN_FRONTEND: noninteractive
run: |
for i in $(docker images -q); do docker rmi "$i"; done
sudo -E apt-get -y purge azure-cli dotnet* firefox ghc* google* llvm* moby* mongodb* openjdk* powershell zulu*
sudo -E apt-get -y autoremove --purge
sudo -E rm -rf $AGENT_TOOLSDIRECTORY /usr/local/lib/android /usr/share/dotnet
- name: Checkout docker repo
uses: actions/checkout@v4
- name: Download SDK for ${{ matrix.targets }}
run: ./download_files.sh sdk
env:
TARGET: ${{ matrix.targets }}
VERSION: ${{ github.event.inputs.version }}
- name: Get architecture
run: |
pushd sdk
SDK_ARCH="$(./scripts/dump-target-info.pl architectures 2>/dev/null | grep "${TARGET/-/\/}" | cut -d " " -f 1)"
echo "SDK_ARCH=$SDK_ARCH" | tee -a "$GITHUB_ENV"
popd
env:
TARGET: ${{ matrix.targets }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build base image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.base
platforms: linux/amd64
push: false
tags: immortalwrt:base
- name: Build and push SDK image
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.sdk
platforms: linux/amd64
push: true
tags: |
immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.branch }}
immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }}
- name: Push extra tags for architecture
run: |
docker tag immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }} "immortalwrt/sdk:$SDK_ARCH-${{ github.event.inputs.branch }}"
docker tag immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }} "immortalwrt/sdk:$SDK_ARCH-${{ github.event.inputs.version }}"
docker push "immortalwrt/sdk:$SDK_ARCH-${{ github.event.inputs.branch }}"
docker push "immortalwrt/sdk:$SDK_ARCH-${{ github.event.inputs.version }}"
- name: Push extra tags for snapshot
if: ${{ github.event.inputs.version == 'snapshot' }}
run: |
docker tag immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }} "immortalwrt/sdk:$SDK_ARCH"
docker tag immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }} immortalwrt/sdk:${{ matrix.targets }}
docker push "immortalwrt/sdk:$SDK_ARCH"
docker push immortalwrt/sdk:${{ matrix.targets }}
- name: Push extra tags for x86-64
if: ${{ matrix.targets == 'x86-64' }}
run: |
docker tag immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }} immortalwrt/sdk:${{ github.event.inputs.branch }}
docker tag immortalwrt/sdk:${{ matrix.targets }}-${{ github.event.inputs.version }} immortalwrt/sdk:${{ github.event.inputs.version }}
docker push immortalwrt/sdk:${{ github.event.inputs.branch }}
docker push immortalwrt/sdk:${{ github.event.inputs.version }}