Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pipeline - automatic appimage and release creator #68

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

sadraiiali
Copy link

soccerwindow2-appimage.mp4

Overview

This merge request introduces the capability to automatically build and release the latest version of soccerwindow2 to GitHub. It enables the creation of the application's AppImage within the GitHub action pipeline, which is subsequently saved to the release on GitHub. This enhancement simplifies the download and execution process of the soccerwindow2 for RoboCup users.

Technical Implementation

The merge request involves the addition of the following files to the repository:

  • .github/workflows/main.yml : This is the GitHub action pipeline responsible for building the AppImage and publishing the release.
  • utils/appimage/*: This directory contains all files related to the building of the AppImage, including:
utils/appimage
├── build_appimage.sh -> Bash script for building the AppImage.
├── build_code.sh -> Bash script for compiling the code.
├── docker-entrypoint.sh -> Script executed to compile the code and build the AppImage within the Docker image.
├── Dockerfile.builder-2004 -> Docker image for building the AppImage, based on Ubuntu 20.04.
├── rcssmonitor.desktop -> Desktop file of soccerwindow2.
└── rcssmonitor.png -> Image of soccerwindow2.
  • CMakeLists.txt -> I changed the version to 2.0.0 to be in the semantic format [MORE].

  • It seems like for building soccerwindow2 we need to build the librcsc too, in the build_code.sh file I do clone and build the librcsc too.

In the event that the release name already exists in the GitHub releases, the creation process will be bypassed.

How to use

To create a new release, the following steps must be undertaken:

  • Update the application version in the CMakeLists.txt file.

Furthermore, after each push to the registry, the AppImage can be utilized to validate the correctness of the proposed changes.

External Resources Utilized

  • linuxdeploy/linuxdeploy - [LINK]
  • linuxdeploy/linuxdeploy-plugin-qt - [LINK]
  • ncipollo/release-action - [LINK]

Additional Resources

  • AppImage Documentation [LINK]
  • Proof of Concept Example [LINK]

@hidehisaakiyama
Copy link
Member

Thanks for the automated system.
I'm not planning to make the specific version release so far. So, the date information is used as the temporal version number instead of a semantic format. If an automatic build system is introduced to this repository, one possible method would be to publish it as a nightly build when the master branch or develop branch is updated.

@sadraiiali
Copy link
Author

Thanks for reviewing the pull request.
so how do you think it is better to going forward, I can think of these options:
1- I can change the version number with commit id + date format. something like:
2024-04-28-a23bc
and on each push on master you will get a nightly release.

2- I can trigger the build on git tags. so if you push a tag I can create a release with that tag.
for example you tag a commit with nightly-2 then the release would be same

3- I can trigger the build on every push but do not create release automatically and you get the builded artifact (appimage) from the pipeline.

so what do you think ? :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants