|
@@ -21,49 +21,56 @@ concurrency:
|
|
|
group: packages-${{ github.ref }}-${{ github.event_name }}
|
|
|
cancel-in-progress: true
|
|
|
jobs:
|
|
|
+ matrix:
|
|
|
+ name: Prepare Build Matrix
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ outputs:
|
|
|
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
|
+ steps:
|
|
|
+ - name: Checkout
|
|
|
+ uses: actions/checkout@v2
|
|
|
+ - name: Prepare tools
|
|
|
+ run: |
|
|
|
+ sudo apt-get update && sudo apt-get install -y python3-ruamel.yaml
|
|
|
+ - name: Read build matrix
|
|
|
+ id: set-matrix
|
|
|
+ shell: python3 {0}
|
|
|
+ run: |
|
|
|
+ from ruamel.yaml import YAML
|
|
|
+ import json
|
|
|
+ yaml = YAML(typ='safe')
|
|
|
+ entries = list()
|
|
|
+
|
|
|
+ with open('.github/data/distros.yml') as f:
|
|
|
+ data = yaml.load(f)
|
|
|
+
|
|
|
+ for i, v in enumerate(data['include']):
|
|
|
+ if 'packages' in data['include'][i]:
|
|
|
+ for arch in data['include'][i]['packages']['arches']:
|
|
|
+ entries.append({
|
|
|
+ 'distro': data['include'][i]['distro'],
|
|
|
+ 'version': data['include'][i]['version'],
|
|
|
+ 'pkgclouddistro': data['include'][i]['packages']['repo_distro'],
|
|
|
+ 'format': data['include'][i]['packages']['type'],
|
|
|
+ 'base_image': data['include'][i]['base_image'] if 'base_image' in data['include'][i] else data['include'][i]['distro'],
|
|
|
+ 'platform': data['platform_map'][arch],
|
|
|
+ 'arch': arch
|
|
|
+ })
|
|
|
+
|
|
|
+ entries.sort(key=lambda k: (k['arch'], k['distro'], k['version']))
|
|
|
+ matrix = json.dumps({'include': entries}, sort_keys=True)
|
|
|
+ print('Generated Matrix: ' + matrix)
|
|
|
+ print('::set-output name=matrix::' + matrix)
|
|
|
+
|
|
|
build:
|
|
|
name: Build
|
|
|
runs-on: ubuntu-latest
|
|
|
env:
|
|
|
DOCKER_CLI_EXPERIMENTAL: enabled
|
|
|
+ needs:
|
|
|
+ - matrix
|
|
|
strategy:
|
|
|
- matrix:
|
|
|
- include:
|
|
|
- - {distro: debian, version: "9", pkgclouddistro: debian/stretch, format: deb, base_image: debian, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: debian, version: "9", pkgclouddistro: debian/stretch, format: deb, base_image: debian, platform: linux/i386, arch: i386}
|
|
|
- - {distro: debian, version: "9", pkgclouddistro: debian/stretch, format: deb, base_image: debian, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: debian, version: "9", pkgclouddistro: debian/stretch, format: deb, base_image: debian, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: debian, version: "10", pkgclouddistro: debian/buster, format: deb, base_image: debian, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: debian, version: "10", pkgclouddistro: debian/buster, format: deb, base_image: debian, platform: linux/i386, arch: i386}
|
|
|
- - {distro: debian, version: "10", pkgclouddistro: debian/buster, format: deb, base_image: debian, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: debian, version: "10", pkgclouddistro: debian/buster, format: deb, base_image: debian, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: debian, version: "11", pkgclouddistro: debian/bullseye, format: deb, base_image: debian, platform: linux/amd64, arch: amd64, alias: bullseye}
|
|
|
- - {distro: debian, version: "11", pkgclouddistro: debian/bullseye, format: deb, base_image: debian, platform: linux/i386, arch: i386, alias: bullseye}
|
|
|
- - {distro: debian, version: "11", pkgclouddistro: debian/bullseye, format: deb, base_image: debian, platform: linux/arm/v7, arch: armhf, alias: bullseye}
|
|
|
- - {distro: debian, version: "11", pkgclouddistro: debian/bullseye, format: deb, base_image: debian, platform: linux/arm64/v8, arch: arm64, alias: bullseye}
|
|
|
- - {distro: ubuntu, version: "18.04", pkgclouddistro: ubuntu/bionic, format: deb, base_image: ubuntu, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: ubuntu, version: "18.04", pkgclouddistro: ubuntu/bionic, format: deb, base_image: ubuntu, platform: linux/i386, arch: i386}
|
|
|
- - {distro: ubuntu, version: "18.04", pkgclouddistro: ubuntu/bionic, format: deb, base_image: ubuntu, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: ubuntu, version: "18.04", pkgclouddistro: ubuntu/bionic, format: deb, base_image: ubuntu, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: ubuntu, version: "20.04", pkgclouddistro: ubuntu/focal, format: deb, base_image: ubuntu, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: ubuntu, version: "20.04", pkgclouddistro: ubuntu/focal, format: deb, base_image: ubuntu, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: ubuntu, version: "20.04", pkgclouddistro: ubuntu/focal, format: deb, base_image: ubuntu, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: ubuntu, version: "21.10", pkgclouddistro: ubuntu/impish, format: deb, base_image: ubuntu, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: ubuntu, version: "21.10", pkgclouddistro: ubuntu/impish, format: deb, base_image: ubuntu, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: ubuntu, version: "21.10", pkgclouddistro: ubuntu/impish, format: deb, base_image: ubuntu, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: centos, version: "7", pkgclouddistro: el/7, format: rpm, base_image: centos, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: rockylinux, version: "8", pkgclouddistro: el/8, format: rpm, base_image: rockylinux/rockylinux, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: rockylinux, version: "8", pkgclouddistro: el/8, format: rpm, base_image: rockylinux/rockylinux, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: fedora, version: "34", pkgclouddistro: fedora/34, format: rpm, base_image: fedora, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: fedora, version: "34", pkgclouddistro: fedora/34, format: rpm, base_image: fedora, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: fedora, version: "34", pkgclouddistro: fedora/34, format: rpm, base_image: fedora, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: fedora, version: "35", pkgclouddistro: fedora/35, format: rpm, base_image: fedora, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: fedora, version: "35", pkgclouddistro: fedora/35, format: rpm, base_image: fedora, platform: linux/arm/v7, arch: armhf}
|
|
|
- - {distro: fedora, version: "35", pkgclouddistro: fedora/35, format: rpm, base_image: fedora, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: opensuse, version: "15.3", pkgclouddistro: opensuse/15.3, format: rpm, base_image: opensuse/leap, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: opensuse, version: "15.3", pkgclouddistro: opensuse/15.3, format: rpm, base_image: opensuse/leap, platform: linux/arm64/v8, arch: arm64}
|
|
|
- - {distro: oraclelinux, version: "8", pkgclouddistro: ol/8, format: rpm, base_image: oraclelinux, platform: linux/amd64, arch: amd64}
|
|
|
- - {distro: oraclelinux, version: "8", pkgclouddistro: ol/8, format: rpm, base_image: oraclelinux, platform: linux/arm64/v8, arch: arm64}
|
|
|
+ matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
|
|
# We intentiaonally disable the fail-fast behavior so that a
|
|
|
# build failure for one version doesn't prevent us from publishing
|
|
|
# successfully built and tested packages for another version.
|