Skip to content

6. Build extension + upload - Commit from main #5154

6. Build extension + upload - Commit from main

6. Build extension + upload - Commit from main #5154

Workflow file for this run

name: 6. Build extension # and upload as release to GitHub
run-name: 6. Build extension + upload - ${{ inputs.trigger_reason }}
on:
workflow_dispatch:
inputs:
npm_channel:
description: 'Prisma CLI NPM Channel'
required: true
extension_version:
description: 'VS Code extension version'
required: true
branch:
description: 'Branch to run run this workflow on'
required: true
trigger_reason:
description: 'Information about what caused the publishing process in the first place.'
required: true
env:
ENVIRONMENT: ${{ secrets.ENVIRONMENT }}
PRISMA_TELEMETRY_INFORMATION: 'language-tools 6_build.yml'
SLACK_USERNAME: Prismo
SLACK_ICON_EMOJI: ':ship:'
SLACK_MSG_AUTHOR: prisma-bot
jobs:
build:
name: Build extension
runs-on: ubuntu-latest
timeout-minutes: 7
outputs:
tag_name: ${{ steps.names.outputs.tag_name }}
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
with:
ref: ${{ github.event.inputs.branch }}
token: ${{ secrets.PRISMA_BOT_TOKEN }}
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'
- name: Print inputs
run: |
echo ${{github.event.inputs.npm_channel}}
echo ${{github.event.inputs.extension_version}}
echo ${{github.event.inputs.branch}}
echo ${{github.event.inputs.trigger_reason}}
# Build the extension
- name: Install Dependencies
run: npm install && npm run bootstrap
- name: Build all packages
run: npm run compile
- name: Replace Readme for marketplace
run: node scripts/change_readme.js ${{ github.event.inputs.npm_channel }}
- name: Build vsix
run: cd packages/vscode && npm run package --
# Create GitHub Release and upload built result as asset
- name: Get git tag and asset name
id: names
run: node scripts/get_tag_name.js ${{ github.event.inputs.npm_channel }} ${{ github.event.inputs.extension_version }}
- name: create a GitHub release
id: create_release
# This action is not maintained since 3+ years!
# see https://github.com/actions/create-release/issues/119
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.names.outputs.tag_name }}
release_name: ${{ steps.names.outputs.tag_name }}
- name: Get asset name for release asset
id: get_asset_name
run: |
echo "asset_name=${{ steps.names.outputs.asset_name }}-${{ github.event.inputs.extension_version }}.vsix" >> "$GITHUB_OUTPUT"
- name: Upload Release Asset
id: upload-release-asset
# This action is not maintained since 3+ years!
# see https://github.com/actions/upload-release-asset/issues/78
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{github.workspace}}/packages/vscode/${{ steps.get_asset_name.outputs.asset_name }}
asset_name: ${{ steps.get_asset_name.outputs.asset_name }}
asset_content_type: application/zip
- name: Trigger next workflow to publish extension
uses: benc-uk/workflow-dispatch@v1
with:
workflow: 7. Publish
token: ${{ secrets.GH_TOKEN }}
inputs: '{ "asset_name": "${{ steps.get_asset_name.outputs.asset_name }}", "tag_name": "${{ steps.names.outputs.tag_name }}", "trigger_reason": "${{github.event.inputs.trigger_reason}}" }'
slack:
name: Send slack notification
runs-on: ubuntu-latest
timeout-minutes: 5
needs: [build]
if: always()
env:
SLACK_MESSAGE: '${{ needs.build.outputs.tag_name }} - ${{github.event.inputs.trigger_reason}} '
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
with:
ref: ${{ github.event.inputs.branch }}
- name: 'Set current job url in SLACK_FOOTER env var'
if: ${{ always() }}
run: echo "SLACK_FOOTER=<$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID|Click here to go to the job logs>" >> $GITHUB_ENV
- name: Slack Notification on Failure
if: ${{ failure() || needs.build.result == 'failure' }}
uses: rtCamp/[email protected]
env:
SLACK_TITLE: '6. Release failed :x:'
SLACK_COLOR: '#FF0000'
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_FAILURES }}
SLACK_CHANNEL: feed-language-tools-failures
- name: Slack Notification on Success
if: ${{ success() && needs.build.result == 'success' }}
uses: rtCamp/[email protected]
env:
SLACK_TITLE: '6. Release was successful :white_check_mark:'
SLACK_COLOR: '#008000'
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_CHANNEL: feed-language-tools