build(snapcraft): Add snapcraft build yaml and workflow (#608)
parent
00944b1ec2
commit
c8a8de38cc
@ -0,0 +1,103 @@
|
|||||||
|
name: Publish Snap
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [develop]
|
||||||
|
tags: [v*]
|
||||||
|
pull_request: ~
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: Lint & Build Test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: node:12.18-alpine
|
||||||
|
steps:
|
||||||
|
- name: checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: install dependencies
|
||||||
|
env:
|
||||||
|
HUSKY_SKIP_INSTALL: 1
|
||||||
|
run: yarn
|
||||||
|
- name: lint
|
||||||
|
run: yarn lint
|
||||||
|
- name: build
|
||||||
|
run: yarn build
|
||||||
|
build-snap:
|
||||||
|
name: Build Snap Package (${{ matrix.architecture }})
|
||||||
|
needs: test
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
architecture:
|
||||||
|
- amd64
|
||||||
|
- arm64
|
||||||
|
- armhf
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
id: prepare
|
||||||
|
run: |
|
||||||
|
git fetch --prune --unshallow --tags
|
||||||
|
if [[ $GITHUB_REF == refs/tags/* || $GITHUB_REF == refs/heads/master ]]; then
|
||||||
|
echo ::set-output name=RELEASE::stable
|
||||||
|
else
|
||||||
|
echo ::set-output name=RELEASE::edge
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Set Up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
|
||||||
|
- name: Build Snap Package
|
||||||
|
uses: diddlesnaps/snapcraft-multiarch-action@v1
|
||||||
|
id: build
|
||||||
|
with:
|
||||||
|
architecture: ${{ matrix.architecture }}
|
||||||
|
|
||||||
|
- name: Upload Snap Package
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: overseerr-snap-package-${{ matrix.architecture }}
|
||||||
|
path: ${{ steps.build.outputs.snap }}
|
||||||
|
|
||||||
|
- name: Review Snap Package
|
||||||
|
uses: diddlesnaps/snapcraft-review-tools-action@v1
|
||||||
|
with:
|
||||||
|
snap: ${{ steps.build.outputs.snap }}
|
||||||
|
|
||||||
|
- name: Publish Snap Package
|
||||||
|
uses: snapcore/action-publish@v1
|
||||||
|
with:
|
||||||
|
store_login: ${{ secrets.SNAP_LOGIN }}
|
||||||
|
snap: ${{ steps.build.outputs.snap }}
|
||||||
|
release: ${{ steps.prepare.outputs.RELEASE }}
|
||||||
|
|
||||||
|
discord:
|
||||||
|
name: Discord Notification
|
||||||
|
needs: build-snap
|
||||||
|
if: always() && github.event_name != 'pull_request'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Get Build Job Status
|
||||||
|
uses: technote-space/workflow-conclusion-action@v1
|
||||||
|
|
||||||
|
- name: Combine Job Status
|
||||||
|
id: status
|
||||||
|
run: |
|
||||||
|
failures=(neutral, skipped, timed_out, action_required)
|
||||||
|
if [[ ${array[@]} =~ $WORKFLOW_CONCLUSION ]]; then
|
||||||
|
echo ::set-output name=status::failure
|
||||||
|
else
|
||||||
|
echo ::set-output name=status::$WORKFLOW_CONCLUSION
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Post Status to Discord
|
||||||
|
uses: sarisia/actions-status-discord@v1
|
||||||
|
with:
|
||||||
|
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
||||||
|
status: ${{ steps.status.outputs.status }}
|
||||||
|
title: ${{ github.workflow }}
|
||||||
|
nofail: true
|
@ -0,0 +1,93 @@
|
|||||||
|
name: overseerr
|
||||||
|
adopt-info: overseerr
|
||||||
|
license: MIT
|
||||||
|
summary: Request management and media discovery tool for the Plex ecosystem.
|
||||||
|
description: >
|
||||||
|
Overseerr is a free and open source software application for managing requests for your media library.
|
||||||
|
It integrates with your existing services such as Sonarr, Radarr and Plex!
|
||||||
|
base: core18
|
||||||
|
confinement: strict
|
||||||
|
|
||||||
|
parts:
|
||||||
|
overseerr:
|
||||||
|
plugin: nodejs
|
||||||
|
nodejs-version: "12.18.4"
|
||||||
|
nodejs-package-manager: "yarn"
|
||||||
|
nodejs-yarn-version: v1.22.5
|
||||||
|
build-packages:
|
||||||
|
- git
|
||||||
|
- on arm64:
|
||||||
|
- build-essential
|
||||||
|
- automake
|
||||||
|
- on armhf:
|
||||||
|
- libatomic1
|
||||||
|
- build-essential
|
||||||
|
- automake
|
||||||
|
source: .
|
||||||
|
override-pull: |
|
||||||
|
snapcraftctl pull
|
||||||
|
# Get information to determine snap grade and version
|
||||||
|
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
|
COMMIT=$(git rev-parse HEAD)
|
||||||
|
COMMIT_SHORT=$(git rev-parse --short HEAD)
|
||||||
|
VERSION='v'$(cat package.json | grep 'version' | head -1 | sed 's/.*"\(.*\)"\,/\1/')
|
||||||
|
if [ "$VERSION" = "v0.1.0" ]; then
|
||||||
|
SNAP_VERSION=$COMMIT_SHORT
|
||||||
|
GRADE=devel
|
||||||
|
else
|
||||||
|
SNAP_VERSION=$VERSION
|
||||||
|
GRADE=stable
|
||||||
|
fi
|
||||||
|
# Write COMMIT_TAG as it is needed durring the build process
|
||||||
|
echo $COMMIT > commit.txt
|
||||||
|
# Print debug info for build version
|
||||||
|
echo "{\"commitShort\": \"$COMMIT_SHORT\", \
|
||||||
|
\"version\": \"$VERSION\", \
|
||||||
|
\"snapVersion\": \"$SNAP_VERSION\", \
|
||||||
|
\"snapGrade\": \"$GRADE\", \
|
||||||
|
\"branch\": \"$BRANCH\", \
|
||||||
|
\"commit\": \"$COMMIT\"}"
|
||||||
|
echo "{\"commitTag\": \"$COMMIT\"}" > committag.json
|
||||||
|
# Set snap version and grade
|
||||||
|
snapcraftctl set-version "$SNAP_VERSION"
|
||||||
|
snapcraftctl set-grade "$GRADE"
|
||||||
|
build-environment:
|
||||||
|
- PATH: "$SNAPCRAFT_PART_BUILD/node_modules/.bin:$SNAPCRAFT_PART_BUILD/../npm/bin:$PATH"
|
||||||
|
override-build: |
|
||||||
|
set -e
|
||||||
|
# On arm builds "python" cannot be found. Set python to python3
|
||||||
|
if [ "$ARCH" != "x86_64" ]; then
|
||||||
|
npm config set python "$(which python3)"
|
||||||
|
fi
|
||||||
|
# Set COMMIT_TAG before the build begins
|
||||||
|
export COMMIT_TAG=$(cat $SNAPCRAFT_PART_BUILD/commit.txt)
|
||||||
|
snapcraftctl build
|
||||||
|
yarn build
|
||||||
|
# Copy files needed for staging
|
||||||
|
cp $SNAPCRAFT_PART_BUILD/committag.json $SNAPCRAFT_PART_INSTALL/
|
||||||
|
cp -R $SNAPCRAFT_PART_BUILD/.next $SNAPCRAFT_PART_INSTALL/
|
||||||
|
cp -R $SNAPCRAFT_PART_BUILD/dist $SNAPCRAFT_PART_INSTALL/
|
||||||
|
cp -R $SNAPCRAFT_PART_BUILD/node_modules $SNAPCRAFT_PART_INSTALL/
|
||||||
|
# Remove .github and gitbook as it will fail snap lint
|
||||||
|
rm -rf $SNAPCRAFT_PART_INSTALL/.github && rm $SNAPCRAFT_PART_INSTALL/.gitbook.yaml
|
||||||
|
stage:
|
||||||
|
[ .next, ./* ]
|
||||||
|
prime:
|
||||||
|
[ .next, ./* ]
|
||||||
|
|
||||||
|
apps:
|
||||||
|
deamon:
|
||||||
|
command: /bin/sh -c "cd $SNAP && node dist/index.js"
|
||||||
|
daemon: simple
|
||||||
|
restart-condition: on-failure
|
||||||
|
restart-delay: 5s
|
||||||
|
plugs:
|
||||||
|
- home
|
||||||
|
- network
|
||||||
|
- network-bind
|
||||||
|
environment:
|
||||||
|
PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH"
|
||||||
|
OVERSEERR_SNAP: "True"
|
||||||
|
CONFIG_DIRECTORY: $SNAP_USER_COMMON
|
||||||
|
LOG_LEVEL: "debug"
|
||||||
|
NODE_ENV: "production"
|
Loading…
Reference in new issue