on: workflow_dispatch: inputs: semverIncrement: description: Increment major/minor/patch using values of m/i/p required: true default: i name: Releaser jobs: release: name: Create Release runs-on: ubuntu-latest outputs: version: ${{ steps.semver.outputs.semver }} permissions: contents: write packages: write steps: - name: Checkout repository uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: teslamate token: ${{ secrets.GITHUB_TOKEN }} - name: Get latest release run: | echo "latest_release=$(curl --header "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" --silent https://api.github.com/repos/$GITHUB_REPOSITORY/releases/latest | jq -r .tag_name | sed s/v// )" >> $GITHUB_ENV - name: Increment semver id: semver uses: matt-FFFFFF/simple-semver@967d66a65b0c5afae2a815ab2d311f66a32293ab # v0.1.1 with: semver-input: ${{ env.latest_release }} increment: ${{ github.event.inputs.semverIncrement }} - name: Get TeslaMate release notes run: | touch CHANGELOG.txt last_release_date=$(gh release list --repo lildude/ha-addon-teslamate --limit=1 --json=publishedAt | jq -r '.[].publishedAt') gh pr list --repo lildude/ha-addon-teslamate --state=merged --search="Update TeslaMate in:title closed:>$last_release_date" --limit=1 --json=body --jq '.[].body' | sed -n "/<\/summary>/,/<\/details>/p" | sed '1d;$d' > changelog.tmp if [ -s changelog.tmp ]; then echo "## TeslaMate Release Notes" > CHANGELOG.txt cat changelog.tmp >> CHANGELOG.txt fi echo -e "---\n\n## Add-on Release Notes\n\n" >> CHANGELOG.txt env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create tag run: | git config --global user.email "actions.no-reply@github.com" git config --global user.name "GitHub Actions" git tag -a v${{ steps.semver.outputs.semver }} -m 'Release automation' git push --tags working-directory: ${{ github.workspace }}/teslamate - name: Create release uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 with: tag_name: v${{ steps.semver.outputs.semver }} body_path: CHANGELOG.txt generate_release_notes: true draft: false prerelease: false token: ${{ secrets.GITHUB_TOKEN }} - name: Checkout addon repo uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: repo repository: lildude/ha-addons token: ${{ secrets.HA_ADDONS_PAT }} - name: Update addon repo run: | cp -vf ${{ github.workspace }}/teslamate/*.png ${{ github.workspace }}/repo/teslamate cp -vf ${{ github.workspace }}/teslamate/*.md ${{ github.workspace }}/repo/teslamate jq '.version="${{ steps.semver.outputs.semver }}"' < ${{ github.workspace }}/teslamate/config.json > ${{ github.workspace }}/repo/teslamate/config.json echo "$(curl --silent --header "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/repos/$GITHUB_REPOSITORY/releases/latest | jq -r .body)" > ${{ github.workspace }}/repo/teslamate/CHANGELOG.md - name: Add changes to addon repo run: | if [ "$(git status -s)" ]; then git add . git commit -m 'Update ha-addon-teslamate to v${{ steps.semver.outputs.semver }}' git push fi working-directory: ${{ github.workspace }}/repo/teslamate build: name: Build addon needs: release permissions: contents: read packages: write uses: ./.github/workflows/publisher.yaml with: version: ${{ needs.release.outputs.version }}