What is GitHub Actions?
GitHub Actions is an automated workflow and continuous integration/continuous deployment (CI/CD) platform provided by GitHub. It allows developers to define and automate various tasks such as building, testing, and deploying code directly within their GitHub repositories. Users can create custom workflows using YAML configuration files to streamline their software development processes and improve collaboration among development teams.
How this help me ?
My scalper app, written in Python and PyQt6, requires a Windows virtual machine to build a Windows executable. However, I encountered an issue yesterday when my virtual machine ran out of space and became unresponsive. Unable to create another virtual machine, I began exploring alternatives and discovered that GitHub Actions could provide a solution.
With GitHub Actions, I set up a workflow that automates the build process. When I push changes to the main branch, the workflow initiates, runs the necessary job, and then uploads the artifact seamlessly. It's a straightforward and efficient solution to my build needs.
Steps & Example:
- Github repo create a workflow build file
.github/workflows/build.yml
Name: Build Windows Executable - This is the name of your GitHub Actions workflow.
on: This section specifies when the workflow should be triggered.
push: The workflow will be triggered when there is a push event to the repository.
branches: It specifies the branches on which the workflow should run. In this case, it's set to main.
jobs: The workflow consists of a single job named build.
runs-on: ${{ matrix.os }}: This sets the operating system for the job based on the matrix defined later. In this case, it's set to run on the latest Windows.
strategy: This section defines the build matrix for the job. It allows you to run the job on different configurations, but in this case, it's just targeting Windows.
steps: These are the individual tasks that the workflow will perform:
actions/checkout@v2: This step checks out the code from your repository so that subsequent steps can access it.
actions/setup-python@v2: This step sets up a Python environment. It specifies that Python version 3.11 should be used.
run: pip install -r requirement.txt pyinstaller: This step installs the Python dependencies listed in requirement.txt and PyInstaller.
run: pyinstaller --noconsole RichDotinScalperApp.py: This step uses PyInstaller to create a Windows executable for your Python application. The --noconsole flag indicates that it should be a GUI application without a console window.
run: ./dist/RichDotinScalperApp/RichDotinScalperApp: This step optionally attempts to run the newly created executable to verify that it works, assuming it doesn't require user interaction.
run: |: This is a multi-line script that copies some files into the directory where the executable was created. It copies sn_expiry_v23.db and config.ini into the dist/RichDotinScalperApp directory.
actions/upload-artifact@v2: Finally, this step uploads the contents of the dist/RichDotinScalperApp directory as an artifact with the name RichDotinScalperApp-win. This makes the executable and associated files available for later stages or for download as part of the workflow run.
- I just made the small changes and pushed it, you can see the workflow job created and in queue.
- We can also see the job logs and details where it failed like that details.
- Once the job is complete you can see the executable uploaded as artefact we can download the same and distribute or release.
Thanks for reading,
SN
great
ReplyDeleteI enjoyed reading this post because it explains GitHub Actions from a practical, real-world perspective rather than just describing CI/CD concepts. The example of using GitHub-hosted runners to build a Windows executable for a Python and PyQt6 application shows how automation can solve common development challenges without maintaining dedicated virtual machines. The step-by-step breakdown of the workflow file also makes it much easier for beginners to understand what each action is doing behind the scenes. Developers interested in modern software delivery practices can also explore Web Development Projects to learn more about automated development and deployment workflows.
ReplyDeleteWhat stood out to me was how a simple push to the main branch can trigger an entire build pipeline, package the application, and make the generated executable available as an artifact. Features like these significantly reduce manual effort and help teams maintain consistent build processes. Since the workflow is also building a Python application, learners looking to strengthen their Python development skills can check out Python Training Courses to gain hands-on experience with Python, automation, and deployment-related tools.
ReplyDelete