Skip to content
This repository has been archived by the owner on Oct 13, 2024. It is now read-only.

ci: use prerelease logic #344

Merged
merged 1 commit into from
May 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 4 additions & 25 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,16 @@ on:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
setup_release:
name: Setup Release
outputs:
changelog_changes: ${{ steps.setup_release.outputs.changelog_changes }}
changelog_date: ${{ steps.setup_release.outputs.changelog_date }}
changelog_exists: ${{ steps.setup_release.outputs.changelog_exists }}
changelog_release_exists: ${{ steps.setup_release.outputs.changelog_release_exists }}
changelog_url: ${{ steps.setup_release.outputs.changelog_url }}
changelog_version: ${{ steps.setup_release.outputs.changelog_version }}
publish_pre_release: ${{ steps.setup_release.outputs.publish_pre_release }}
publish_release: ${{ steps.setup_release.outputs.publish_release }}
publish_stable_release: ${{ steps.setup_release.outputs.publish_stable_release }}
release_body: ${{ steps.setup_release.outputs.release_body }}
release_build: ${{ steps.setup_release.outputs.release_build }}
release_commit: ${{ steps.setup_release.outputs.release_commit }}
release_generate_release_notes: ${{ steps.setup_release.outputs.release_generate_release_notes }}
release_tag: ${{ steps.setup_release.outputs.release_tag }}
release_version: ${{ steps.setup_release.outputs.release_version }}
runs-on: ubuntu-latest
Expand All @@ -39,7 +29,7 @@ jobs:

- name: Setup Release
id: setup_release
uses: LizardByte/setup-release-action@v2024.516.190324
uses: LizardByte/setup-release-action@v2024.520.193857
with:
dotnet: true
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -99,23 +89,12 @@ jobs:

- name: Create/Update GitHub Release
if: ${{ needs.setup_release.outputs.publish_release == 'true' }}
uses: LizardByte/create-release-action@v2024.516.190229
uses: LizardByte/create-release-action@v2024.520.193838
with:
allowUpdates: true
body: ''
discussionCategory: announcements
generateReleaseNotes: true
name: ${{ needs.setup_release.outputs.release_tag }}
prerelease: ${{ needs.setup_release.outputs.publish_pre_release }}
prerelease: true
tag: ${{ needs.setup_release.outputs.release_tag }}
token: ${{ secrets.GH_BOT_TOKEN }}

- name: Create/Update Jellyfin Release
if: ${{ needs.setup_release.outputs.publish_release == 'true' }}
uses: LizardByte/jellyfin-plugin-repo@v2024.516.183604
with:
github_token: ${{ secrets.GH_BOT_TOKEN }}
committer_email: ${{ secrets.GH_BOT_EMAIL }}
committer_name: ${{ secrets.GH_BOT_NAME }}
release_tag: ${{ needs.setup_release.outputs.release_tag }}
zipfile: ./artifacts/themerr-jellyfin.zip
25 changes: 7 additions & 18 deletions .github/workflows/ci-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ on:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
Expand Down Expand Up @@ -102,19 +102,9 @@ jobs:
needs:
- check_dockerfiles
outputs:
changelog_changes: ${{ steps.setup_release.outputs.changelog_changes }}
changelog_date: ${{ steps.setup_release.outputs.changelog_date }}
changelog_exists: ${{ steps.setup_release.outputs.changelog_exists }}
changelog_release_exists: ${{ steps.setup_release.outputs.changelog_release_exists }}
changelog_url: ${{ steps.setup_release.outputs.changelog_url }}
changelog_version: ${{ steps.setup_release.outputs.changelog_version }}
publish_pre_release: ${{ steps.setup_release.outputs.publish_pre_release }}
publish_release: ${{ steps.setup_release.outputs.publish_release }}
publish_stable_release: ${{ steps.setup_release.outputs.publish_stable_release }}
release_body: ${{ steps.setup_release.outputs.release_body }}
release_build: ${{ steps.setup_release.outputs.release_build }}
release_commit: ${{ steps.setup_release.outputs.release_commit }}
release_generate_release_notes: ${{ steps.setup_release.outputs.release_generate_release_notes }}
release_tag: ${{ steps.setup_release.outputs.release_tag }}
release_version: ${{ steps.setup_release.outputs.release_version }}
runs-on: ubuntu-latest
Expand All @@ -124,7 +114,7 @@ jobs:

- name: Setup Release
id: setup_release
uses: LizardByte/setup-release-action@v2024.516.190324
uses: LizardByte/setup-release-action@v2024.520.181643
with:
dotnet: ${{ needs.check_dockerfiles.outputs.dotnet }}
github_token: ${{ secrets.GITHUB_TOKEN }}
Expand Down Expand Up @@ -171,7 +161,7 @@ jobs:

steps:
- name: Maximize build space
uses: easimon/maximize-build-space@v8
uses: easimon/maximize-build-space@v10
with:
root-reserve-mb: 30720 # https://github.com/easimon/maximize-build-space#caveats
remove-dotnet: 'true'
Expand Down Expand Up @@ -287,7 +277,7 @@ jobs:
id: buildx

- name: Cache Docker Layers
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: Docker-buildx${{ matrix.tag }}-${{ github.sha }}
Expand Down Expand Up @@ -373,21 +363,20 @@ jobs:

- name: Create/Update GitHub Release
if: ${{ needs.setup_release.outputs.publish_release == 'true' && steps.prepare.outputs.artifacts == 'true' }}
uses: LizardByte/create-release-action@v2024.516.190229
uses: LizardByte/create-release-action@v2024.520.180003
with:
allowUpdates: true
artifacts: "*artifacts/*"
body: ''
discussionCategory: announcements
generateReleaseNotes: true
name: ${{ needs.setup_release.outputs.release_tag }}
prerelease: ${{ needs.setup_release.outputs.publish_pre_release }}
prerelease: true
tag: ${{ needs.setup_release.outputs.release_tag }}
token: ${{ secrets.GH_BOT_TOKEN }}

- name: Update Docker Hub Description
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
uses: peter-evans/dockerhub-description@v3
uses: peter-evans/dockerhub-description@v4
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_PASSWORD }} # token is not currently supported
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/update-changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
# This action is centrally managed in https://github.com/<organization>/.github/
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in
# the above-mentioned repo.

# Update changelog on release events.

name: Update changelog

on:
release:
types: [created, edited, deleted]
workflow_dispatch:

concurrency:
group: "${{ github.workflow }}"
cancel-in-progress: true

jobs:
update-changelog:
if: >-
github.event_name == 'workflow_dispatch' ||
(!github.event.release.prerelease && !github.event.release.draft)
runs-on: ubuntu-latest
steps:
- name: Update Changelog
uses: LizardByte/update-changelog-action@v2024.520.183314
with:
changelogBranch: changelog
changelogFile: CHANGELOG.md
token: ${{ secrets.GH_BOT_TOKEN }}
93 changes: 93 additions & 0 deletions .github/workflows/update-jellyfin-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
# This action is a candidate to centrally manage in https://github.com/<organization>/.github/
# If more Jellyfin plugins are developed, consider moving this action to the organization's .github repository,
# using the `jellyfin-plugin` repository label to identify repositories that should trigger have this workflow.

# Update Jellyfin repository on release events.

name: Update Jellyfin release

on:
release:
types: [created, edited, deleted]

concurrency:
group: "${{ github.workflow }}-${{ github.event.release.tag_name }}"
cancel-in-progress: false

jobs:
update-jellyfin-release:
if: >-
!github.event.release.draft && !github.event.release.prerelease
runs-on: ubuntu-latest
steps:
- name: Check if Jellyfin repo
id: isJellyfinRepo
uses: actions/github-script@v7
with:
script: |
const repo = context.payload.repository;
const repoLabels = await github.repos.listLabelsForRepo({
owner: repo.owner.login,
repo: repo.name
});
const isJellyfinRepo = repoLabels.data.some(label => label.name === 'jellyfin-plugin');
core.setOutput('isJellyfinRepo', isJellyfinRepo);

- name: Download release asset
id: download
if: >-
steps.isJellyfinRepo.outputs.isJellyfinRepo == 'true' &&
github.event.action != 'deleted'
uses: robinraju/release-downloader@v1.10
with:
repository: "${{ github.repository }}"
tag: "${{ github.event.release.tag_name }}"
fileName: "*.zip"
tarBall: false
zipBall: false
out-file-path: "release_downloads"
extract: false

- name: Loop through downloaded files
if: >-
steps.isJellyfinRepo.outputs.isJellyfinRepo == 'true' &&
github.event.action != 'deleted'
id: loop
run: |
files=${{ fromJson(steps.download.outputs.downloaded_files) }}
file_number=0
plugin=""
for file in "${files[@]}"; do
echo "$file"

# extract the zip file
unzip -o $file -d ./release_downloads/$file_number

# check if the extracted file contains a meta.json file
if [ -f ./release_downloads/$file_number/meta.json ]; then
plugin=$file
break
fi

file_number=$((file_number+1))
done

if [ -z "$plugin" ]; then
echo "No plugin found in the downloaded files"
exit 1
fi

echo "plugin_zip=$plugin" >> $GITHUB_OUTPUT

- name: Create/Update Jellyfin Release
if: >-
steps.isJellyfinRepo.outputs.isJellyfinRepo == 'true'
uses: LizardByte/jellyfin-plugin-repo@v2024.522.143446
with:
action: ${{ github.event.action == 'deleted' && 'remove' || 'add' }}
github_token: ${{ secrets.GH_BOT_TOKEN }}
committer_email: ${{ secrets.GH_BOT_EMAIL }}
committer_name: ${{ secrets.GH_BOT_NAME }}
release_tag: ${{ github.event.release.tag_name }}
zipfile: ${{ steps.loop.outputs.plugin_zip }}
Loading