1+ # GitHub Actions Workflow created for testing and preparing the plugin release in following steps:
2+ # - validate Gradle Wrapper,
3+ # - run 'test' and 'verifyPlugin' tasks,
4+ # - run 'buildPlugin' task and prepare artifact for the further tests,
5+ # - run 'runPluginVerifier' task,
6+ #
7+ # Workflow is triggered on push and pull_request events.
8+ #
9+ # GitHub Actions reference: https://help.github.com/en/actions
10+ #
11+
12+
13+ name : Coder Gateway Plugin Build
14+ on :
15+ # Trigger the workflow on pushes to only the 'main' branch (this avoids duplicate checks being run e.g. for dependabot pull requests)
16+ push :
17+ branches : [ main ]
18+ # Trigger the workflow on any pull request
19+ pull_request :
20+
21+ jobs :
22+
23+ # Run Gradle Wrapper Validation Action to verify the wrapper's checksum
24+ # Run verifyPlugin, IntelliJ Plugin Verifier, and test Gradle tasks
25+ # Build plugin and provide the artifact for the next workflow jobs
26+ build :
27+ name : Build
28+ runs-on : ubuntu-latest
29+ outputs :
30+ version : ${{ steps.properties.outputs.version }}
31+ changelog : ${{ steps.properties.outputs.changelog }}
32+ steps :
33+
34+ # Check out current repository
35+ - name : Fetch Sources
36+ uses : actions/checkout@v2.4.0
37+
38+ # Validate wrapper
39+ - name : Gradle Wrapper Validation
40+ uses : gradle/wrapper-validation-action@v1.0.4
41+
42+ # Setup Java 11 environment for the next steps
43+ - name : Setup Java
44+ uses : actions/setup-java@v2
45+ with :
46+ distribution : zulu
47+ java-version : 11
48+ cache : gradle
49+
50+ # Set environment variables
51+ - name : Export Properties
52+ id : properties
53+ shell : bash
54+ run : |
55+ PROPERTIES="$(./gradlew properties --console=plain -q)"
56+ VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
57+ NAME="$(echo "$PROPERTIES" | grep "^pluginName:" | cut -f2- -d ' ')"
58+ CHANGELOG="$(./gradlew getChangelog --unreleased --no-header --console=plain -q)"
59+ CHANGELOG="${CHANGELOG//'%'/'%25'}"
60+ CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
61+ CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
62+ echo "::set-output name=version::$VERSION"
63+ echo "::set-output name=name::$NAME"
64+ echo "::set-output name=changelog::$CHANGELOG"
65+ echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier"
66+ ./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier
67+ # Run tests
68+ - name : Run Tests
69+ run : ./gradlew test
70+
71+ # Collect Tests Result of failed tests
72+ - name : Collect Tests Result
73+ if : ${{ failure() }}
74+ uses : actions/upload-artifact@v2
75+ with :
76+ name : tests-result
77+ path : ${{ github.workspace }}/build/reports/tests
78+
79+ # Cache Plugin Verifier IDEs
80+ - name : Setup Plugin Verifier IDEs Cache
81+ uses : actions/cache@v2.1.7
82+ with :
83+ path : ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides
84+ key : plugin-verifier-${{ hashFiles('build/listProductsReleases.txt') }}
85+
86+ # Run Verify Plugin task and IntelliJ Plugin Verifier tool
87+ - name : Run Plugin Verification tasks
88+ run : ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }}
89+
90+ # Collect Plugin Verifier Result
91+ - name : Collect Plugin Verifier Result
92+ if : ${{ always() }}
93+ uses : actions/upload-artifact@v2
94+ with :
95+ name : pluginVerifier-result
96+ path : ${{ github.workspace }}/build/reports/pluginVerifier
97+
98+ # Prepare plugin archive content for creating artifact
99+ - name : Prepare Plugin Artifact
100+ id : artifact
101+ shell : bash
102+ run : |
103+ cd ${{ github.workspace }}/build/distributions
104+ FILENAME=`ls *.zip`
105+ unzip "$FILENAME" -d content
106+ echo "::set-output name=filename::${FILENAME:0:-4}"
107+ # Store already-built plugin as an artifact for downloading
108+ - name : Upload artifact
109+ uses : actions/upload-artifact@v2.2.4
110+ with :
111+ name : ${{ steps.artifact.outputs.filename }}
112+ path : ./build/distributions/content/*/*
0 commit comments