refactor workflows (#11) #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Package Repository | |
run-name: ${{ github.event_name == 'schedule' && 'β° Scheduled build' || github.event.head_commit.message }} | |
on: | |
schedule: | |
- cron: '0 0 * * *' | |
push: | |
branches: [ master ] | |
env: | |
SECRET_DOCKER_CI: ${{ secrets.DOCKER_CI }} | |
REPOSITORY: hyperion-project | |
jobs: | |
############################# | |
###### Ubuntu & Debian ###### | |
############################# | |
ubuntu_debian: | |
name: ${{ matrix.os.description }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ | |
{ distribution: ubuntu, codename: focal, description: Ubuntu 20.04 (Focal Fossa) }, | |
{ distribution: ubuntu, codename: jammy, description: Ubuntu 22.04 (Jammy Jellyfish) }, | |
{ distribution: ubuntu, codename: lunar, description: Ubuntu 23.04 (Lunar Lobster) }, | |
{ distribution: ubuntu, codename: mantic, description: Ubuntu 23.10 (Mantic Minotaur) }, | |
{ distribution: debian, codename: buster, description: Debian 10.x (Buster) }, | |
{ distribution: debian, codename: bullseye, description: Debian 11.x (Bullseye) }, | |
{ distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm) }, | |
{ distribution: debian, codename: trixie, description: Debian 13.x (Trixie) } | |
] | |
include: | |
- target_platform: linux/amd64,linux/arm64,linux/arm/v7 | |
steps: | |
- name: π Checkout | |
uses: actions/checkout@v4 | |
- name: β Determine current Repository | |
if: ${{ !startsWith(github.repository, env.REPOSITORY) }} | |
run: echo "REPOSITORY=$(echo '${{ github.actor }}' | tr '[:upper:]' '[:lower:]')" >> ${GITHUB_ENV} | |
- name: π οΈ Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: π³ Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: π Login to GitHub Container Registry | |
if: ${{ env.SECRET_DOCKER_CI != null }} | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.DOCKER_CI }} | |
- name: π³ Set up Docker metadata | |
id: docker_metadata | |
uses: docker/metadata-action@v5 | |
with: | |
images: ghcr.io/${{ env.REPOSITORY }}/${{ matrix.os.distribution }} | |
tags: ${{ matrix.os.codename }} | |
labels: | | |
maintainer=Hyperion Project <admin@hyperion-project.org> | |
org.opencontainers.image.vendor=Hyperion Project | |
org.opencontainers.image.title=${{ matrix.os.description }} | |
org.opencontainers.image.description=Compilation environment to build the RPM packages for the DNF Repository | |
org.opencontainers.image.url=${{ github.server_url }} | |
org.opencontainers.image.source=${{ github.server_url }}/hyperion.docker-ci | |
org.opencontainers.image.documentation=https://docs.hyperion-project.org/ | |
org.opencontainers.image.licenses=MIT | |
- name: π· Build and π Push to GitHub Container/Package Registry | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ubuntu_debian | |
push: ${{ env.SECRET_DOCKER_CI != null }} | |
platforms: ${{ matrix.target_platform }} | |
provenance: false | |
tags: ${{ steps.docker_metadata.outputs.tags }} | |
labels: ${{ steps.docker_metadata.outputs.labels }} | |
build-args: | | |
DIST=${{ matrix.os.distribution }} | |
SUITE=${{ matrix.os.codename }} | |
REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}" | |
#################### | |
###### Fedora ###### | |
#################### | |
fedora: | |
name: ${{ matrix.description }} ${{ matrix.tag }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
tag: [ 37, 38, 39, 40 ] | |
include: | |
- dist: fedora | |
- description: π§ Fedora | |
- target_platform: linux/amd64, linux/arm64 | |
steps: | |
- name: π Checkout | |
uses: actions/checkout@v4 | |
- name: β Determine current Repository | |
if: ${{ !startsWith(github.repository, env.REPOSITORY) }} | |
run: echo "REPOSITORY=$(echo '${{ github.actor }}' | tr '[:upper:]' '[:lower:]')" >> ${GITHUB_ENV} | |
- name: π οΈ Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: π³ Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: π Login to GitHub Container Registry | |
if: ${{ env.SECRET_DOCKER_CI != null }} | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.DOCKER_CI }} | |
- name: π³ Set up Docker metadata | |
id: docker_metadata | |
uses: docker/metadata-action@v4 | |
with: | |
images: ghcr.io/${{ env.REPOSITORY }}/${{ matrix.dist }} | |
tags: ${{ matrix.tag }} | |
labels: | | |
maintainer=Hyperion Project <admin@hyperion-project.org> | |
org.opencontainers.image.vendor=Hyperion Project | |
org.opencontainers.image.title=${{ matrix.description }} | |
org.opencontainers.image.description=Compilation environment to build the RPM packages for the DNF Repository | |
org.opencontainers.image.url=${{ github.server_url }} | |
org.opencontainers.image.source=${{ github.server_url }}/hyperion.docker-ci | |
org.opencontainers.image.documentation=https://docs.hyperion-project.org/ | |
org.opencontainers.image.licenses=MIT | |
- name: π· Build and π Push to GitHub Container/Package Registry | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: fedora | |
push: ${{ env.SECRET_DOCKER_CI != null }} | |
platforms: ${{ matrix.target_platform }} | |
provenance: false | |
tags: ${{ steps.docker_metadata.outputs.tags }} | |
labels: ${{ steps.docker_metadata.outputs.labels }} | |
build-args: | | |
DIST=${{ matrix.dist }} | |
SUITE=${{ matrix.tag }} | |
REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}" |