mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-23 03:45:58 +01:00
ci: use composite action to minimize code duplication (#4112)
This commit is contained in:
parent
efdf07e295
commit
359baa0214
3 changed files with 125 additions and 92 deletions
75
.github/actions/setup_base/action.yml
vendored
Normal file
75
.github/actions/setup_base/action.yml
vendored
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
name: "Setup base"
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
INSTALL_XORG_PKGS:
|
||||||
|
description: 'Install xorg dependencies'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Get required pacman pkgs
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
|
||||||
|
pacman --noconfirm --noprogressbar -Syyu
|
||||||
|
pacman --noconfirm --noprogressbar -Sy \
|
||||||
|
base-devel \
|
||||||
|
cairo \
|
||||||
|
clang \
|
||||||
|
cmake \
|
||||||
|
git \
|
||||||
|
glm \
|
||||||
|
glslang \
|
||||||
|
go \
|
||||||
|
jq \
|
||||||
|
libc++ \
|
||||||
|
libdisplay-info \
|
||||||
|
libdrm \
|
||||||
|
libepoxy \
|
||||||
|
libfontenc \
|
||||||
|
libglvnd \
|
||||||
|
libinput \
|
||||||
|
libliftoff \
|
||||||
|
libxcvt \
|
||||||
|
libxfont2 \
|
||||||
|
libxkbcommon \
|
||||||
|
libxkbfile \
|
||||||
|
lld \
|
||||||
|
meson \
|
||||||
|
ninja \
|
||||||
|
pango \
|
||||||
|
pixman \
|
||||||
|
pkgconf \
|
||||||
|
scdoc \
|
||||||
|
seatd \
|
||||||
|
systemd \
|
||||||
|
tomlplusplus \
|
||||||
|
wayland \
|
||||||
|
wayland-protocols \
|
||||||
|
xcb-util-errors \
|
||||||
|
xcb-util-renderutil \
|
||||||
|
xcb-util-wm
|
||||||
|
|
||||||
|
- name: Get Xorg pacman pkgs
|
||||||
|
shell: bash
|
||||||
|
if: inputs.INSTALL_XORG_PKGS == 'true'
|
||||||
|
run: |
|
||||||
|
pacman --noconfirm --noprogressbar -Sy \
|
||||||
|
xorg-fonts-encodings \
|
||||||
|
xorg-server-common \
|
||||||
|
xorg-setxkbmap \
|
||||||
|
xorg-xkbcomp \
|
||||||
|
xorg-xwayland
|
||||||
|
|
||||||
|
- name: Checkout Hyprland
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
# Fix an issue with actions/checkout where the checkout repo is not mark as safe
|
||||||
|
- name: Mark directory as safe for git
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
git config --global --add safe.directory /__w/Hyprland/Hyprland
|
111
.github/workflows/ci.yaml
vendored
111
.github/workflows/ci.yaml
vendored
|
@ -8,29 +8,20 @@ jobs:
|
||||||
container:
|
container:
|
||||||
image: archlinux
|
image: archlinux
|
||||||
steps:
|
steps:
|
||||||
- name: Get required pacman pkgs
|
- name: Checkout repository actions
|
||||||
run: |
|
uses: actions/checkout@v4
|
||||||
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
|
|
||||||
pacman --noconfirm --noprogressbar -Syyu
|
|
||||||
pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers xcb-util-errors xcb-util-renderutil xcb-util-wm xorg-fonts-encodings xorg-server-common xorg-setxkbmap xorg-xkbcomp xorg-xwayland git cmake go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd python libliftoff tomlplusplus
|
|
||||||
- name: Set up user
|
|
||||||
run: |
|
|
||||||
useradd -m githubuser
|
|
||||||
echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
|
|
||||||
- name: Install libdisplay-info from the AUR
|
|
||||||
run: |
|
|
||||||
su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
|
|
||||||
- name: Fix permissions for git
|
|
||||||
run: |
|
|
||||||
git config --global --add safe.directory /__w/Hyprland/Hyprland
|
|
||||||
- name: Checkout Hyprland
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
sparse-checkout: .github/actions
|
||||||
|
|
||||||
|
- name: Setup base
|
||||||
|
uses: ./.github/actions/setup_base
|
||||||
|
with:
|
||||||
|
INSTALL_XORG_PKGS: true
|
||||||
|
|
||||||
- name: Build Hyprland
|
- name: Build Hyprland
|
||||||
run: |
|
run: |
|
||||||
git submodule sync --recursive && git submodule update --init --force --recursive
|
|
||||||
make all
|
make all
|
||||||
|
|
||||||
- name: Compress and package artifacts
|
- name: Compress and package artifacts
|
||||||
run: |
|
run: |
|
||||||
mkdir x86_64-pc-linux-gnu
|
mkdir x86_64-pc-linux-gnu
|
||||||
|
@ -45,6 +36,7 @@ jobs:
|
||||||
cp -r example/ hyprland/
|
cp -r example/ hyprland/
|
||||||
cp -r assets/ hyprland/
|
cp -r assets/ hyprland/
|
||||||
tar -cvf Hyprland.tar.xz hyprland
|
tar -cvf Hyprland.tar.xz hyprland
|
||||||
|
|
||||||
- name: Release
|
- name: Release
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
|
@ -57,28 +49,19 @@ jobs:
|
||||||
container:
|
container:
|
||||||
image: archlinux
|
image: archlinux
|
||||||
steps:
|
steps:
|
||||||
- name: Download dependencies
|
- name: Checkout repository actions
|
||||||
run: |
|
uses: actions/checkout@v4
|
||||||
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
|
|
||||||
pacman --noconfirm --noprogressbar -Syyu
|
|
||||||
pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers git go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd cmake jq python libliftoff tomlplusplus
|
|
||||||
- name: Set up user
|
|
||||||
run: |
|
|
||||||
useradd -m githubuser
|
|
||||||
echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
|
|
||||||
- name: Install libdisplay-info from the AUR
|
|
||||||
run: |
|
|
||||||
su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
|
|
||||||
- name: Checkout Hyprland
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
with:
|
||||||
submodules: true
|
sparse-checkout: .github/actions
|
||||||
|
|
||||||
|
- name: Setup base
|
||||||
|
uses: ./.github/actions/setup_base
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
run: meson setup build -Ddefault_library=static
|
||||||
meson obj-x86_64-pc-linux-gnu \
|
|
||||||
-Ddefault_library=static
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
run: ninja -C obj-x86_64-pc-linux-gnu
|
run: ninja -C build
|
||||||
|
|
||||||
noxwayland:
|
noxwayland:
|
||||||
name: "Build Hyprland in pure Wayland (Arch)"
|
name: "Build Hyprland in pure Wayland (Arch)"
|
||||||
|
@ -86,24 +69,17 @@ jobs:
|
||||||
container:
|
container:
|
||||||
image: archlinux
|
image: archlinux
|
||||||
steps:
|
steps:
|
||||||
- name: Download dependencies
|
- name: Checkout repository actions
|
||||||
run: |
|
uses: actions/checkout@v4
|
||||||
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
|
|
||||||
pacman --noconfirm --noprogressbar -Syyu
|
|
||||||
pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers git cmake go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd libliftoff tomlplusplus
|
|
||||||
- name: Set up user
|
|
||||||
run: |
|
|
||||||
useradd -m githubuser
|
|
||||||
echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
|
|
||||||
- name: Install libdisplay-info from the AUR
|
|
||||||
run: |
|
|
||||||
su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
|
|
||||||
- name: Checkout Hyprland
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
with:
|
||||||
submodules: true
|
sparse-checkout: .github/actions
|
||||||
|
|
||||||
|
- name: Setup base
|
||||||
|
uses: ./.github/actions/setup_base
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: mkdir -p build && cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DNO_XWAYLAND:STRING=true -H./ -B./build -G Ninja
|
run: mkdir -p build && cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DNO_XWAYLAND:STRING=true -H./ -B./build -G Ninja
|
||||||
|
|
||||||
- name: Compile
|
- name: Compile
|
||||||
run: make release
|
run: make release
|
||||||
|
|
||||||
|
@ -113,25 +89,16 @@ jobs:
|
||||||
container:
|
container:
|
||||||
image: archlinux
|
image: archlinux
|
||||||
steps:
|
steps:
|
||||||
- name: Download dependencies
|
- name: Checkout repository actions
|
||||||
run: |
|
uses: actions/checkout@v4
|
||||||
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
|
|
||||||
pacman --noconfirm --noprogressbar -Syyu
|
|
||||||
pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers git go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd cmake jq python libliftoff tomlplusplus
|
|
||||||
- name: Set up user
|
|
||||||
run: |
|
|
||||||
useradd -m githubuser
|
|
||||||
echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
|
|
||||||
- name: Install libdisplay-info from the AUR
|
|
||||||
run: |
|
|
||||||
su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
|
|
||||||
- name: Checkout Hyprland
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
with:
|
||||||
submodules: true
|
sparse-checkout: .github/actions
|
||||||
|
|
||||||
|
- name: Setup base
|
||||||
|
uses: ./.github/actions/setup_base
|
||||||
|
|
||||||
- name: Configure
|
- name: Configure
|
||||||
run: |
|
run: meson setup build -Ddefault_library=static
|
||||||
meson obj-x86_64-pc-linux-gnu \
|
|
||||||
-Ddefault_library=static
|
|
||||||
- name: clang-format check
|
- name: clang-format check
|
||||||
run: ninja -C obj-x86_64-pc-linux-gnu clang-format-check
|
run: ninja -C build clang-format-check
|
||||||
|
|
23
.github/workflows/security-checks.yml
vendored
23
.github/workflows/security-checks.yml
vendored
|
@ -42,32 +42,23 @@ jobs:
|
||||||
language: [ 'cpp' ]
|
language: [ 'cpp' ]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository actions
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
sparse-checkout: .github/actions
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v2
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
|
|
||||||
- name: Init Hyprland build
|
- name: Setup base
|
||||||
run: |
|
uses: ./.github/actions/setup_base
|
||||||
sed -i 's/SigLevel = Required DatabaseOptional/SigLevel = Optional TrustAll/' /etc/pacman.conf
|
|
||||||
pacman --noconfirm --noprogressbar -Syyu
|
|
||||||
pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers xcb-util-errors xcb-util-renderutil xcb-util-wm xorg-fonts-encodings xorg-server-common xorg-setxkbmap xorg-xkbcomp xorg-xwayland git cmake go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd python libliftoff tomlplusplus
|
|
||||||
useradd -m githubuser
|
|
||||||
echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
|
|
||||||
su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
|
|
||||||
git config --global --add safe.directory /__w/Hyprland/Hyprland
|
|
||||||
|
|
||||||
- name: Checkout Hyprland
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
INSTALL_XORG_PKGS: true
|
||||||
|
|
||||||
- name: Build Hyprland
|
- name: Build Hyprland
|
||||||
run: |
|
run: |
|
||||||
git submodule sync --recursive && git submodule update --init --force --recursive
|
|
||||||
make all
|
make all
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
|
|
Loading…
Reference in a new issue