diff options
Diffstat (limited to '.github/workflows/deploy.js')
-rw-r--r-- | .github/workflows/deploy.js | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/.github/workflows/deploy.js b/.github/workflows/deploy.js new file mode 100644 index 00000000..82ebb1bd --- /dev/null +++ b/.github/workflows/deploy.js @@ -0,0 +1,73 @@ +module.exports = async ({github, context, core}) => { + try { + await github.rest.git.updateRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'tags/master-tot', + sha: context.sha + }) + } catch (error) { + core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`) + } + + let release + try { + release = await github.rest.repos.getReleaseByTag({ + owner: context.repo.owner, + repo: context.repo.repo, + tag: 'master-tot' + }) + } catch (error) { + core.setFailed(`get the master release; ${error.name}; ${error.message}`) + } + + try { + await github.rest.repos.updateRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id + }) + } catch (error) { + core.setFailed(`update the master release; ${error.name}; ${error.message}`) + } + + let release_assets + try { + release_assets = await github.rest.repos.listReleaseAssets({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id + }) + } catch (error) { + core.setFailed(`list release assets; ${error.name}; ${error.message}`) + } + + const { ARCHIVE } = process.env + for (const release_asset of release_assets.data) { + if (release_asset.name === `${ ARCHIVE }`) { + try { + await github.rest.repos.deleteReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + asset_id: release_asset.id + }) + } catch (error) { + core.setFailed(`delete ${ ARCHIVE }; ${error.name}; ${error.message}`) + } + } + } + + try { + const asset_path = `./build/install/${ ARCHIVE }` + const fs = require("fs") + await github.rest.repos.uploadReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id, + name: `${ ARCHIVE }`, + data: fs.readFileSync(asset_path) + }) + } catch (error) { + core.setFailed(`upload ${ ARCHIVE }; ${error.name}; ${error.message}`) + } +} |