samuele-cozzi/obsidian-marp-slides

View on GitHub
.github/workflows/release-please.yml

Summary

Maintainability
Test Coverage
on:
  push:
    branches:
      - main

env:
  PLUGIN_NAME: obsidian-marp-slides
  
name: release
jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: google-github-actions/release-please-action@v3
        id: release
        with:
          token: ${{ secrets.PAT }}
          release-type: node
          package-name: release-please-action
          config-file: release-please-config.json
          include-v-in-tag: false
          changelog-path: docs/CHANGELOG.md
    outputs:
      release_created: ${{ steps.release.outputs.release_created }}
      tag_name: ${{ steps.release.outputs.tag_name }}
      upload_url: ${{ steps.release.outputs.upload_url }}         
  release-plugin:
    needs: release-please
    runs-on: ubuntu-latest
    if: ${{ needs.release-please.outputs.release_created }}
    steps:
      - uses: actions/checkout@v2
        # these if statements ensure that a publication only occurs when
        # a new release is created:
        with:
          persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
          fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
          token: ${{secrets.PAT}} # use a personal acces token so that other actions can trigger
          ref: main
      # update the manifest.json with the tag version
      - name: Update manifest version
        uses: jossef/action-set-json-field@v1
        with:
          file: manifest.json
          field: version
          value: ${{ needs.release-please.outputs.tag_name }}
      - name: Commit manifest
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git branch --show-current
          git add manifest.json
          git status
          git commit -m updateVersion
          git pull
      # push the commit
      - name: Push changes
        uses: ad-m/github-push-action@v0.6.0
        with:
          github_token: ${{secrets.GITHUB_TOKEN}}
          branch: main
      - name: Build
        id: build
        run: |
          npm install
          npm run build
          mkdir ${{ env.PLUGIN_NAME }}
          cp main.js manifest.json styles.css ${{ env.PLUGIN_NAME }}
          zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
          ls
          echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)"
      - name: Test & publish code coverage
        uses: paambaati/codeclimate-action@v3.2.0
        env:
          CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
        with:
          coverageCommand: npm run test
          coverageLocations: |
            ${{github.workspace}}/tests/coverage/lcov.info:lcov
      - name: Upload zip file
        id: upload-zip
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release-please.outputs.upload_url }}
          asset_path: ./${{ env.PLUGIN_NAME }}.zip
          asset_name: ${{ env.PLUGIN_NAME }}-${{ needs.release-please.outputs.tag_name }}.zip
          asset_content_type: application/zip
      - name: Upload main.js
        id: upload-main
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release-please.outputs.upload_url }}
          asset_path: ./main.js
          asset_name: main.js
          asset_content_type: text/javascript
      - name: Upload manifest.json
        id: upload-manifest
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release-please.outputs.upload_url }}
          asset_path: ./manifest.json
          asset_name: manifest.json
          asset_content_type: application/json
      - name: Upload styles.css
        id: upload-css
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release-please.outputs.upload_url }}
          asset_path: ./styles.css
          asset_name: styles.css
          asset_content_type: text/css