diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/CODEOWNERS | 3 | ||||
-rw-r--r-- | .github/labeler.yml | 485 | ||||
-rw-r--r-- | .github/workflows/codeql.yml | 18 | ||||
-rw-r--r-- | .github/workflows/container.yml | 73 | ||||
-rw-r--r-- | .github/workflows/integration.yml | 197 | ||||
-rw-r--r-- | .github/workflows/lint.yml | 38 | ||||
-rw-r--r-- | .github/workflows/manualtest.yml | 50 | ||||
-rw-r--r-- | .github/workflows/pr.yml | 9 | ||||
-rw-r--r-- | .github/workflows/release.yml | 9 |
9 files changed, 689 insertions, 193 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e4362b2..7fbdd47 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -5,5 +5,4 @@ # the repo. Unless a later match takes precedence, # @global-owner1 and @global-owner2 will be requested for # review when someone opens a pull request. -* @haraldh @danimo @johannbg - +* @laszlogombos @Conan-Kudo diff --git a/.github/labeler.yml b/.github/labeler.yml index ba47d04..00142bc 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,292 +1,555 @@ repository: - - ./* + - changed-files: + - any-glob-to-any-file: './*' github: - - .github/* - - .github/**/* + - changed-files: + - any-glob-to-any-file: ['.github/*', '.github/**/*'] + +docs: + - changed-files: + - any-glob-to-any-file: 'docs/*' + +man: + - changed-files: + - any-glob-to-any-file: 'man/*' + +kernel-install: + - changed-files: + - any-glob-to-any-file: 'install.d/*' + +shell-completion: + - changed-files: + - any-glob-to-any-file: ['shell-completion/*', 'shell-completion/**/*'] + +dracut-cpio: + - changed-files: + - any-glob-to-any-file: ['src/dracut-cpio/*', 'src/dracut-cpio/**/*'] dracut-install: - - install/* - - install/**/* + - changed-files: + - any-glob-to-any-file: 'src/install/*' + +dracut-util: + - changed-files: + - any-glob-to-any-file: 'src/util/*' + +logtee: + - changed-files: + - any-glob-to-any-file: 'src/logtee/*' -example: - - examples/* - - examples/**/* - - examples/**/**/* +skipcpio: + - changed-files: + - any-glob-to-any-file: 'src/skipcpio/*' modules: - - modules.d/* - - modules.d/**/* + - changed-files: + - any-glob-to-any-file: ['modules.d/*', 'modules.d/**/*'] bash: - - modules.d/00bash/* + - changed-files: + - any-glob-to-any-file: 'modules.d/00bash/*' dash: - - modules.d/00dash/* + - changed-files: + - any-glob-to-any-file: 'modules.d/00dash/*' mksh: - - modules.d/00mksh/* + - changed-files: + - any-glob-to-any-file: 'modules.d/00mksh/*' systemd: - - modules.d/00systemd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/00systemd/*' warpclock: - - modules.d/00warpclock/* + - changed-files: + - any-glob-to-any-file: 'modules.d/00warpclock/*' fips: - - modules.d/01fips/* + - changed-files: + - any-glob-to-any-file: 'modules.d/01fips/*' + +systemd-ac-power: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-ac-power/*' + +systemd-ask-password: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-ask-password/*' + +systemd-bsod: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-bsod/*' + +systemd-coredump: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-coredump/*' + +systemd-creds: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-creds/*' + +systemd-hostnamed: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-hostnamed/*' systemd-initrd: - - modules.d/01systemd-initrd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-initrd/*' -caps: - - modules.d/02caps/* +systemd-integritysetup: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-integritysetup/*' + +systemd-journald: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-journald/*' + +systemd-ldconfig: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-ldconfig/*' + +systemd-modules-load: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-modules-load/*' systemd-networkd: - - modules.d/02systemd-networkd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-networkd/*' + +systemd-network-management: + - changed-files: + - any-glob-to-any-file: 'modules.d/00systemd-network-management/*' + +systemd-pcrphase: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-pcrphase/*' + +systemd-portabled: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-portabled/*' + +systemd-pstore: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-pstore/*' + +systemd-repart: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-repart/*' + +systemd-resolved: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-resolved/*' + +systemd-sysctl: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-sysctl/*' + +systemd-sysext: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-sysext/*' + +systemd-sysusers: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-sysusers/*' + +systemd-timedated: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-timedated/*' + +systemd-timesyncd: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-timesyncd/*' + +systemd-tmpfiles: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-tmpfiles/*' + +systemd-udevd: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-udevd/*' + +systemd-veritysetup: + - changed-files: + - any-glob-to-any-file: 'modules.d/01systemd-veritysetup/*' + +caps: + - changed-files: + - any-glob-to-any-file: 'modules.d/02caps/*' modsign: - - modules.d/03modsign/* + - changed-files: + - any-glob-to-any-file: 'modules.d/03modsign/*' rescue: - - modules.d/03rescue/* + - changed-files: + - any-glob-to-any-file: 'modules.d/03rescue/*' watchdog: - - modules.d/04watchdog/* + - changed-files: + - any-glob-to-any-file: 'modules.d/04watchdog/*' + +watchdog-modules: + - changed-files: + - any-glob-to-any-file: 'modules.d/04watchdog-modules/*' busybox: - - modules.d/05busybox/* + - changed-files: + - any-glob-to-any-file: 'modules.d/05busybox/*' + +dbus-broker: + - changed-files: + - any-glob-to-any-file: 'modules.d/06dbus-broker/*' + +dbus-daemon: + - changed-files: + - any-glob-to-any-file: 'modules.d/06dbus-daemon/*' rngd: - - modules.d/06rngd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/06rngd/*' + +dbus: + - changed-files: + - any-glob-to-any-file: 'modules.d/09dbus/*' i18n: - - modules.d/10i18n/* + - changed-files: + - any-glob-to-any-file: 'modules.d/10i18n/*' convertfs: - - modules.d/30convertfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/30convertfs/*' + +connman: + - changed-files: + - any-glob-to-any-file: 'modules.d/35connman/*' network-legacy: - - modules.d/35network-legacy/* + - changed-files: + - any-glob-to-any-file: 'modules.d/35network-legacy/*' network-manager: - - modules.d/35network-manager/* + - changed-files: + - any-glob-to-any-file: 'modules.d/35network-manager/*' network: - - modules.d/40network/* + - changed-files: + - any-glob-to-any-file: 'modules.d/40network/*' ifcfg: - - modules.d/45ifcfg/* + - changed-files: + - any-glob-to-any-file: 'modules.d/45ifcfg/*' url-lib: - - modules.d/45url-lib/* + - changed-files: + - any-glob-to-any-file: 'modules.d/45url-lib/*' drm: - - modules.d/50drm/* + - changed-files: + - any-glob-to-any-file: 'modules.d/50drm/*' plymouth: - - modules.d/50plymouth/* + - changed-files: + - any-glob-to-any-file: 'modules.d/50plymouth/*' + +bluetooth: + - changed-files: + - any-glob-to-any-file: 'modules.d/62bluetooth/*' cms: - - modules.d/80cms/* + - changed-files: + - any-glob-to-any-file: 'modules.d/80cms/*' lvmmerge: - - modules.d/80lvmmerge/* + - changed-files: + - any-glob-to-any-file: 'modules.d/80lvmmerge/*' + +lvmthinpool-monitor: + - changed-files: + - any-glob-to-any-file: 'modules.d/80lvmthinpool-monitor/*' cio_ignore: - - modules.d/81cio_ignore/* + - changed-files: + - any-glob-to-any-file: 'modules.d/81cio_ignore/*' btrfs: - - modules.d/90btrfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90btrfs/*' crypt: - - modules.d/90crypt/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90crypt/*' dm: - - modules.d/90dm/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90dm/*' dmraid: - - modules.d/90dmraid/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90dmraid/*' dmsquash-live: - - modules.d/90dmsquash-live/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90dmsquash-live/*' + +dmsquash-live-autooverlay: + - changed-files: + - any-glob-to-any-file: 'modules.d/90dmsquash-live-autooverlay/*' dmsquash-live-ntfs: - - modules.d/90dmsquash-live-ntfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90dmsquash-live-ntfs/*' kernel-modules: - - modules.d/90kernel-modules/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90kernel-modules/*' kernel-modules-extra: - - modules.d/90kernel-modules-extra/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90kernel-modules-extra/*' kernel-network-modules: - - modules.d/90kernel-network-modules/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90kernel-network-modules/*' livenet: - - modules.d/90livenet/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90livenet/*' lvm: - - modules.d/90lvm/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90lvm/*' mdraid: - - modules.d/90mdraid/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90mdraid/*' multipath: - - modules.d/90multipath/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90multipath/*' + +numlock: + - changed-files: + - any-glob-to-any-file: 'modules.d/90numlock/*' nvdimm: - - modules.d/90nvdimm/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90nvdimm/*' overlayfs: - - modules.d/90overlayfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90overlayfs/*' ppcmac: - - modules.d/90ppcmac/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90ppcmac/*' qemu: - - modules.d/90qemu/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90qemu/*' qemu-net: - - modules.d/90qemu-net/* + - changed-files: + - any-glob-to-any-file: 'modules.d/90qemu-net/*' + +systemd-cryptsetup: + - changed-files: + - any-glob-to-any-file: 'modules.d/90systemd-cryptsetup/*' crypt-gpg: - - modules.d/91crypt-gpg/* + - changed-files: + - any-glob-to-any-file: 'modules.d/91crypt-gpg/*' crypt-loop: - - modules.d/91crypt-loop/* + - changed-files: + - any-glob-to-any-file: 'modules.d/91crypt-loop/*' + +fido2: + - changed-files: + - any-glob-to-any-file: 'modules.d/91fido2/*' + +pcsc: + - changed-files: + - any-glob-to-any-file: 'modules.d/91pcsc/*' + +pkcs11: + - changed-files: + - any-glob-to-any-file: 'modules.d/91pkcs11/*' + +tpm2-tss: + - changed-files: + - any-glob-to-any-file: 'modules.d/91tpm2-tss/*' zipl: - - modules.d/91zipl/* + - changed-files: + - any-glob-to-any-file: 'modules.d/91zipl/*' cifs: - - modules.d/95cifs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95cifs/*' dasd: - - modules.d/95dasd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95dasd/*' dasd_mod: - - modules.d/95dasd_mod/* - -dasd_rules: - - modules.d/95dasd_rules/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95dasd_mod/*' dcssblk: - - modules.d/95dcssblk/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95dcssblk/*' debug: - - modules.d/95debug/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95debug/*' fcoe: - - modules.d/95fcoe/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95fcoe/*' fcoe-uefi: - - modules.d/95fcoe-uefi/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95fcoe-uefi/*' fstab-sys: - - modules.d/95fstab-sys/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95fstab-sys/*' iscsi: - - modules.d/95iscsi/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95iscsi/*' lunmask: - - modules.d/95lunmask/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95lunmask/*' nbd: - - modules.d/95nbd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95nbd/*' nfs: - - modules.d/95nfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95nfs/*' nvmf: - - modules.d/95nvmf/* - -qeth_rules: - - modules.d/95qeth_rules/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95nvmf/*' resume: - - modules.d/95resume/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95resume/*' rootfs-block: - - modules.d/95rootfs-block/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95rootfs-block/*' ssh-client: - - modules.d/95ssh-client/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95ssh-client/*' terminfo: - - modules.d/95terminfo/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95terminfo/*' udev-rules: - - modules.d/95udev-rules/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95udev-rules/*' virtfs: - - modules.d/95virtfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95virtfs/*' virtiofs: - - modules.d/95virtiofs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95virtiofs/*' zfcp: - - modules.d/95zfcp/* - -zfcp_rules: - - modules.d/95zfcp_rules/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95zfcp/*' znet: - - modules.d/95znet/* + - changed-files: + - any-glob-to-any-file: 'modules.d/95znet/*' securityfs: - - modules.d/96securityfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/96securityfs/*' biosdevname: - - modules.d/97biosdevname/* + - changed-files: + - any-glob-to-any-file: 'modules.d/97biosdevname/*' masterkey: -- modules.d/97masterkey/* + - changed-files: + - any-glob-to-any-file: 'modules.d/97masterkey/*' dracut-systemd: - - modules.d/98dracut-systemd/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98dracut-systemd/*' ecryptfs: - - modules.d/98ecryptfs/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98ecryptfs/*' integrity: - - modules.d/98integrity/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98integrity/*' pollcdrom: - - modules.d/98pollcdrom/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98pollcdrom/*' selinux: - - modules.d/98selinux/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98selinux/*' syslog: - - modules.d/98syslog/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98syslog/*' usrmount: - - modules.d/98usrmount/* + - changed-files: + - any-glob-to-any-file: 'modules.d/98usrmount/*' base: - - modules.d/99base/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99base/*' fs-lib: - - modules.d/99fs-lib/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99fs-lib/*' img-lib: - - modules.d/99img-lib/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99img-lib/*' memstrack: - - modules.d/99memstrack/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99memstrack/*' shutdown: - - modules.d/99shutdown/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99shutdown/*' squash: - - modules.d/99squash/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99squash/*' uefi-lib: - - modules.d/99uefi-lib/* + - changed-files: + - any-glob-to-any-file: 'modules.d/99uefi-lib/*' + +net-lib: + - changed-files: + - any-glob-to-any-file: 'modules.d/45net-lib/*' + +pcmcia: + - changed-files: + - any-glob-to-any-file: 'modules.d/90pcmcia/*' test: - - test/* - - test/**/* - - modules.d/80test* - - modules.d/80test*/* + - changed-files: + - any-glob-to-any-file: ['test/*', 'test/**/*', 'modules.d/80test*', 'modules.d/80test*/*'] diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e6f8e42..9839ad0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -7,10 +7,14 @@ name: "CodeQL" on: push: branches: - - master + - main + paths: + - 'src/**' pull_request: branches: - - master + - main + paths: + - 'src/**' permissions: contents: read @@ -18,7 +22,7 @@ permissions: jobs: analyze: name: Analyze - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest concurrency: group: ${{ github.workflow }}-${{ matrix.language }}-${{ github.ref }} cancel-in-progress: true @@ -33,10 +37,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} queries: +security-extended,security-and-quality @@ -47,7 +51,7 @@ jobs: sudo apt -y install asciidoc gcc libkmod-dev libsystemd-dev pkg-config - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml index d8c8808..666f887 100644 --- a/.github/workflows/container.yml +++ b/.github/workflows/container.yml @@ -3,12 +3,12 @@ on: schedule: - cron: '30 11 * * *' # every day at 11:30 UTC push: - branches: [ master ] + branches: [ main ] paths: - 'test/container/**' - '.github/workflows/container.yml' pull_request: - branches: [ master ] + branches: [ main ] paths: - 'test/container/**' - '.github/workflows/container.yml' @@ -18,30 +18,68 @@ permissions: contents: read jobs: - push_to_registry: - if: github.repository == 'dracutdevs/dracut' || vars.CONTAINER == 'enabled' - name: Build and push containers image to GitHub Packages + arm64: + if: github.repository == 'dracut-ng/dracut-ng' || vars.CONTAINER == 'enabled' + name: ${{ matrix.config.tag }} on ${{ matrix.config.platform }} runs-on: ubuntu-latest concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.config.dockerfile }} + group: arm64-${{ github.workflow }}-${{ github.ref }}-${{ matrix.config.dockerfile }} cancel-in-progress: true strategy: fail-fast: false matrix: config: - - { dockerfile: 'Dockerfile-Fedora-latest', tag: 'fedora:latest' } - - { dockerfile: 'Dockerfile-OpenSuse-latest', tag: 'opensuse:latest' } - - { dockerfile: 'Dockerfile-Arch', tag: 'arch:latest' } - - { dockerfile: 'Dockerfile-Debian', tag: 'debian:latest' } - - { dockerfile: 'Dockerfile-Gentoo', tag: 'gentoo:latest' } - - { dockerfile: 'Dockerfile-Ubuntu', tag: 'ubuntu:latest' } + - { dockerfile: 'Dockerfile-Debian', tag: 'debian', platform: 'linux/arm64,linux/amd64' } + - { dockerfile: 'Dockerfile-Fedora-latest', tag: 'fedora', platform: 'linux/arm64,linux/amd64' } + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: ${{ matrix.config.platform }} + - name: Check out the repo + uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up env + run: echo "repository_owner=${GITHUB_REPOSITORY_OWNER,,}" >>${GITHUB_ENV} + - name: Build and Push Container + uses: docker/build-push-action@v5 + with: + file: test/container/${{ matrix.config.dockerfile }} + tags: ghcr.io/${{env.repository_owner}}/${{ matrix.config.tag }}:latest + push: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} + platforms: ${{ matrix.config.platform }} + + amd64: + if: github.repository == 'dracut-ng/dracut-ng' || vars.CONTAINER == 'enabled' + name: ${{ matrix.config.tag }} on ${{ matrix.config.platform }} + runs-on: ubuntu-latest + concurrency: + group: amd64-${{ github.workflow }}-${{ github.ref }}-${{ matrix.config.dockerfile }} + cancel-in-progress: true + strategy: + fail-fast: false + matrix: + config: + - { dockerfile: 'Dockerfile-OpenSuse-latest', tag: 'opensuse', platform: 'linux/amd64' } + - { dockerfile: 'Dockerfile-Arch', tag: 'arch', platform: 'linux/amd64' } + - { dockerfile: 'Dockerfile-Gentoo', tag: 'gentoo', platform: 'linux/amd64' } + - { dockerfile: 'Dockerfile-Ubuntu', tag: 'ubuntu', platform: 'linux/amd64' } + - { dockerfile: 'Dockerfile-alpine', tag: 'alpine', platform: 'linux/amd64' } + - { dockerfile: 'Dockerfile-Void', tag: 'void', platform: 'linux/amd64' } steps: - name: Check out the repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -49,8 +87,9 @@ jobs: - name: Set up env run: echo "repository_owner=${GITHUB_REPOSITORY_OWNER,,}" >>${GITHUB_ENV} - name: Build and Push Container - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: file: test/container/${{ matrix.config.dockerfile }} - tags: ghcr.io/${{env.repository_owner}}/${{ matrix.config.tag }} + tags: ghcr.io/${{env.repository_owner}}/${{ matrix.config.tag }}:latest push: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} + platforms: ${{ matrix.config.platform }} diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index ab075b0..6e323b7 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -2,30 +2,147 @@ name: Integration Test on: pull_request: - branches: [ master ] + branches: [ main ] env: DEBUGFAIL: "${{ secrets.ACTIONS_STEP_DEBUG && 'rd.debug' }}" jobs: - test: + basic: + name: ${{ matrix.test }} on ${{ matrix.container }} runs-on: ubuntu-latest timeout-minutes: 30 concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }} + group: basic-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }} cancel-in-progress: true strategy: matrix: container: [ - "arch:latest", - "debian:latest", - "fedora:latest", - "gentoo:latest", - "opensuse:latest", - "ubuntu:latest", + "alpine", + "arch", + "debian", + "fedora", + "gentoo", + "opensuse", + "ubuntu", + "void", ] test: [ "01", + ] + fail-fast: false + container: + image: ghcr.io/dracut-ng/${{ matrix.container }} + options: "--privileged -v /dev:/dev" + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + - name: "${{ matrix.container }} TEST-${{ matrix.test }}" + run: ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} + network: + name: ${{ matrix.test }} on ${{ matrix.container }} using ${{ matrix.network }} + runs-on: ubuntu-latest + timeout-minutes: 45 + concurrency: + group: network-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }}-${{ matrix.network }} + cancel-in-progress: true + strategy: + matrix: + container: [ + "fedora", + ] + network: [ + "network", + ] + test: [ + "20", + "40", + "50", + "60", + ] + fail-fast: false + container: + image: ghcr.io/dracut-ng/${{ matrix.container }} + options: "--privileged -v /dev:/dev" + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + - name: "${{ matrix.container }} TEST-${{ matrix.test }}" + run: USE_NETWORK=${{ matrix.network }} ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} + network-legacy: + name: ${{ matrix.test }} on ${{ matrix.container }} using ${{ matrix.network }} + runs-on: ubuntu-latest + timeout-minutes: 45 + concurrency: + group: network-legacy-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }}-${{ matrix.network }} + cancel-in-progress: true + strategy: + matrix: + container: [ + "opensuse", + ] + network: [ + "network-legacy", + ] + test: [ + "20", + "30", + "40", + ] + fail-fast: false + container: + image: ghcr.io/dracut-ng/${{ matrix.container }} + options: "--privileged -v /dev:/dev" + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + - name: "${{ matrix.container }} TEST-${{ matrix.test }}" + run: USE_NETWORK=${{ matrix.network }} ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} + systemd-networkd: + name: ${{ matrix.test }} on ${{ matrix.container }} using ${{ matrix.network }} + runs-on: ubuntu-latest + timeout-minutes: 45 + concurrency: + group: systemd-networkd-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }}-${{ matrix.network }} + cancel-in-progress: true + strategy: + matrix: + container: [ + "arch", + ] + network: [ + "systemd-networkd", + ] + test: [ + "35", + "40", + ] + fail-fast: false + container: + image: ghcr.io/dracut-ng/${{ matrix.container }} + options: "--privileged -v /dev:/dev" + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + - name: "${{ matrix.container }} TEST-${{ matrix.test }}" + run: USE_NETWORK=${{ matrix.network }} ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} + extended: + name: ${{ matrix.test }} on ${{ matrix.container }} + runs-on: ubuntu-latest + timeout-minutes: 30 + concurrency: + group: extended-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }} + cancel-in-progress: true + strategy: + matrix: + container: [ + "arch", + "debian", + "fedora", + "gentoo", + "ubuntu", + ] + test: [ "02", "03", "04", @@ -43,50 +160,60 @@ jobs: ] fail-fast: false container: - image: ghcr.io/dracutdevs/${{ matrix.container }} + image: ghcr.io/dracut-ng/${{ matrix.container }} options: "--privileged -v /dev:/dev" steps: - name: "Checkout Repository" - uses: actions/checkout@v1 - with: - fetch-depth: 0 - + uses: actions/checkout@v4 - name: "${{ matrix.container }} TEST-${{ matrix.test }}" run: ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} - network: + dracut-cpio: + name: ${{ matrix.test }} on ${{ matrix.container }} runs-on: ubuntu-latest - timeout-minutes: 45 + timeout-minutes: 30 concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }}-${{ matrix.network }} + group: dracut-cpio-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }} cancel-in-progress: true strategy: matrix: container: [ - "fedora:latest", - ] - network: [ - "network-manager", - "network-legacy", - #"systemd-networkd", - #"connman", + "opensuse", ] test: [ - "20", - "30", - "35", - "40", - "60", - # "50", # times out + "63", ] fail-fast: false container: - image: ghcr.io/dracutdevs/${{ matrix.container }} + image: ghcr.io/dracut-ng/${{ matrix.container }} options: "--privileged -v /dev:/dev" steps: - name: "Checkout Repository" - uses: actions/checkout@v3 + uses: actions/checkout@v4 + - name: "${{ matrix.container }} TEST-${{ matrix.test }}" + run: ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} + arm64: + name: ${{ matrix.test }} on ${{ matrix.container }} on arm64 + runs-on: ubuntu-latest + timeout-minutes: 30 + concurrency: + group: arm64-${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }} + cancel-in-progress: true + strategy: + matrix: + container: [ + "debian", + "fedora", + ] + test: [ + "98", + ] + fail-fast: false + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 with: - fetch-depth: 0 - + platforms: 'linux/arm64' + - name: "Checkout Repository" + uses: actions/checkout@v4 - name: "${{ matrix.container }} TEST-${{ matrix.test }}" - run: USE_NETWORK=${{ matrix.network }} ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} + run: docker run --platform linux/arm64 --privileged -v /dev:/dev -v $PWD:/w ghcr.io/dracut-ng/${{ matrix.container }} /w/tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d02b332..16dac6c 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,31 +2,53 @@ name: Lint on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: lint-shell: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: shfmt - uses: luizm/action-sh-checker@v0.6.0 + uses: luizm/action-sh-checker@v0.8.0 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SHFMT_OPTS: -s # arguments to shfmt. with: - sh_checker_shellcheck_disable: false - sh_checker_comment: true + sh_checker_shellcheck_disable: true # disable shellcheck in favor of differential-shellcheck + + differential-shellcheck: + runs-on: ubuntu-latest + + permissions: + security-events: write + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - id: ShellCheck + name: Differential ShellCheck + uses: redhat-plumbers-in-action/differential-shellcheck@v5 + with: + token: ${{ secrets.GITHUB_TOKEN }} + + - if: ${{ always() }} + name: Upload artifact with ShellCheck defects in SARIF format + uses: actions/upload-artifact@v4 + with: + name: Differential ShellCheck SARIF + path: ${{ steps.ShellCheck.outputs.sarif }} lint-c: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: install tools run: sudo apt-get install astyle diff --git a/.github/workflows/manualtest.yml b/.github/workflows/manualtest.yml index b790dcf..74e5647 100644 --- a/.github/workflows/manualtest.yml +++ b/.github/workflows/manualtest.yml @@ -5,34 +5,70 @@ on: inputs: test: description: "Array of tests to run, such as [11,12]" - default: "['04']" - required: true + default: "[]" container: type: choice description: 'distro' - default: 'fedora' + default: 'all' options: + - "all" + - "alpine" - "fedora" - "arch" - "debian" - "ubuntu" - "opensuse" - "gentoo" + - "void" + env: + description: 'Environment (optional)' + default: '{"DEBUGFAIL": "rd.debug"}' + registry: + description: 'Registry for containers, such as ghcr.io/dracut-ng' + +env: + ${{ fromJSON(inputs.env) }} jobs: + matrix: + runs-on: ubuntu-latest + outputs: + registry: ${{ steps.set-matrix.outputs.registry }} + container: ${{ steps.set-matrix.outputs.container }} + tests: ${{ steps.set-matrix.outputs.tests }} + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - id: set-matrix + name: "Set Matrix" + run: | + [[ "${{ inputs.registry }}" != '' ]] && echo "registry=\"${{ inputs.registry }}\"" >> $GITHUB_OUTPUT \ + || ( echo "registry=\"ghcr.io/${{ github.repository_owner }}\"" >> $GITHUB_OUTPUT ) + [[ "${{ inputs.container }}" != 'all' ]] && echo "container=[\"${{ inputs.container }}\"]" >> $GITHUB_OUTPUT \ + || ( containers=$(find test/container -name "Dockerfile-*" | cut -d\- -f2 | tr '[:upper:]' '[:lower:]' | sed -z 's/\n/","/g'); echo "container=[\"${containers%??}]" >> $GITHUB_OUTPUT ) + [[ "${{ toJson(fromJson(inputs.test)) }}" != '[]' ]] && echo "tests=${{ inputs.test }}" >> $GITHUB_OUTPUT \ + || ( tests=$(find test -type d -a -name "TEST-*" | cut -d\- -f2 | sed -z 's/\n/","/g' ); echo "tests=[\"${tests%??}]" >> $GITHUB_OUTPUT ) test: + needs: matrix runs-on: ubuntu-latest timeout-minutes: 45 + concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.container }}-${{ matrix.test }} + cancel-in-progress: true strategy: matrix: - test: ${{ fromJSON(inputs.test) }} + container: ${{ fromJSON(needs.matrix.outputs.container) }} + test: ${{ fromJSON(needs.matrix.outputs.tests) }} + fail-fast: false container: - image: ghcr.io/dracutdevs/${{ inputs.container }} + image: ${{ fromJSON(needs.matrix.outputs.registry) }}/${{ matrix.container }} options: "--privileged -v /dev:/dev" steps: - name: "Checkout Repository" - uses: actions/checkout@v1 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: "${{ inputs.container }} ${{ matrix.test }}" + - name: "${{ matrix.container }} ${{ matrix.test }}" run: ./tools/test-github.sh "TEST-${{ matrix.test }}" ${{ matrix.test }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 60ca1db..1113af0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -9,11 +9,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Check-out the repo under $GITHUB_WORKSPACE - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run Commisery - uses: dracutdevs/commisery-action@master + uses: tomtom-international/commisery-action@master with: token: ${{ secrets.GITHUB_TOKEN }} - pull_request: ${{ github.event.number }} - + # don't validate the pull request title + validate-pull-request: false + validate-pull-request-title-bump: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7497d6e..a12126e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,16 +18,21 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Install dependencies + run: | + sudo apt -y update + sudo apt -y install asciidoc + - name: Build run: bash ${GITHUB_WORKSPACE}/tools/release.sh ${{ inputs.tag }} - name: Release if: ${{ env.new_version }} - uses: softprops/action-gh-release@v0.1.15 + uses: softprops/action-gh-release@v2.0.5 with: tag_name: ${{ env.new_version }} name: dracut-${{ env.new_version }} |