Test for a release workflow that actually builds a complete packadge #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release Workflow | |
on: [push] | |
jobs: | |
release-management: | |
runs-on: ubuntu-latest | |
steps: | |
# Step 1: Checkout the code | |
- name: Checkout Code | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.head_ref }} # Checkout the correct branch name | |
fetch-depth: 0 # Fetch the whole repo history | |
# Documentation: https://github.com/actions/checkout | |
# Explanation: This step checks out the source code from the GitHub repository, ensuring that the workflow has access to the latest version of the code. | |
# Step 2: Install Node.js dependencies using npm | |
- name: Install npm dependencies | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '18.x' # Specify Node.js version | |
# Documentation: https://github.com/actions/setup-node | |
# Explanation: This step sets up a Node.js environment and installs the project's dependencies listed in the `package.json` file using npm. | |
- run: npm install | |
# Documentation: https://docs.npmjs.com/cli/v7/commands/npm-install | |
# Explanation: This step runs `npm install` to install the Node.js dependencies required for the project. | |
# Step 3: Install PHP dependencies using Composer | |
- name: Install Composer dependencies | |
uses: php-actions/composer@v6 | |
with: | |
php_version: '7.4' # Specify PHP version if needed | |
# Documentation: https://github.com/php-actions/composer | |
# Explanation: This step sets up Composer in the GitHub Actions environment and installs the PHP dependencies listed in the `composer.json` file. | |
- run: composer install --no-progress --no-interaction --prefer-dist | |
# Documentation: https://getcomposer.org/doc/03-cli.md#install | |
# Explanation: This step runs `composer install` to install the PHP dependencies required for the project without any interactive prompts and with optimized autoloading. | |
# Step 4: Generate Git version information | |
- name: Git Version | |
id: version | |
uses: codacy/[email protected] | |
with: | |
release-branch: main | |
# Documentation: https://github.com/marketplace/actions/git-version | |
# Explanation: This step calculates the version of the software based on the Git tags and branch information, storing the result in the `version` output. | |
# Step 5: Extract repository description | |
- name: Extract repository description | |
id: repo-description | |
run: | | |
description=$(jq -r '.description' <(curl -s https://api.github.com/repos/${{ github.repository }})) | |
echo "REPO_DESCRIPTION=$description" >> $GITHUB_ENV | |
# Documentation: https://docs.github.com/en/rest/reference/repos#get-a-repository | |
# Explanation: This step retrieves the description of the GitHub repository using the GitHub API and stores it in the environment variables. | |
# Step 6: Run Changelog CI | |
- name: Run Changelog CI | |
uses: saadmk11/[email protected] | |
with: | |
release_version: ${{ steps.version.outputs.version }} | |
config_file: changelog-ci-config.json | |
# Documentation: https://github.com/saadmk11/changelog-ci | |
# Explanation: This step generates a changelog for the current release using the Changelog CI tool. | |
# Step 7: Output the version | |
- name: Use the version | |
run: | | |
echo ${{ steps.version.outputs.version }} | |
# Explanation: This step outputs the calculated version number to the console for reference. | |
# Step 8: Archive the release files | |
- name: Archive Release | |
uses: thedoctor0/zip-release@main | |
with: | |
type: 'zip' | |
filename: 'release.zip' | |
exclusions: '*.git* *.vscode* .coverage-frontend* .docker* .tests* .specs.ts* .mocks.ts* .tests* .editorconfig .eslintrc.js .phpmd.xml .phpunit.xml .psalm.xml .eslintrc.js stylelint.config.js webpack.config.js' | |
# Documentation: https://github.com/marketplace/actions/zip-release | |
# Explanation: This step creates a zip archive of the repository, excluding certain files and directories as specified. | |
# Step 9: Create a new release on GitHub | |
- name: Create GitHub Release | |
uses: marvinpinto/action-automatic-releases@latest | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
automatic_release_tag: ${{ steps.version.outputs.version }} | |
prerelease: false | |
title: "Release ${{ steps.version.outputs.version }}" | |
files: | | |
LICENSE.md | |
release.zip | |
# Documentation: https://github.com/marvinpinto/action-automatic-releases | |
# Explanation: This step creates a new release on GitHub, uploading the generated release files, and tagging the release with the calculated version. |