mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2026-10-10 13:03:09 +08:00
a5e5048555
commit2d51c9ab4bAuthor: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com> Date: Mon Sep 7 14:14:22 2026 +0800 feat!(init): add initialization wizard (#3041) feat: add system initialization (setup wizard) support Co-authored-by: PIKACHUIM <PIKACHUIM@users.noreply.github.com> commitd9d8aa24e6Author: ShenLin <773933146@qq.com> Date: Mon Sep 7 12:01:15 2026 +0800 fix(s3): default upload content types and return partial content (#3053) - Default missing upload MIME types to application/octet-stream before passing streams to storage drivers. - Return HTTP 206 for successful ranged GET responses while preserving error statuses. - Add isolated response-status regression tests without database initialization. Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> Co-authored-by: Codex <267193182+codex@users.noreply.github.com> commit55530ff171Author: ShenLin <773933146@qq.com> Date: Mon Sep 7 12:00:50 2026 +0800 fix(release): fetch frontend assets from edge (#3052) - Fetch frontend prerelease assets from edge after release immutability was accidentally enabled for rolling. Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> Co-authored-by: Codex <267193182+codex@users.noreply.github.com> commit6247cf7be2Author: MadDogOwner <xiaoran@xrgzs.top> Date: Sat Sep 5 15:56:40 2026 +0800 feat(server/s3): support multipart upload (#2813) commiteee910babbAuthor: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sat Sep 5 12:22:53 2026 +0800 fix(deps): update module github.com/rclone/rclone to v1.75.1 (#3035) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit6b55a82ffeAuthor: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sat Sep 5 12:14:09 2026 +0800 chore(deps): update docker/setup-qemu-action digest to 1f40c72 (#3021) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit93dac1655fAuthor: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Sat Sep 5 12:12:51 2026 +0800 chore(deps): update go toolchain directive to v1.27.1 (#3024) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit6ad44605c0Author: Pikachu Ren <40362270+PIKACHUIM@users.noreply.github.com> Date: Sat Sep 5 12:11:51 2026 +0800 feat(drivers/guangyapan): add md5-based instant upload support (#3034) feat(guangyapan): add md5-based instant upload support Co-authored-by: PIKACHUIM <PIKACHUIM@users.noreply.github.com> commitd90d84906eAuthor: UcnacDx2 <127503808+UcnacDx2@users.noreply.github.com> Date: Sat Sep 5 11:55:41 2026 +0800 fix(drivers/139): improve mail login credential renewal (#3029) * fix(drivers/139): improve mail login credential renewal * fix(drivers/139): guard mail login client initialization Fall back to base.NewRestyClient() when base.RestyClient has not been initialized, while preserving cloned global-client behavior and the login/SMS retry and redirect policies. commitc3d3da9286Author: ShenLin <773933146@qq.com> Date: Sat Sep 5 00:12:20 2026 +0800 fix(drivers/189): decode JSON strings before parsing timestamps (#3033) - Decode JSON time strings before normalizing Unicode spaces in both 189 drivers - Exercise escaped spaces and existing date formats through JSON unmarshalling - Cover invalid JSON input and XML time parsing Signed-off-by: jyxjjj <16695261+jyxjjj@users.noreply.github.com> Co-authored-by: Codex <267193182+codex@users.noreply.github.com>
288 lines
9.9 KiB
YAML
288 lines
9.9 KiB
YAML
name: Release builds (Docker)
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
manual_tag:
|
|
description: 'Tag name (like v0.1.0). Required if as_latest is true.'
|
|
required: false
|
|
type: string
|
|
as_latest:
|
|
description: 'Tag as latest?'
|
|
required: true
|
|
default: 'false'
|
|
type: choice
|
|
options:
|
|
- 'true'
|
|
- 'false'
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
DOCKERHUB_ORG_NAME: ${{ vars.DOCKERHUB_ORG_NAME || 'openlistteam' }}
|
|
GHCR_ORG_NAME: ${{ vars.GHCR_ORG_NAME || 'openlistteam' }}
|
|
IMAGE_NAME: openlist-git
|
|
IMAGE_NAME_DOCKERHUB: openlist
|
|
REGISTRY: ghcr.io
|
|
ARTIFACT_NAME: 'binaries_docker_release'
|
|
ARTIFACT_NAME_LITE: 'binaries_docker_release_lite'
|
|
RELEASE_PLATFORMS: 'linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/ppc64le,linux/riscv64,linux/loong64' ### Temporarily disable Docker builds for linux/s390x architectures for unknown reasons.
|
|
IMAGE_PUSH: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
|
|
|
|
permissions:
|
|
packages: write
|
|
|
|
jobs:
|
|
build_binary:
|
|
name: Build Binaries for Docker Release
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
|
|
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
|
|
with:
|
|
go-version: '1.27'
|
|
|
|
- name: Cache Musl
|
|
id: cache-musl
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
|
|
with:
|
|
path: build/musl-libs
|
|
key: docker-musl-libs-v2
|
|
|
|
- name: Download Musl Library
|
|
if: steps.cache-musl.outputs.cache-hit != 'true'
|
|
run: bash build.sh prepare docker-multiplatform
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build go binary (release)
|
|
run: bash build.sh release docker-multiplatform
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
FRONTEND_REPO: ${{ vars.FRONTEND_REPO }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: ${{ env.ARTIFACT_NAME }}
|
|
overwrite: true
|
|
path: |
|
|
build/
|
|
!build/*.tgz
|
|
!build/musl-libs/**
|
|
|
|
build_binary_lite:
|
|
name: Build Binaries for Docker Release (Lite)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
|
|
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
|
|
with:
|
|
go-version: '1.27.1'
|
|
|
|
- name: Cache Musl
|
|
id: cache-musl
|
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
|
|
with:
|
|
path: build/musl-libs
|
|
key: docker-musl-libs-v2
|
|
|
|
- name: Download Musl Library
|
|
if: steps.cache-musl.outputs.cache-hit != 'true'
|
|
run: bash build.sh prepare lite docker-multiplatform
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build go binary (release)
|
|
run: bash build.sh release lite docker-multiplatform
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
FRONTEND_REPO: ${{ vars.FRONTEND_REPO }}
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
with:
|
|
name: ${{ env.ARTIFACT_NAME_LITE }}
|
|
overwrite: true
|
|
path: |
|
|
build/
|
|
!build/*.tgz
|
|
!build/musl-libs/**
|
|
|
|
release_docker:
|
|
needs: build_binary
|
|
name: Release Docker image
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
image: ["latest", "ffmpeg", "aria2", "aio"]
|
|
include:
|
|
- image: "latest"
|
|
base_image_tag: "base"
|
|
build_arg: ""
|
|
tag_favor: ""
|
|
- image: "ffmpeg"
|
|
base_image_tag: "ffmpeg"
|
|
build_arg: INSTALL_FFMPEG=true
|
|
tag_favor: "suffix=-ffmpeg,onlatest=true"
|
|
- image: "aria2"
|
|
base_image_tag: "aria2"
|
|
build_arg: INSTALL_ARIA2=true
|
|
tag_favor: "suffix=-aria2,onlatest=true"
|
|
- image: "aio"
|
|
base_image_tag: "aio"
|
|
build_arg: |
|
|
INSTALL_FFMPEG=true
|
|
INSTALL_ARIA2=true
|
|
tag_favor: "suffix=-aio,onlatest=true"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
with:
|
|
name: ${{ env.ARTIFACT_NAME }}
|
|
path: 'build/'
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@1f40c72289eff860ee54a304f1438e3cff362e0a # v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
|
|
|
|
- name: Login to GitHub Container Registry
|
|
if: env.IMAGE_PUSH == 'true'
|
|
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Login to DockerHub Container Registry
|
|
if: env.IMAGE_PUSH == 'true'
|
|
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_ORG_NAME_BACKUP || env.DOCKERHUB_ORG_NAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Docker meta
|
|
id: meta
|
|
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6
|
|
with:
|
|
images: |
|
|
${{ env.REGISTRY }}/${{ env.GHCR_ORG_NAME }}/${{ env.IMAGE_NAME }}
|
|
${{ env.DOCKERHUB_ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
|
tags: >
|
|
${{ github.event_name == 'workflow_dispatch'
|
|
&& format('type=raw,value={0}', github.event.inputs.manual_tag)
|
|
|| format('type=raw,value={0}', github.ref_name) }}
|
|
flavor: |
|
|
latest=${{ github.event_name == 'push' || github.event.inputs.as_latest == 'true' }}
|
|
${{ matrix.tag_favor }}
|
|
|
|
- name: Build and push
|
|
id: docker_build
|
|
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
|
|
with:
|
|
context: .
|
|
file: Dockerfile.ci
|
|
push: ${{ env.IMAGE_PUSH == 'true' }}
|
|
build-args: |
|
|
BASE_IMAGE_TAG=${{ matrix.base_image_tag }}
|
|
${{ matrix.build_arg }}
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
platforms: ${{ env.RELEASE_PLATFORMS }}
|
|
|
|
release_docker_lite:
|
|
needs: build_binary_lite
|
|
name: Release Docker image (Lite)
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
image: ["latest", "ffmpeg", "aria2", "aio"]
|
|
include:
|
|
- image: "latest"
|
|
base_image_tag: "base"
|
|
build_arg: ""
|
|
tag_favor: "suffix=-lite,onlatest=true"
|
|
- image: "ffmpeg"
|
|
base_image_tag: "ffmpeg"
|
|
build_arg: INSTALL_FFMPEG=true
|
|
tag_favor: "suffix=-lite-ffmpeg,onlatest=true"
|
|
- image: "aria2"
|
|
base_image_tag: "aria2"
|
|
build_arg: INSTALL_ARIA2=true
|
|
tag_favor: "suffix=-lite-aria2,onlatest=true"
|
|
- image: "aio"
|
|
base_image_tag: "aio"
|
|
build_arg: |
|
|
INSTALL_FFMPEG=true
|
|
INSTALL_ARIA2=true
|
|
tag_favor: "suffix=-lite-aio,onlatest=true"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
with:
|
|
name: ${{ env.ARTIFACT_NAME_LITE }}
|
|
path: 'build/'
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@1f40c72289eff860ee54a304f1438e3cff362e0a # v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4
|
|
|
|
- name: Login to GitHub Container Registry
|
|
if: env.IMAGE_PUSH == 'true'
|
|
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Login to DockerHub Container Registry
|
|
if: env.IMAGE_PUSH == 'true'
|
|
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_ORG_NAME_BACKUP || env.DOCKERHUB_ORG_NAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Docker meta
|
|
id: meta
|
|
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6
|
|
with:
|
|
images: |
|
|
${{ env.REGISTRY }}/${{ env.GHCR_ORG_NAME }}/${{ env.IMAGE_NAME }}
|
|
${{ env.DOCKERHUB_ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
|
tags: >
|
|
${{ github.event_name == 'workflow_dispatch'
|
|
&& format('type=raw,value={0}', github.event.inputs.manual_tag)
|
|
|| format('type=raw,value={0}', github.ref_name) }}
|
|
flavor: |
|
|
latest=${{ github.event_name == 'push' || github.event.inputs.as_latest == 'true' }}
|
|
${{ matrix.tag_favor }}
|
|
|
|
- name: Build and push
|
|
id: docker_build
|
|
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
|
|
with:
|
|
context: .
|
|
file: Dockerfile.ci
|
|
push: ${{ env.IMAGE_PUSH == 'true' }}
|
|
build-args: |
|
|
BASE_IMAGE_TAG=${{ matrix.base_image_tag }}
|
|
${{ matrix.build_arg }}
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
platforms: ${{ env.RELEASE_PLATFORMS }}
|