name: Build and Release on: workflow_dispatch jobs: build-and-publish: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'yarn' - name: Install dependencies run: yarn install --frozen-lockfile - name: Build project run: yarn build - name: Get version id: version run: | VERSION=$(jq -r '.version' build/manifest.json) echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "build_time=$(date +'%Y-%m-%d %H:%M:%S')" >> $GITHUB_OUTPUT - name: Zip build artifacts run: | cd build zip -r ../extension.zip . - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.version.outputs.version }} release_name: Release v${{ steps.version.outputs.version }} body: | Branch: ${{ github.ref_name }} Commit: ${{ github.sha }} Build Time: ${{ steps.version.outputs.build_time }} draft: false prerelease: false - name: 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: ./extension.zip asset_name: yakit-chrome-extension-v${{ steps.version.outputs.version }}.zip asset_content_type: application/zip - name: Upload Extension To OSS uses: tvrcgo/upload-to-oss@master with: key-id: ${{ secrets.OSS_KEY_ID }} key-secret: ${{ secrets.OSS_KEY_SECRET }} region: oss-accelerate bucket: yaklang assets: | extension.zip:/chrome-extension/yakit-chrome-extension-v${{ steps.version.outputs.version }}.zip - name: Update OSS latest version file run: echo ${{ steps.version.outputs.version }} > ./extension-version.txt - name: Upload Version File to OSS uses: tvrcgo/upload-to-oss@master with: key-id: ${{ secrets.OSS_KEY_ID }} key-secret: ${{ secrets.OSS_KEY_SECRET }} region: oss-accelerate bucket: yaklang assets: | ./extension-version.txt:/chrome-extension/latest-version.txt