diff options
| author | Xiaotian Wu <[email protected]> | 2025-05-18 17:30:06 +0800 | 
|---|---|---|
| committer | Oz Tiram <[email protected]> | 2025-05-19 09:49:24 +0200 | 
| commit | 1a1a8b4972182c3ee3f95e9d08f111ab6caf1dd9 (patch) | |
| tree | 85775b3313256fa766575bae7165914e4520e57f | |
| parent | 1cc61bef81c28fba1277cd996c32621b441da068 (diff) | |
| download | caja-1a1a8b4972182c3ee3f95e9d08f111ab6caf1dd9.tar.bz2 caja-1a1a8b4972182c3ee3f95e9d08f111ab6caf1dd9.tar.xz  | |
Try to use github action
| -rw-r--r-- | .github/dependabot.yml | 8 | ||||
| -rwxr-xr-x | .github/workflows/archlinux.sh | 41 | ||||
| -rwxr-xr-x | .github/workflows/builds.sh | 65 | ||||
| -rw-r--r-- | .github/workflows/builds.yml | 79 | ||||
| -rwxr-xr-x | .github/workflows/debian.sh | 53 | ||||
| -rwxr-xr-x | .github/workflows/fedora.sh | 47 | ||||
| -rw-r--r-- | .github/workflows/release.yml | 36 | ||||
| -rwxr-xr-x | .github/workflows/ubuntu.sh | 50 | 
8 files changed, 379 insertions, 0 deletions
diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..80851cd3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +# Enable dependabot to keep our GHA pins automatically +# updated, so we don't fall too far behind in the future +version: 2 +updates: +  - package-ecosystem: github-actions +    directory: "/" +    schedule: +      interval: weekly diff --git a/.github/workflows/archlinux.sh b/.github/workflows/archlinux.sh new file mode 100755 index 00000000..a43d05e1 --- /dev/null +++ b/.github/workflows/archlinux.sh @@ -0,0 +1,41 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { +	echo "::group::${1}" +} +infoend() { +	echo "::endgroup::" +} + +# Required packages on Archlinux +requires=( +	autoconf-archive +	ccache +	clang +	exempi +	file +	gcc +	gcc +	git +	glib2-devel +	gobject-introspection +	gvfs +	intltool +	libexif +	libnotify +	libsm +	make +	mate-common +	mate-desktop +	which +	xorgproto +) + +infobegin "Update system" +pacman --noconfirm -Syu +infoend + +infobegin "Install dependency packages" +pacman --noconfirm -S ${requires[@]} +infoend diff --git a/.github/workflows/builds.sh b/.github/workflows/builds.sh new file mode 100755 index 00000000..c2e7b589 --- /dev/null +++ b/.github/workflows/builds.sh @@ -0,0 +1,65 @@ +#!/usr/bin/bash + +set -e +set -o pipefail + +CPUS=$(grep processor /proc/cpuinfo | wc -l) + +# Use grouped output messages +infobegin() { +	echo "::group::${1}" +} +infoend() { +	echo "::endgroup::" +} + +# Run meson first, then run autotools +# Because meson dist requires a clean git workspace +# Autotools will modify some files (such as po, etc.), making them dirty. +if [ -f meson.build ]; then + +	infobegin "Configure (meson)" +	meson setup _build --prefix=/usr +	infoend + +	infobegin "Build (meson)" +	meson compile -C _build +	infoend + +	infobegin "Test (meson)" +	ninja -C _build test +	infoend + +	infobegin "Dist (meson)" +	# Git safedirectory stop ninja dist +	# https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9 +	# https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory +	git config --global --add safe.directory ${PWD} +	ninja -C _build dist +	infoend +fi + +if [ -f autogen.sh ]; then +	infobegin "Configure (autotools)" +	NOCONFIGURE=1 ./autogen.sh +	./configure --prefix=/usr --enable-compile-warnings=maximum || { +		cat config.log +		exit 1 +	} +	infoend + +	infobegin "Build (autotools)" +	make -j ${CPUS} +	infoend + +	infobegin "Check (autotools)" +	make -j ${CPUS} check || { +		find -name test-suite.log -exec cat {} \; +		# (check-program:25212): Gtk-WARNING **: 12:05:15.567: cannot open display: +	} +	infoend + +	infobegin "Distcheck (autotools)" +	make -j ${CPUS} distcheck +	infoend +fi diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml new file mode 100644 index 00000000..65d7e2eb --- /dev/null +++ b/.github/workflows/builds.yml @@ -0,0 +1,79 @@ +name: CI Build + +on: +  push: +    branches: +      - master +  pull_request: +    branches: +      - master +  workflow_dispatch: + +# cancel already running builds of the same branch or pull request +concurrency: +  group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.head_ref || github.sha }} +  cancel-in-progress: true + +jobs: +  build: +    name: Build on ${{matrix.container}} (using ${{matrix.cc}}) +    runs-on: ubuntu-latest +    container: +      image: ${{matrix.container}} +      volumes: +        - /tmp/.cache +        - /var/cache/apt + +    strategy: +      fail-fast: false # don't cancel other jobs in the matrix if one fails +      matrix: +        container: +          [ +            "debian:testing", +            "fedora:latest", +            "ubuntu:rolling", +            "archlinux:latest", +          ] +        cc: ["gcc"] +        cxx: ["g++"] +        include: +          - container: "archlinux:latest" +            cc: "clang" +            cxx: "clang++" + +    env: +      # Speed up build with ccache +      CC: ccache ${{ matrix.cc }} +      CXX: ccache ${{ matrix.cxx }} +      CONTAINER: ${{ matrix.container }} + +    steps: +      - name: Setup environment variables +        id: distro-name +        shell: bash +        run: | +          split=(${CONTAINER//:/ }) +          distro=${split[0]} +          short_sha=${SHA:0:8} +          echo "DISTRO=$distro" | tee -a  $GITHUB_ENV +      - name: Install git command +        shell: bash +        run: | +          echo "::group::Install git ..." +          apt-get update -qq && apt-get install --assume-yes git || true +          dnf update -y && dnf install -y git || true +          pacman --noconfirm -Sy git || true +          echo "::endgroup::" +      - name: Repository checkout +        uses: actions/checkout@v4 +        with: +          submodules: "true" +      - name: Install dependency packages +        run: .github/workflows/${{ env.DISTRO }}.sh +      - name: Enable ccache to speed up builds +        uses: hendrikmuhs/[email protected] +        with: +          key: ${{ env.DISTRO }}-${{ matrix.cc }} + +      - name: Build the source code +        run: .github/workflows/builds.sh diff --git a/.github/workflows/debian.sh b/.github/workflows/debian.sh new file mode 100755 index 00000000..93386f70 --- /dev/null +++ b/.github/workflows/debian.sh @@ -0,0 +1,53 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { +	echo "::group::${1}" +} +infoend() { +	echo "::endgroup::" +} + +# Required packages on Debian +requires=( +	autopoint +	ccache +	clang +	clang-tools +	cppcheck +	git +	gobject-introspection +	gtk-doc-tools +	intltool +	libdconf-dev +	libexempi-dev +	libexif-dev +	libgail-3-dev +	libgirepository1.0-dev +	libglib2.0-dev +	libgtk-3-dev +	libgtk-layer-shell-dev +	libmate-desktop-dev +	libnotify-dev +	libpango1.0-dev +	libselinux1-dev +	libstartup-notification0-dev +	libx11-dev +	libxml2-dev +	mate-common +	mate-desktop +	python3-lxml +	quilt +	shared-mime-info +	xvfb +) + +infobegin "Update system" +apt-get update -qq +infoend + +infobegin "Install dependency packages" +env DEBIAN_FRONTEND=noninteractive \ +	apt-get install --assume-yes \ +	${requires[@]} +infoend diff --git a/.github/workflows/fedora.sh b/.github/workflows/fedora.sh new file mode 100755 index 00000000..eb8bc3f5 --- /dev/null +++ b/.github/workflows/fedora.sh @@ -0,0 +1,47 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { +	echo "::group::${1}" +} +infoend() { +	echo "::endgroup::" +} + +# Required packages on Fedora +requires=( +	autoconf-archive +	cairo-gobject-devel +	ccache +	clang +	clang-analyzer +	cppcheck-htmlreport +	dbus-glib-devel +	desktop-file-utils +	exempi-devel +	gcc +	git +	gobject-introspection-devel +	gtk-layer-shell-devel +	gtk3-devel +	libSM-devel +	libexif-devel +	libnotify-devel +	libselinux-devel +	libxml2-devel +	make +	mate-common +	mate-desktop-devel +	pango-devel +	python3-lxml +	redhat-rpm-config +	startup-notification-devel +) + +infobegin "Update system" +dnf update -y +infoend + +infobegin "Install dependency packages" +dnf install -y ${requires[@]} +infoend diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..f1ddcb68 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,36 @@ +name: Release Version +on: +  push: +    tags: +      - "v*.*.*" + +env: +  MATE_DESKTOP_VERSION: 1.28.2 +  CACHE_PATH: /tmp/.cache + +jobs: +  release: +    name: Release New Version +    runs-on: ubuntu-latest +    steps: +      - name: Repository checkout +        uses: actions/checkout@v3 +        with: +          submodules: "true" + +      - name: Install dependency packages +        run: sudo .github/workflows/ubuntu.sh + +      - name: Build the source code +        run: .github/workflows/builds.sh + +      - name: Install GH CLI +        uses: dev-hanz-ops/[email protected] +        with: +          gh-cli-version: 2.39.1 + +      - name: Create github release +        run: | +          gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --generate-notes caja-*.tar.xz +        env: +          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/ubuntu.sh b/.github/workflows/ubuntu.sh new file mode 100755 index 00000000..93c079f7 --- /dev/null +++ b/.github/workflows/ubuntu.sh @@ -0,0 +1,50 @@ +#!/usr/bin/bash + +# Use grouped output messages +infobegin() { +	echo "::group::${1}" +} +infoend() { +	echo "::endgroup::" +} + +# Required packages on Ubuntu +requires=( +	autopoint +	ccache +	clang +	clang-tools +	git +	gobject-introspection +	gtk-doc-tools +	intltool +	libdconf-dev +	libexempi-dev +	libexif-dev +	libgail-3-dev +	libgirepository1.0-dev +	libglib2.0-dev +	libgtk-3-dev +	libgtk-layer-shell-dev +	libmate-desktop-dev +	libnotify-dev +	libpango1.0-dev +	libselinux1-dev +	libstartup-notification0-dev +	libx11-dev +	libxml2-dev +	mate-common +	python3-lxml +	quilt +	shared-mime-info +) + +infobegin "Update system" +apt-get update -y +infoend + +infobegin "Install dependency packages" +env DEBIAN_FRONTEND=noninteractive \ +	apt-get install --assume-yes \ +	${requires[@]} +infoend  | 
