Merge pull request #24 from freitas-labs/changeset-release/master #64
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: Publish to GitHub | |
on: | |
push: | |
branches: | |
- 'master' | |
jobs: | |
publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up npm | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
cache: 'npm' | |
- name: Install npm | |
run: npm install --frozen-lockfile | |
- name: Create Release Pull Request or Publish | |
id: changesets | |
uses: changesets/action@v1 | |
with: | |
publish: bash scripts/release.sh | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build project | |
if: steps.changesets.outputs.published == 'true' | |
id: build-project | |
run: npm run build | |
- name: Zip dist folder | |
id: zip-folder | |
if: steps.build-project.outcome == 'success' | |
uses: vimtor/action-zip@v1 | |
with: | |
files: dist | |
dest: dist.zip | |
- name: Upload Release Asset | |
if: steps.zip-folder.outcome == 'success' | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
async function getReleaseId() { | |
try { | |
const response = await github.rest.repos.getLatestRelease({ | |
owner: '${{ github.repository_owner }}', | |
repo: '${{ github.event.repository.name }}' | |
}); | |
console.log(`Id of the latest release is ${response.data.id} was found.`); | |
return response.data.id | |
} catch (error) { | |
console.error('Failed to get Id of the latest release', error); | |
throw error; | |
} | |
} | |
async function uploadReleaseAsset(release_id) { | |
try { | |
const response = await github.rest.repos.uploadReleaseAsset({ | |
owner: '${{ github.repository_owner }}', | |
repo: '${{ github.event.repository.name }}', | |
release_id: release_id, | |
name: 'dist.zip', | |
data: ${{ github.workspace }}/dist.zip | |
}); | |
console.log(`Uploaded asset to release ${release_id}.`); | |
} catch (error) { | |
console.error(`Failed to upload asset to release ${release_id}`, error); | |
throw error; | |
} | |
} | |
let release_id = await getReleaseId(); | |
console.log(`Release id: $release_id`) | |
await uploadReleaseAsset(release_id); |