| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- # This workflow will do a clean install of node dependencies, build the source
- # code and run tests across different versions of node.
- #
- # In case there is a new version in package.json and it's the main branch, it
- # will also tag and release this version.
- name: Test and Release
- on:
- push:
- branches: [ main ]
- pull_request:
- branches: [ main ]
-
- jobs:
- test:
- name: Test
- runs-on: ubuntu-latest
- steps:
- - name: Setup Node.js environment
- uses: actions/setup-node@v2.1.1
- - name: Checkout Dropzone
- uses: actions/checkout@v2
- - run: yarn install
- - run: yarn test
- # Auto tag when the package.json version has changed. A different job will see
- # this tag, publish it, and create a release for it.
- tag:
- name: Tag if package.json version increased
- runs-on: ubuntu-latest
- if: github.ref == 'refs/heads/main'
- needs: [test]
- outputs:
- tagname: ${{ steps.auto_tag.outputs.tagname }}
- steps:
- - name: Checkout Dropzone
- uses: actions/checkout@v2
- - name: Auto tag
- id: auto_tag
- uses: Klemensas/action-autotag@1.2.3
- env:
- GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- with:
- tag_prefix: v
- tag_message: "Please check the changelog for a list of changes"
- build:
- name: Build dist files
- runs-on: ubuntu-latest
- if: github.ref == 'refs/heads/main'
- needs: [test]
- steps:
- - name: Setup Node.js environment
- uses: actions/setup-node@v2.1.1
- - name: Checkout Dropzone
- uses: actions/checkout@v2
- - run: yarn install
- - name: Read package.json version
- uses: pchynoweth/action-get-npm-version@1.0.1
- id: package_version
- - name: Inject package version into javascript file
- uses: jacobtomlinson/gha-find-replace@master
- id: version_replace
- with:
- include: "src/dropzone.js"
- find: "version = \"dev\""
- replace: "version = \"${{ steps.package_version.outputs.version }}\""
- - name: Abort if version wasn't replaced
- if: steps.version_replace.outputs.modifiedFiles != 1
- run: exit 1
- - run: yarn build
- - name: Upload dist folder in case of release
- uses: actions/upload-artifact@v2
- with:
- name: dist
- path: dist
- release:
- name: Create GitHub release
- runs-on: ubuntu-latest
- needs: [build, tag]
- if: github.ref == 'refs/heads/main' && needs.tag.outputs.tagname != null
- steps:
- - name: Checkout Dropzone
- uses: actions/checkout@v2
- - name: Download dist folder
- uses: actions/download-artifact@v2
- with:
- name: dist
- path: dist
- - name: Compress dist folder
- run: zip dist -r dist
- - name: Release
- id: create_release
- uses: actions/create-release@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- tag_name: "${{ needs.tag.outputs.tagname }}"
- release_name: "Release ${{ needs.tag.outputs.tagname }}"
- body: "Please check the [changelog](https://github.com/dropzone/dropzone/blob/${{ github.sha }}/CHANGELOG.md) for a list of changes"
- draft: false
- prerelease: false
- - name: Upload Release Asset
- id: upload-release-asset
- uses: actions/upload-release-asset@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- upload_url: ${{ steps.create_release.outputs.upload_url }}
- asset_path: ./dist.zip
- asset_name: dist.zip
- asset_content_type: application/zip
- npm-publish:
- name: Publish new version to npm
- runs-on: ubuntu-latest
- needs: [build,release]
- steps:
- - name: Checkout Dropzone
- uses: actions/checkout@v2
- - name: Download dist folder
- uses: actions/download-artifact@v2
- with:
- name: dist
- path: dist
- - name: Publish
- uses: JS-DevTools/npm-publish@v1
- with:
- token: ${{ secrets.NPM_TOKEN }}
- trigger-remote-releases:
- name: Dispatch the "new-release" event to packagist and bower repo
- runs-on: ubuntu-latest
- needs: [tag,release]
- steps:
- - name: Dispatch "new-release" event to the dropzone-packagist repo.
- uses: peter-evans/repository-dispatch@v1
- with:
- token: ${{ secrets.DRONE_PAT }}
- repository: dropzone/dropzone-packagist
- event-type: new-release
- client-payload: '{"releaseTag": "${{ needs.tag.outputs.tagname }}"}'
- - name: Dispatch "new-release" event to the dropzone-bower repo.
- uses: peter-evans/repository-dispatch@v1
- with:
- token: ${{ secrets.DRONE_PAT }}
- repository: dropzone/dropzone-bower
- event-type: new-release
- client-payload: '{"releaseTag": "${{ needs.tag.outputs.tagname }}"}'
|