Build Release #558
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: Build Release | |
on: | |
push: | |
branches: [ "main" ] | |
paths: | |
- 'package.json' | |
# Ignore changes in folders that are affected by the auto commit. (Node.js project) | |
#paths-ignore: | |
# - 'dist/**' | |
pull_request: | |
branches: [ "main" ] | |
workflow_dispatch: | |
inputs: | |
branch: | |
description: 'Branch to build' | |
required: true | |
default: 'main' | |
jobs: | |
build: | |
name: Build for Release | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
#node-version: [18.x, 20.x, 22.x] | |
node-version: [20.x] | |
permissions: | |
contents: write | |
outputs: | |
version: ${{ steps.get_version.outputs.version }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.branch || github.ref }} | |
- name: Get version from package.json | |
id: get_version | |
run: | | |
VERSION=$(jq -r '.version' package.json) | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
- name: Check if tag exists already | |
uses: mukunku/[email protected] | |
id: check_tag | |
with: | |
tag: "v${{ steps.get_version.outputs.version }}" | |
- name: Cancel if tag is already present | |
run: | | |
echo "Tag already present: v${{ steps.get_version.outputs.version }}. Not creating a new release" | |
gh run cancel ${{ github.run_id }} | |
gh run watch ${{ github.run_id }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: steps.check_tag.outputs.exists == 'true' | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- name: Build | |
run: | | |
npm install | |
npx webpack | |
- name: Create full yaml with version and manage_config as cb-lcars-lovelace.yaml | |
run: | | |
mkdir -p ./dist | |
./create_full_yaml.sh --output ./dist/cb-lcars-lovelace.yaml --path ./src/cb-lcars | |
echo "cblcars:" > ./dist/temp.yaml | |
echo " version: ${{ steps.get_version.outputs.version }}" >> ./dist/temp.yaml | |
echo " manage_config: true" >> ./dist/temp.yaml | |
cat ./dist/cb-lcars-lovelace.yaml >> ./dist/temp.yaml | |
mv -f ./dist/temp.yaml ./dist/cb-lcars-lovelace.yaml | |
echo "Head of generated cb-lcars-lovelace.yaml" | |
head -10 ./dist/cb-lcars-lovelace.yaml | |
echo "Copy yamls from src to dist for lint" | |
cp -v ./src/*.yaml ./dist | |
- name: Lint YAML files | |
uses: ibiqlik/[email protected] | |
with: | |
file_or_dir: ./dist/*.yaml | |
format: parsable | |
config_data: "{ rules: { line-length: disable, trailing-spaces: disable } }" | |
- name: Upload YAML files | |
uses: actions/[email protected] | |
with: | |
name: dist-files | |
#path: ./dist/*.yaml | |
path: ./dist | |
- name: Commit changes | |
uses: EndBug/add-and-commit@v9 | |
with: | |
message: Add dist files | |
committer_name: GitHub Actions | |
committer_email: 41898282+github-actions[bot]@users.noreply.github.com | |
add: './dist --force' | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
needs: build | |
permissions: | |
contents: write | |
deployments: write | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.branch || 'main' }} | |
- name: Get git sha | |
id: get_sha | |
run: echo "CURRENT_SHA=$(git log -1 --format='%H')" >> $GITHUB_ENV | |
- name: Check if tag exists already | |
uses: mukunku/[email protected] | |
id: check_tag | |
with: | |
tag: "v${{ needs.build.outputs.version }}" | |
- name: Cancel if tag is already present | |
run: | | |
echo "Tag already present: v${{ needs.build.outputs.version }}. Not creating a new release" | |
gh run cancel ${{ github.run_id }} | |
gh run watch ${{ github.run_id }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
if: steps.check_tag.outputs.exists == 'true' | |
- name: "Get previous release version" | |
id: last_release | |
uses: InsonusK/[email protected] | |
with: | |
myToken: ${{ secrets.GITHUB_TOKEN }} | |
#exclude_types: "draft|prerelease" | |
exclude_types: "draft" | |
- name: Create new tag | |
uses: rickstaa/[email protected] | |
id: tag_create | |
with: | |
tag: "v${{ needs.build.outputs.version }}" | |
commit_sha: "${{ env.CURRENT_SHA }}" | |
tag_exists_error: false | |
message: "Version ${{ needs.build.outputs.version }}" | |
# - name: Download artifacts | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: dist-yaml-files | |
# - name: Extract artifacts | |
# run: tar -xzf dist-yaml-files.tar.gz -C ./dist | |
# - name: Generate release changelog | |
# id: changelog | |
# uses: heinrichreimer/[email protected] | |
# with: | |
# token: ${{ secrets.GITHUB_TOKEN }} | |
# sinceTag: ${{ steps.last_release.outputs.tag_name }} | |
# headerLabel: "# Notable changes since ${{ steps.last_release.outputs.tag_name }}" | |
# stripGeneratorNotice: true | |
- name: Create GitHub Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
prerelease: ${{ contains(needs.build.outputs.version, 'alpha') || contains(needs.build.outputs.version, 'beta') }} | |
#body: "${{ steps.changelog.outputs.changelog }}" | |
name: "Version ${{ needs.build.outputs.version }}" | |
tag_name: "v${{ needs.build.outputs.version }}" | |
target_commitish: "${{ env.CURRENT_SHA }}" |