automate release and generate artifacts using github action
This commit is contained in:
parent
ee04e2f81f
commit
b4c76332f9
|
@ -0,0 +1,116 @@
|
||||||
|
name: Create Release
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: "20"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
if: ${{ hashFiles('package.json') != '' }}
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Build the plugin
|
||||||
|
if: ${{ hashFiles('package.json') != '' }}
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Extract version from manifest.json
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
version=$(jq -r '.version' manifest.json)
|
||||||
|
echo "Version found: $version"
|
||||||
|
echo "manifest_version=$version" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Check if version exists
|
||||||
|
id: check_version
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
console.log("Checking version: " + process.env.manifest_version);
|
||||||
|
try {
|
||||||
|
const { data: releases } = await github.rest.repos.getReleaseByTag({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
tag: process.env.manifest_version
|
||||||
|
});
|
||||||
|
const exists = releases.tag_name === process.env.manifest_version;
|
||||||
|
console.log(`Version exists: ${exists}`);
|
||||||
|
core.setOutput("version_exists", exists);
|
||||||
|
} catch (error) {
|
||||||
|
if (error.status === 404) {
|
||||||
|
console.log('Release does not exist.');
|
||||||
|
core.setOutput("version_exists", false);
|
||||||
|
} else {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- name: Bump version if exists
|
||||||
|
if: ${{ steps.check_version.outputs.version_exists == 'true' }}
|
||||||
|
run: |
|
||||||
|
version=$(jq -r '.version' manifest.json)
|
||||||
|
IFS='.' read -ra parts <<< "$version"
|
||||||
|
parts[-1]=$((parts[-1] + 1))
|
||||||
|
new_version="${parts[*]}"
|
||||||
|
new_version=${new_version// /.}
|
||||||
|
echo "New version in manifest.json: $new_version"
|
||||||
|
jq ".version = \"$new_version\"" manifest.json > tmp_manifest.json
|
||||||
|
mv tmp_manifest.json manifest.json
|
||||||
|
echo "New version in package.json: $new_version"
|
||||||
|
jq ".version = \"$new_version\"" package.json > tmp_package.json
|
||||||
|
mv tmp_package.json package.json
|
||||||
|
git config user.name "github-actions"
|
||||||
|
git config user.email "github-actions@github.com"
|
||||||
|
git add manifest.json package.json
|
||||||
|
git commit -m "Bump version to $new_version"
|
||||||
|
git push
|
||||||
|
echo "manifest_version=$new_version" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
echo -e "\e[32mVersion bumped to $new_version\e[0m"
|
||||||
|
echo -e "\e[32mRelease will be created in new workflow\e[0m"
|
||||||
|
|
||||||
|
- name: Create GitHub Release
|
||||||
|
id: create_release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ env.manifest_version }}
|
||||||
|
release_name: Release ${{ env.manifest_version }}
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
- name: Upload Release Assets
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: ./main.js
|
||||||
|
asset_name: main.js
|
||||||
|
asset_content_type: application/javascript
|
||||||
|
|
||||||
|
- name: Upload manifest.json
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: ./manifest.json
|
||||||
|
asset_name: manifest.json
|
||||||
|
asset_content_type: application/json
|
Loading…
Reference in New Issue