Skip to content

Build

Build #227

Workflow file for this run

# Copyright (c) 2023 Contributors to the Suwayomi project
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
name: Build
on:
workflow_dispatch:
push:
branches: ['Release']
paths-ignore:
- '**/README.md'
defaults:
run:
shell: bash
jobs:
RepoName:
runs-on: ubuntu-latest
outputs:
value: ${{ steps.RepoName.outputs.lowercase }}
steps:
- name: Get Repo Name
id: RepoName
uses: ASzc/change-string-case-action@v6
with:
string: ${{ github.repository_owner }}/${{ github.event.repository.name }}
- name: Set Repo Name
run: echo "REPO_NAME=${{ steps.RepoName.outputs.lowercase }}" >> $GITHUB_OUTPUT
ComputeThemes:
runs-on: ubuntu-latest
outputs:
value: ${{ env.THEMES }}
steps:
- name: Compute Themes
run: |
echo "value=$THEMES" >> $GITHUB_OUTPUT
GenTag:
outputs:
value: ${{steps.GenTagName.outputs.value}}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate Tag Name
id: GenTagName
run: |
genTag="r$(git rev-list HEAD --count)"
echo "$genTag"
echo "value=$genTag" >> $GITHUB_OUTPUT
build:
needs: GenTag
runs-on: ubuntu-latest
steps:
- name: Check out Git repository
uses: actions/checkout@v4
- name: Use bun 1.1.0
uses: oven-sh/setup-bun@v1
with:
bun-version: latest
- name: Install bun dependencies
run: bun i
- run: bun run build
- run: echo "${{ needs.GenTag.outputs.value }}" > ./build/revision
- run: sed -i "s@BUILD_VERSION_PLACEHOLDER@${{ needs.GenTag.outputs.value }}@" ./build/index.html
- run: bun run build-md5
- uses: actions/upload-artifact@v4
with:
name: build-files
path: |
./build/
./buildZip/md5sum
retention-days: 1
web:
needs:
- build
- GenTag
runs-on: ubuntu-latest
steps:
- name: get Build files
uses: actions/download-artifact@v4
with:
name: build-files
path: ./
- name: Generate zip
working-directory: ./build
run: zip -r Suwayomi-VUI-Web-${{ needs.GenTag.outputs.value }}.zip ./*
- name: Release
uses: softprops/action-gh-release@v1
with:
files: |
./build/Suwayomi-VUI-Web-${{ needs.GenTag.outputs.value }}.zip
./buildZip/md5sum
name: ${{ needs.GenTag.outputs.value }}
tag_name: ${{ needs.GenTag.outputs.value }}
body: ''
draft: false
prerelease: false
docker:
needs:
- build
- GenTag
- ComputeThemes
- RepoName
runs-on: ubuntu-latest
steps:
- name: Check out Dockerfile
uses: actions/checkout@v4
with:
sparse-checkout: Dockerfile
- name: get Build files
uses: actions/download-artifact@v4
with:
name: build-files
path: ./
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@v5
with:
platforms: linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/386, linux/ppc64le, linux/s390x
context: .
build-args: version=${{ needs.GenTag.outputs.value }}
push: true
tags: |
ghcr.io/${{ needs.RepoName.outputs.value }}:latest,
ghcr.io/${{ needs.RepoName.outputs.value }}:${{ needs.GenTag.outputs.value }},
${{ needs.RepoName.outputs.value }}:latest,
${{ needs.RepoName.outputs.value }}:${{ needs.GenTag.outputs.value }},