name: Build AppImage on: push: branches: - main tags: - v* paths-ignore: - web/** - doc/** pull_request: branches: - main paths-ignore: - web/** - doc/** concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-20.04 - ubuntu-22.04 arch: - x86_64 permissions: contents: write discussions: write steps: - run: sudo apt-get -qq update - name: Install dependencies run: | sudo apt-get install -yqq --no-install-recommends \ audacious-dev \ cmake \ gawk \ lcov \ libaudclient-dev \ libcairo2-dev \ libcurl4-gnutls-dev \ libdbus-glib-1-dev \ libfuse2 \ libglib2.0-dev \ libical-dev \ libimlib2-dev \ libircclient-dev \ libiw-dev \ liblua5.3-dev \ libmicrohttpd-dev \ libmysqlclient-dev \ libpulse-dev \ librsvg2-dev \ libsystemd-dev \ libwayland-bin \ libwayland-dev \ libx11-dev \ libxdamage-dev \ libxext-dev \ libxft-dev \ libxinerama-dev \ libxml2-dev \ libxmmsclient-dev \ libxnvctrl-dev \ ncurses-dev \ ninja-build \ pandoc \ python3 \ wayland-protocols \ && pip3 install --upgrade pyyaml - name: Checkout uses: actions/checkout@v4 - name: Get tags run: git fetch --tags origin - name: Get git version id: git-version run: echo "GIT_VERSION=$(git describe --tags --always)" | tee -a $GITHUB_ENV - name: Import GPG Deploy Key # only run on main branch if: github.ref == 'refs/heads/main' run: | echo "${{ secrets.GPG_DEPLOY_KEY }}" > appimage/secret.gpg gpg --import appimage/secret.gpg - name: Set clang version to 12 for ubuntu-20.04 if: matrix.os == 'ubuntu-20.04' run: | echo "CLANG_VERSION=12" | tee -a $GITHUB_ENV - name: Set clang version to 14 for ubuntu-22.04 if: matrix.os == 'ubuntu-22.04' run: | echo "CLANG_VERSION=14" | tee -a $GITHUB_ENV - name: Install libc++, set CC and CXX env vars run: | sudo apt-get install -yqq --no-install-recommends \ libc++-${CLANG_VERSION}-dev \ libc++abi-${CLANG_VERSION}-dev echo "CC=clang-${CLANG_VERSION}" | tee -a $GITHUB_ENV echo "CXX=clang++-${CLANG_VERSION}" | tee -a $GITHUB_ENV - name: Build AppImage run: ./appimage/build.sh - name: Upload AppImage artifact uses: actions/upload-artifact@v4 with: name: "conky-${{ matrix.os }}-${{ matrix.arch }}-${{ env.GIT_VERSION }}.AppImage" path: conky-x86_64.AppImage if-no-files-found: error - name: Upload AppImage checksum artifact uses: actions/upload-artifact@v4 with: name: "conky-${{ matrix.os }}-${{ matrix.arch }}-${{ env.GIT_VERSION }}.AppImage.sha256" path: conky-x86_64.AppImage.sha256 if-no-files-found: error - name: Upload man page artifact uses: actions/upload-artifact@v4 with: name: conky.1.gz path: conky.1.gz # conky.1.gz is created by all jobs! overwrite: true release: runs-on: ubuntu-latest needs: build steps: - name: Download all artifacts uses: actions/download-artifact@v4 with: path: ${{ github.workspace }}/artifacts - name: Create Conky Release id: create_release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: draft: false prerelease: false discussion_category_name: General generate_release_notes: true files: | conky-*.AppImage* conky.1.gz