All Projects → bilelmoussaoui → flatpak-github-actions

bilelmoussaoui / flatpak-github-actions

Licence: MIT license
Build your Flatpak application using Github Actions

Programming Languages

javascript
184084 projects - #8 most used programming language
Dockerfile
14818 projects
Meson
512 projects

Projects that are alternatives of or similar to flatpak-github-actions

flatpak-vscode
Integrate Flatpak with VSCode
Stars: ✭ 48 (-34.25%)
Mutual labels:  flatpak, flatpak-builder
rubocop-linter-action
Rubocop Linter Action: A GitHub Action to run Rubocop against your code!
Stars: ✭ 86 (+17.81%)
Mutual labels:  github-actions
nextjs-github-pages
🚀 Deploy a Next.js app to Github Pages via Github Actions.
Stars: ✭ 89 (+21.92%)
Mutual labels:  github-actions
generate-og-image
Generate open graph images with Github Action from Markdown files
Stars: ✭ 32 (-56.16%)
Mutual labels:  github-actions
setup-arduino-cli
GitHub Action to setup Arduino CLI
Stars: ✭ 59 (-19.18%)
Mutual labels:  github-actions
actions
A Collection of GitHub Actions
Stars: ✭ 91 (+24.66%)
Mutual labels:  github-actions
gh fsync
🔄 GitHub action to sync files across repos in GitHub
Stars: ✭ 17 (-76.71%)
Mutual labels:  github-actions
action-eslint-fix
GitHub Action to run `eslint` with `--fix` option and commit fixes
Stars: ✭ 20 (-72.6%)
Mutual labels:  github-actions
github-action-scp
⬆️ Copy a folder to a remote server using SSH
Stars: ✭ 123 (+68.49%)
Mutual labels:  github-actions
creatly-backend
🚀 Creatly backend app
Stars: ✭ 71 (-2.74%)
Mutual labels:  github-actions
upload-rust-binary-action
GitHub Action for building and uploading Rust binary to GitHub Releases.
Stars: ✭ 47 (-35.62%)
Mutual labels:  github-actions
pin-github-action
Pin your GitHub actions to a specific hash
Stars: ✭ 38 (-47.95%)
Mutual labels:  github-actions
riak-haskell-client
A fast Haskell client library for the Riak decentralized data store
Stars: ✭ 48 (-34.25%)
Mutual labels:  github-actions
blackcater
Using Node.js to generate my Github profile readme automatically.
Stars: ✭ 84 (+15.07%)
Mutual labels:  github-actions
mylib
Шаблон кросплатформенного CMake-проекта для языка C++ 🇬🇧 Modern CMake crossplatform project template for C++
Stars: ✭ 49 (-32.88%)
Mutual labels:  github-actions
github-deploy-actions
This action will auto deploy to target branch when it get triggered
Stars: ✭ 24 (-67.12%)
Mutual labels:  github-actions
webring
“วงแหวนเว็บ” แห่งนี้สร้างขึ้นเพื่อส่งเสริมให้ศิลปิน นักออกแบบ และนักพัฒนาชาวไทย สร้างเว็บไซต์ของตัวเองและแบ่งปันการเข้าชมซึ่งกันและกัน
Stars: ✭ 125 (+71.23%)
Mutual labels:  github-actions
rails7-on-docker
Working Rails 7 demo application without JavaScript bundling, running in Docker. No node.js or webpack.
Stars: ✭ 111 (+52.05%)
Mutual labels:  github-actions
setup-just
🤖 GitHub Action to install the just command runner
Stars: ✭ 21 (-71.23%)
Mutual labels:  github-actions
celos
CelOS is a simple, easy-to-use, flatpak centric Linux distribution for everyone based on Ubuntu 20.04.
Stars: ✭ 18 (-75.34%)
Mutual labels:  flatpak

Flatpak Github Actions

CI

Build and deploy your Flatpak application using Github Actions

Flatpak logo

How to use

Building stage

Add a new workflow by creating a .yml file under .github/workflows with this content

on:
  push:
    branches: [main]
  pull_request:
name: CI
jobs:
  flatpak:
    name: "Flatpak"
    runs-on: ubuntu-latest
    container:
      image: bilelmoussaoui/flatpak-github-actions:gnome-40
      options: --privileged
    steps:
    - uses: actions/checkout@v2
    - uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4
      with:
        bundle: palette.flatpak
        manifest-path: org.gnome.zbrown.Palette.yml
        cache-key: flatpak-builder-${{ github.sha }}

Inputs

Name Description Required Default
manifest-path The relative path of the manifest file Required -
bundle The bundle name Optional app.flatpak
repository-name The repository name, used to fetch the runtime when the user download the Flatpak bundle or when building the application Optional flathub
repository-url The repository url, used to fetch the runtime when the user download the Flatpak bundle or when building the application Optional https://flathub.org/repo/flathub.flatpakrepo
run-tests Enable/Disable running tests. This overrides the flatpak-builder option of the same name, which invokes make check or ninja test. Network and X11 access is enabled, with a display server provided by xvfb-run. Optional false
branch The default flatpak branch Optional master
cache Enable/Disable caching .flatpak-builder directory Optional true
cache-key Specifies the cache key. CPU arch is automatically added, so there is no need to add it to the cache key. Optional flatpak-builder-${sha256(manifestPath)}
arch Specifies the CPU architecture to build for Optional x86_64
mirror-screenshots-url Specifies the URL to mirror screenshots Optional -

Building for multiple CPU architectures

To build for CPU architectures other than x86_64, the GitHub Actions workflow has to either natively be running on that architecture (e.g. on an aarch64 self-hosted GitHub Actions runner), or the container used must be configured to emulate the requested architecture (e.g. with QEMU).

For example, to build a Flatpak for both x86_64 and aarch64 using emulation, use the following workflow as a guide:

on:
  push:
    branches: [main]
  pull_request:
name: CI
jobs:
  flatpak:
    name: "Flatpak"
    runs-on: ubuntu-latest
    container:
      image: bilelmoussaoui/flatpak-github-actions:gnome-40
      options: --privileged
    strategy:
      matrix:
        arch: [x86_64, aarch64]
      # Don't fail the whole workflow if one architecture fails
      fail-fast: false
    steps:
    - uses: actions/checkout@v2
    # Docker is required by the docker/setup-qemu-action which enables emulation
    - name: Install deps
      run: |
        dnf -y install docker
    - name: Set up QEMU
      id: qemu
      uses: docker/setup-qemu-action@v1
      with:
        platforms: arm64
    - uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4
      with:
        bundle: palette.flatpak
        manifest-path: org.gnome.zbrown.Palette.yml
        cache-key: flatpak-builder-${{ github.sha }}
        arch: ${{ matrix.arch }}

Building for Automated Tests

As described in the Inputs documentation, specifying run-tests: true will amend the Flatpak manifest to enable Network and X11 access automatically. Any other changes to the manifest must be made manually, such as building the tests (e.g. -Dtests=true) or any other options (e.g. --buildtype=debugoptimized).

Most developers will want to run tests on pull requests, before merging into the main branch of a repository. To ensure your manifest is building the correct code, you should set the sources entry for your project to "type": "dir" with the path key relative to the manifest's location in the repository.

In the example below, the manifest is located at /build-aux/flatpak/org.gnome.zbrown.Palette.json, so the path key is set to ../../. If the manifest were in the project root instead, the correct usage would be "path": "./".

{
    "app-id" : "org.gnome.zbrown.Palette",
    "runtime" : "org.gnome.Platform",
    "runtime-version" : "master",
    "sdk" : "org.gnome.Sdk",
    "command" : "org.gnome.zbrown.Palette",
    "finish-args" : [
        "--share=ipc",
        "--device=dri",
        "--socket=fallback-x11",
        "--socket=wayland",
        "--filesystem=xdg-run/dconf",
        "--filesystem=~/.config/dconf:ro",
        "--talk-name=ca.desrt.dconf",
        "--env=DCONF_USER_CONFIG_DIR=.config/dconf"
    ],
    "modules" : [
        {
            "name" : "palette",
            "buildsystem" : "meson",
            "config-opts" : [
                "--prefix=/app",
                "--buildtype=debugoptimized",
                "-Dtests=true"
            ],
            "sources" : [
                {
                    "name" : "palette",
                    "buildsystem" : "meson",
                    "type" : "dir",
                    "path" : "../../"
                }
            ]
        }
    ]
}

Deployment stage

If you want to deploy the successfully built Flatpak application to a remote repository

on:
  push:
    branches: [main]
name: Deploy
jobs:
  flatpak:
    name: "Flatpak"
    runs-on: ubuntu-latest
    container:
      image: bilelmoussaoui/flatpak-github-actions:gnome-40
      options: --privileged
    steps:
    - uses: actions/checkout@v2
    - uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4
      name: "Build"
      with:
        bundle: palette.flatpak
        manifest-path: org.gnome.zbrown.Palette.yml
        cache-key: flatpak-builder-${{ github.sha }}
    - uses: bilelmoussaoui/flatpak-github-actions/flat-manager@v3
      name: "Deploy"
      with:
        repository: elementary
        flat-manager-url: https://flatpak-api.elementary.io
        token: some_very_hidden_token
        end-of-life: "The application has been renamed to..."
        end-of-life-rebase: "org.zbrown.Palette"

Inputs

Name Description Required Default
repository The repository to push the build into Required -
flat-manager-url The flat-manager remote URL Required -
token A flat-manager token Required -
end-of-life Reason for end of life Optional -
end-of-life-rebase The new app-id Optional -

Docker Image

The Docker image used for the action consists of 2 parts: The base image, based on Fedora and which can be found here, and the specific image of the runtime you choose, which is generated through this GitHub Actions workflow.

You can specify the specific runtime you need to use through the image tags:

Runtime Version Tag Example
Freedesktop SDK 20.08 freedesktop-20.08 image: bilelmoussaoui/flatpak-github-actions:freedesktop-20.08
Freedesktop SDK 21.08 freedesktop-21.08 image: bilelmoussaoui/flatpak-github-actions:freedesktop-21.08
GNOME 3.38 gnome-3.38 image: bilelmoussaoui/flatpak-github-actions:gnome-3.38
GNOME 40 gnome-40 image: bilelmoussaoui/flatpak-github-actions:gnome-40
GNOME 41 gnome-41 image: bilelmoussaoui/flatpak-github-actions:gnome-41
GNOME 42 gnome-42 image: bilelmoussaoui/flatpak-github-actions:gnome-42
GNOME master gnome-nightly image: bilelmoussaoui/flatpak-github-actions:gnome-nightly
KDE 5.15 kde-5.15 image: bilelmoussaoui/flatpak-github-actions:kde-5.15
KDE 5.15-21.08 kde-5.15-21.08 image: bilelmoussaoui/flatpak-github-actions:kde-5.15-21.08
KDE 6.2 kde-6.2 image: bilelmoussaoui/flatpak-github-actions:kde-6.2
KDE 6.3 kde-6.3 image: bilelmoussaoui/flatpak-github-actions:kde-6.3
elementary BaseApp juno juno image: bilelmoussaoui/flatpak-github-actions:elementary-juno
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].