Test GitHub Actions before Merge
Before integrating them into the main branch, it is imperative to make sure they are operating properly. This is a simple testing procedure:
Method 1: Add Workflow Trigger on Pull Requests
- Add the following trigger to your workflow file so that testing can be enabled without affecting the main branch:
name: premergedemo
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
pre-merge:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install awscli
This makes it possible for the workflow to start as soon as a pull request is made or updated, giving developers a method to test changes independently.
Event Triggers
- push: When a push event is made to the main branch, the process is initiated.
- pull_request: When a pull request event occurs that aims to pull from the main branch, the workflow also executes.
on:
push:
branches: [main]
pull_request:
branches: [main]
Jobs
- Describes the pre-merge job, which operates in the Ubuntu environment (ubuntu-latest). When the workflow is activated, the steps in this task will be carried out.
jobs:
pre-merge:
runs-on: ubuntu-latest
Steps
- The code repository is checked out in this step at the version that v2 of the GitHub Actions checkout action specifies.
steps:
- uses: actions/checkout@v2
- Using the actions/setup-python action, this step configures Python in the workflow environment. Version 3.10 of Python is required to be utilized.
- uses: actions/setup-python@v2
with:
python-version: '3.10'
- Updates pip to the most recent iteration.
- Uses pip to install the AWS Command Line Interface (awscli). If the workflow communicates with AWS services, this might be required.
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install awscli
Steps to premerge
Step 1: Here we having pre-merger repository as shown image below.
Step 2: We have two branches they are main and dev as shown image below.
Step 3: I have made the changes and pushed and the pull request raised dynamically. Here the all requests passed. For your reference refer the below image.
Step4: If you want to close the pull request you can click on close request and close the pll request.
Method 2: Create Draft Pull Requests
- Create a draft pull request from your feature branch to the main branch.
- This action activates the workflow, making it visible under the “Actions” menu.
- Any updates to the pull request branch automatically trigger the workflow, allowing continuous testing.
Method 3: Use GitHub CLI for Workflow Dispatch
- To manually start the workflow on your branch without merging into the main branch, use the GitHub CLI (gh):
gh workflow run your-workflow-name --ref your-branch
- This command executes the workflow on the specified branch, enabling testing without merging changes prematurely.
- The GitHub CLI supports input parameters for fine-grained control over workflow execution.
Method 4: Optional: Use Local Testing with act
- For local testing, consider using act, a tool that simulates GitHub Actions locally.
- While act offers offline testing, testing directly within the GitHub repository is feasible and convenient.
- After testing, you can delete the workflow files if necessary.
How to Test GitHub Actions Before Merge?
GitHub Actions work as minor helpers, take care of tasks automatically whenever something goes wrong in your GitHub project. GitHub Actions could be likened as an ever-present friend who is ready to help anytime you need it.
Consider how nice it would be to have your code automatically tested following every modification, or how nice it would be to have your website updated quickly when you publish new changes. You aren’t even going to need to exert any effort—GitHub Actions can handle all of that for you.
They are very important because they make your life simpler and save you time. GitHub Actions can be used to automate tedious duties so you can focus on more important tasks, like writing fantastic code, instead of completing them by hand.