-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
219 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# These are supported funding model platforms | ||
|
||
github: Josh5 | ||
patreon: Josh5 | ||
open_collective: # Replace with a single Open Collective username | ||
ko_fi: josh5coffee | ||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel | ||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry | ||
liberapay: # Replace with a single Liberapay username | ||
issuehunt: # Replace with a single IssueHunt username | ||
otechie: # Replace with a single Otechie username | ||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
name: Automatically build and publish this plugin | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'master' | ||
|
||
jobs: | ||
|
||
build-and-publish-plugin: | ||
runs-on: ubuntu-latest | ||
name: Build and publish plugin | ||
steps: | ||
|
||
# Checkout plugin source | ||
- name: Checkout plugin | ||
uses: actions/checkout@v2 | ||
with: | ||
path: plugin | ||
|
||
# Checkout the official plugin repo templates | ||
- name: Checkout official plugin repo templates branch | ||
uses: actions/checkout@v2 | ||
with: | ||
repository: Unmanic/unmanic-plugins | ||
ref: template | ||
path: template | ||
|
||
# Prepare build environment | ||
- name: Prepare build environment | ||
id: prepare | ||
run: | | ||
# Copy generate repo script to scripts directory | ||
cp -rfv ./template/scripts ./ | ||
if [ ! -e ./scripts/generate_repository.py ]; then | ||
echo "Unable to build repo. Could not find generator script." | ||
exit 1 | ||
fi | ||
# Create dummy repo config | ||
cat << EOF > config.json | ||
{ | ||
"id": "repository.tmp", | ||
"name": "Build Repo", | ||
"icon": "" | ||
} | ||
EOF | ||
# Read plugin id and version from info.json | ||
plugin_id=$(cat plugin/info.json | jq -r .id) | ||
plugin_version=$(cat plugin/info.json | jq -r .version) | ||
echo ::set-output name=plugin_id::${plugin_id} | ||
echo ::set-output name=plugin_version::${plugin_version} | ||
# Install plugin into source directory for building | ||
mkdir -p source/ | ||
mv -fv plugin source/${plugin_id} | ||
# Setup python environment | ||
- name: Set up Python 3.8 | ||
if: success() | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: 3.8 | ||
|
||
# Setup node environment | ||
- name: Set up node 16 | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: '16' | ||
|
||
# Generate repo | ||
- name: Generate repository from source | ||
if: success() | ||
id: generate_repo | ||
run: | | ||
cat ./source/${{ steps.prepare.outputs.plugin_id }}/info.json | ||
python ./scripts/generate_repository.py | ||
# Upload artifacts | ||
- uses: actions/upload-artifact@v2 | ||
with: | ||
name: plugin.${{ steps.prepare.outputs.plugin_id }}-v${{ steps.prepare.outputs.plugin_version }} | ||
path: repo/**/*.zip | ||
|
||
# Generate tagged release (should not be updated) | ||
- uses: mukunku/[email protected] | ||
id: check_tag_exists | ||
with: | ||
tag: ${{ steps.prepare.outputs.plugin_version }} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
- name: test check_tag_exists result | ||
run: echo "RES - '${{ steps.check_tag_exists.outputs.exists }}' -" | ||
- uses: ncipollo/release-action@v1 | ||
if: steps.check_tag_exists.outputs.exists == 'false' | ||
with: | ||
name: "Tagged Build: ${{ steps.prepare.outputs.plugin_version }}" | ||
body: "Versioned release" | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
artifacts: repo/**/*.zip | ||
generateReleaseNotes: true | ||
allowUpdates: false | ||
tag: ${{ steps.prepare.outputs.plugin_version }} | ||
commit: master | ||
|
||
# Generate latest development | ||
- uses: ncipollo/release-action@v1 | ||
with: | ||
name: "Development Build" | ||
body: "Latest development release" | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
artifacts: repo/**/*.zip | ||
generateReleaseNotes: true | ||
allowUpdates: true | ||
removeArtifacts: true | ||
replacesArtifacts: true | ||
tag: latest | ||
commit: master | ||
prerelease: true | ||
|
||
generate-pr-in-official-repo: | ||
runs-on: ubuntu-latest | ||
name: Generate PR for official repo | ||
permissions: | ||
contents: write | ||
actions: write | ||
pull-requests: write | ||
steps: | ||
|
||
# Configure | ||
- name: Prepare build environment | ||
id: config | ||
run: | | ||
echo ::set-output name=dest_repo::Unmanic/unmanic-plugins | ||
echo ::set-output name=dest_repo_branch::official | ||
echo ::set-output name=workflow_run_link::$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID | ||
# Checkout the destination plugin repo | ||
- name: Checkout destination plugin repo | ||
uses: actions/checkout@v2 | ||
with: | ||
repository: ${{ steps.config.outputs.dest_repo }} | ||
ref: ${{ steps.config.outputs.dest_repo_branch }} | ||
fetch-depth: 0 | ||
|
||
# Checkout plugin source | ||
- name: Checkout plugin | ||
uses: actions/checkout@v2 | ||
with: | ||
path: build/plugin | ||
|
||
# Prepare build environment | ||
- name: Prepare build environment | ||
id: prepare | ||
run: | | ||
# Read plugin id and version from info.json | ||
plugin_id=$(cat build/plugin/info.json | jq -r .id) | ||
plugin_version=$(cat build/plugin/info.json | jq -r .version) | ||
echo ::set-output name=plugin_id::${plugin_id} | ||
echo ::set-output name=plugin_version::${plugin_version} | ||
# Rename plugin directory for building | ||
rm -rf build/plugin.${plugin_id} | ||
mv -fv build/plugin build/plugin.${plugin_id} | ||
# Configure git user for commit messages | ||
- name: Configure git user | ||
uses: fregante/setup-git-user@v1 | ||
|
||
# Check for plugin updates and create a PR branch with any changes found | ||
- name: Generate PR branch | ||
id: execute | ||
run: | | ||
# # Set the commit user/email | ||
# git config --global user.email "${GITHUB_ACTOR}" | ||
# git config --global user.name "${GITHUB_ACTOR}@users.noreply.github.com" | ||
# Create plugin branch | ||
./.github/workflow_scripts/create_plugin_pr_branch.sh "${{ steps.prepare.outputs.plugin_id }}" | ||
# Parse result | ||
echo ::set-output name=result::$(cat ./result.txt) | ||
shell: bash | ||
|
||
# If a PR branch was created, force push branch to dest repo | ||
- name: Push PR branch | ||
if: steps.execute.outputs.result == 'success' | ||
run: | | ||
git config -l | grep 'http\..*\.extraheader' | cut -d= -f1 | xargs -L1 git config --unset-all | ||
git push -f https://token:${GH_TOKEN}@github.com/${{ steps.config.outputs.dest_repo }}.git "pr-${{ steps.prepare.outputs.plugin_id }}" | ||
# Add a small sleep here before running completing this job | ||
sleep 2 | ||
env: | ||
GH_TOKEN: "${{ secrets.GH_TOKEN }}" | ||
|
||
# If a PR branch was created, open a PR (if one is not already open) | ||
- name: Generate PR | ||
if: steps.execute.outputs.result == 'success' | ||
run: | | ||
# Execute the 'gh pr create' command and exit quietly without error if the command fails | ||
gh pr create \ | ||
--title "[${{ steps.prepare.outputs.plugin_id }}] v${{ steps.prepare.outputs.plugin_version }}" \ | ||
--body "PR automatically generated from [plugin source workflow](${{ steps.config.outputs.workflow_run_link }})" \ | ||
--base "${{ steps.config.outputs.dest_repo_branch }}" \ | ||
--head "pr-${{ steps.prepare.outputs.plugin_id }}" \ | ||
--repo "${{ steps.config.outputs.dest_repo }}" || true | ||
env: | ||
GITHUB_TOKEN: "${{ secrets.GH_TOKEN }}" |