Skip to content

impl: support uri handling #62

impl: support uri handling

impl: support uri handling #62

Workflow file for this run

# GitHub Actions workflow for testing and preparing the plugin release.
# GitHub Actions reference: https://help.github.com/en/actions
name: Coder Toolbox Plugin Build
on:
push:
branches:
- main
pull_request:
jobs:
# Run plugin tests on every supported platform.
test:
strategy:
matrix:
platform:
- ubuntu-latest
- macos-latest
- windows-latest
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/[email protected]
- uses: actions/setup-java@v4
with:
distribution: zulu
java-version: 21
cache: gradle
- uses: gradle/[email protected]
# Run tests
- run: ./gradlew test --info
# Collect Tests Result of failed tests
- if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: tests-result
path: ${{ github.workspace }}/build/reports/tests
build:
name: Build
needs: test
runs-on: ubuntu-latest
outputs:
version: ${{ steps.properties.outputs.version }}
changelog: ${{ steps.properties.outputs.changelog }}
steps:
# Check out current repository
- name: Fetch Sources
uses: actions/[email protected]
# Setup Java 21 environment for the next steps
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: zulu
java-version: 21
cache: gradle
# Set environment variables
- name: Export Properties
id: properties
shell: bash
run: |
PROPERTIES="$(./gradlew properties --console=plain -q)"
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
NAME="$(echo "$PROPERTIES" | grep "^group:" | cut -f2- -d ' ')"
CHANGELOG="$(./gradlew getChangelog --unreleased --no-header --console=plain -q)"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "name=$NAME" >> $GITHUB_OUTPUT
echo "$CHANGELOG" > RELEASE_NOTES.md
# Run plugin build
- name: Run Build
run: ./gradlew clean pluginZip --info
# Store already-built plugin as an artifact for downloading
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: zip-artifacts
path: ./build/distributions/*.zip
- name: Upload Release Notes
uses: actions/upload-artifact@v4
with:
name: release-notes
path: RELEASE_NOTES.md
# Prepare a draft release for GitHub Releases page for the manual verification
# If accepted and published, release workflow would be triggered
releaseDraft:
name: Release Draft
if: github.event_name != 'pull_request'
needs: build
runs-on: ubuntu-latest
steps:
# Check out current repository
- name: Fetch Sources
uses: actions/[email protected]
# Remove old release drafts by using GitHub CLI
- name: Remove Old Release Drafts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api repos/${{ github.repository }}/releases \
--jq '.[] | select(.draft == true) | .id' \
| xargs -I '{}' gh api -X DELETE repos/${{ github.repository }}/releases/{}
- name: Download Build Artifacts
uses: actions/download-artifact@v4
with:
name: zip-artifacts
path: artifacts/
- name: Display the Zip files that are going to be attached
run: ls -R artifacts/
- name: Download Release Notes
uses: actions/download-artifact@v4
with:
name: release-notes
path: notes/
# Create new release draft - which is not publicly visible and requires manual acceptance
- name: Create Release Draft
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create v${{ needs.build.outputs.version }} \
--draft artifacts/* \
--target ${GITHUB_REF_NAME} \
--title "v${{ needs.build.outputs.version }}" \
--notes-file notes/RELEASE_NOTES.md