mirror of
https://github.com/unraid/api.git
synced 2026-01-06 00:30:22 -06:00
100 lines
3.2 KiB
YAML
100 lines
3.2 KiB
YAML
name: Publish Release to Digital Ocean
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: 'Tag to update'
|
|
required: true
|
|
|
|
|
|
jobs:
|
|
publish-to-digital-ocean:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Download Release Artifacts (Plugins)
|
|
uses: dsaltares/fetch-gh-release-asset@master
|
|
with:
|
|
file: ".*"
|
|
regex: true
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
target: "./"
|
|
version: ${{ inputs.version && format('tags/{0}', inputs.version) || 'latest' }}
|
|
|
|
- uses: cardinalby/git-get-release-action@v1
|
|
id: release-info
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
latest: true
|
|
prerelease: false
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20.x'
|
|
- run: npm install html-sloppy-escaper@2 xml2js
|
|
- name: Update Plugin Changelog
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const fs = require('fs');
|
|
const { escape } = require('html-sloppy-escaper');
|
|
const releaseNotes = escapeHtml(`${{ steps.release-info.outputs.body }}`);
|
|
|
|
if (!releaseNotes) {
|
|
console.error('No release notes found');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Read the plugin file
|
|
const pluginPath = 'dynamix.unraid.net.plg';
|
|
|
|
if (!fs.existsSync(pluginPath)) {
|
|
console.error('Plugin file not found:', pluginPath);
|
|
process.exit(1);
|
|
}
|
|
|
|
let pluginContent = fs.readFileSync(pluginPath, 'utf8');
|
|
|
|
// Replace the changelog section using CDATA
|
|
pluginContent = pluginContent.replace(
|
|
/<CHANGES>[\s\S]*?<\/CHANGES>/,
|
|
`<CHANGES>\n${releaseNotes}\n</CHANGES>`
|
|
);
|
|
|
|
// Validate the plugin file is valid XML
|
|
const xml2js = require('xml2js');
|
|
const parser = new xml2js.Parser();
|
|
parser.parseStringPromise(pluginContent).then((result) => {
|
|
console.log('Plugin file is valid XML');
|
|
|
|
// Write back to file
|
|
fs.writeFileSync(pluginPath, pluginContent);
|
|
}).catch((err) => {
|
|
console.error('Plugin file is not valid XML');
|
|
process.exit(1);
|
|
});
|
|
|
|
- name: Upload All Release Files to DO Spaces
|
|
uses: BetaHuhn/do-spaces-action@v2
|
|
with:
|
|
access_key: ${{ secrets.DO_ACCESS_KEY }}
|
|
secret_key: ${{ secrets.DO_SECRET_KEY }}
|
|
space_name: ${{ secrets.DO_SPACE_NAME }}
|
|
space_region: ${{ secrets.DO_SPACE_REGION }}
|
|
source: "."
|
|
out_dir: unraid-api
|
|
|
|
- name: Upload Staging Plugin to Cloudflare Bucket
|
|
uses: jakejarvis/s3-sync-action@v0.5.1
|
|
env:
|
|
AWS_S3_ENDPOINT: ${{ secrets.CF_ENDPOINT }}
|
|
AWS_S3_BUCKET: ${{ secrets.CF_BUCKET }}
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.CF_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_SECRET_ACCESS_KEY }}
|
|
AWS_REGION: 'auto'
|
|
SOURCE_DIR: "."
|
|
DEST_DIR: unraid-api
|