name: Build extension on: push: tags: ['**'] branches: - '*' - 'feature/**' - 'release/**' pull_request: types: [opened, synchronize] branches: - '*' - 'feature/**' - 'release/**' workflow_dispatch: jobs: build: runs-on: ubuntu-18.04 name: Build and package timeout-minutes: 10 steps: - uses: actions/checkout@v2 - name: Event Utilities uses: SchoofsKelvin/event-utilities@v1 id: utils with: artifact_prefix: "vscode-sshfs" artifact_extension: "vsix" - name: Use Node.js 14.x uses: actions/setup-node@v1 with: node-version: 14.x - name: Get Yarn cache directory id: yarn-cache run: echo "::set-output name=dir::$(yarn config get cacheFolder)" - name: Yarn cache uses: actions/cache@v2.1.4 with: path: ${{ steps.yarn-cache.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install dependencies run: yarn --immutable - name: Build extension run: yarn vsce package -o ${{ steps.utils.outputs.artifact_name }} --yarn - name: Upload a Build Artifact uses: actions/upload-artifact@v2.2.1 with: name: ${{ steps.utils.outputs.artifact_name }} path: ${{ steps.utils.outputs.artifact_name }} if-no-files-found: error - name: Create release id: create_release if: ${{ success() && steps.utils.outputs.tag_version }} uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ steps.utils.outputs.tag_version }} draft: true - name: Upload release asset id: upload_release_asset if: ${{ success() && steps.utils.outputs.tag_version }} uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ steps.utils.outputs.artifact_name }} asset_name: ${{ steps.utils.outputs.artifact_name }} asset_content_type: application/vsix