How to use GitHub Actions to automatically generate release notes and create releases. This process can be broken down into several steps:
Step 1: Create a GitHub workflow file
First, you need to create a workflow file in the .github/workflows directory of your repository, such as release.yml.
Step 2: Define workflow trigger conditions
In this file, you will define the trigger conditions for the workflow. Typically, these workflows are triggered when pushing tags to the repository.
yamlname: Release Workflow on: push: tags: - 'v*'
Step 3: Define workflow tasks
Next, you need to define the tasks to execute, such as installing dependencies, running tests, or building the project.
yamljobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v1 with: node-version: '14' - name: Install dependencies run: npm install - name: Run tests run: npm test - name: Build run: npm run build
Step 4: Automatically generate release notes
We can use GitHub Actions like softprops/action-gh-release to automatically generate release notes. This action can automatically capture commit information since the last release and generate a changelog.
yaml- name: Create Release id: create_release uses: softprops/action-gh-release@v1 with: files: | path/to/asset1 path/to/asset2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Step 5: Create releases
In the step above where Release is created, the softprops/action-gh-release action has helped you create a GitHub Release with automatically generated release notes and related build artifacts (if you provide file paths).
Practical Example
Suppose we have a Node.js project, and we want to automatically create a Release and release notes every time a new tag is pushed. Here is a simplified example of .github/workflows/release.yml:
yamlname: Release Workflow on: push: tags: - 'v*' jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v1 with: node-version: '14' - name: Install dependencies run: npm install - name: Run tests run: npm test - name: Build project run: npm run build - name: Generate and Publish Release id: create_release uses: softprops/action-gh-release@v1 with: files: | dist/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
This workflow file will automatically execute the following steps:
- When you push a tag starting with
v, the workflow is triggered. - Check out the repository and set up the Node.js environment.
- Install dependencies and run the project's tests.
- Build the project.
- Use
softprops/action-gh-releaseto create a GitHub Release, automatically generate release notes, and upload build artifacts.
By doing this, the release process is automated, ensuring that each version's release is consistent and traceable. It also reduces the possibility of human errors and saves valuable time for the team.