Skip to content

Commit

Permalink
docker hub 使用发行渠道 #851
Browse files Browse the repository at this point in the history
  • Loading branch information
Soltus committed Jul 24, 2024
1 parent b5aeaea commit 6d2d7bd
Show file tree
Hide file tree
Showing 13 changed files with 365 additions and 24 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ env:
repo_name_android: "Sillot-android"
repo_name: "Sillot"
repo_owner: "Hi-Windom"
package_json: "app/package.json"
package_json: "package.json"
pnpm_ws: "pnpm-workspace.yaml"
android_gradle_build_output: "build/outputs/apk/action"
android_gradle_build_params: "assembleAction -profile --quiet --stacktrace"
Expand Down
82 changes: 76 additions & 6 deletions .github/workflows/dockerimage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,56 @@ on:
description: '镜像标签,留空则使用 package.json 中的版本号。务必注意:请确认选择了正确的分支。完整输入示例:0.31.1000-rc0 '
required: true
default: ''
push:
branches:
- master
channel:
description: "发行渠道"
required: true
type: choice
options:
- T
- R & Rococo & latest
- P & Pioneer
- D & Dev
- C & Canary
- E & Emo
- G & Gibbet
- S & Salvation

# ref https://docs.github.com/zh/actions/learn-github-actions/variables
env:
repo_name_android: "Sillot-android"
repo_name: "Sillot"
repo_owner: "Hi-Windom"
package_json: "app/package.json"
package_json: "package.json"
docker_hub_readme: "./.github/docs/docker/README.md"
docker_hub_owner: "soltus"
docker_hub_repo: "sillot"

jobs:
setup:
runs-on: ubuntu-latest
outputs:
docker_file: ${{ steps.set-vars.outputs.docker_file }}
steps:
- name: Set variables based on input name
id: set-vars
run: |
# 定义映射关系
declare -A dockerFileMap=(
["T"]="Dockerfile"
["R & Rococo & latest"]="Dockerfile"
["P & Pioneer"]="Dockerfile"
["D & Dev"]="Dockerfile"
["C & Canary"]="Dockerfile"
["E & Emo"]="Dockerfile"
["G & Gibbet"]="Dockerfile"
["S & Salvation"]="Dockerfile"
)
channel="${{ github.event.inputs.channel }}"
docker_file="${dockerFileMap[$channel]}"
echo "docker_file=$docker_file" >>$GITHUB_OUTPUT
build:
name: Release Docker Image
needs: [setup]
runs-on: ubuntu-latest
permissions:
packages: write
Expand Down Expand Up @@ -58,6 +91,7 @@ jobs:
docker-images: true
swap-storage: true

# 设置 up QEMU 用于多架构构建
- name: 🔨 Set up QEMU
uses: docker/setup-qemu-action@v3

Expand All @@ -73,11 +107,47 @@ jobs:
- name: 🔥 Build the Docker image use Workflow Dispatch inputs' version
if: ${{ github.event_name == 'workflow_dispatch' && !github.event.inputs.image_tag == '' }}
run: |
docker buildx build --push --platform linux/amd64 -t ${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:latest -t ${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:${{ github.event.inputs.image_tag }}-sillot .
# Check if the channel input contains '&', if not, it's a single tag
if [[ "${{ github.event.inputs.channel }}" == *" & "* ]]; then
# Split the channel input by ' & ' to get an array of tags
IFS=' & ' read -ra TAGS <<< "${{ github.event.inputs.channel }}"
else
# Use the channel input as a single tag
TAGS=("${{ github.event.inputs.channel }}")
fi
# Construct the -t options for the docker buildx command
TAG_ARGS=()
for TAG in "${TAGS[@]}"; do
TAG_ARGS+=("-t" "${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:$TAG")
TAG_ARGS+=("-t" "${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:$TAG-${{ github.event.inputs.image_tag }}")
done
# Run the docker buildx command once with all the -t options
docker buildx build --push --platform linux/amd64 \
--file ${{ needs.setup.outputs.docker_file }} \
"${TAG_ARGS[@]}" \
.
- name: 🔥 Build the Docker image use package_json version
if: ${{ github.event_name == 'push' || github.event.inputs.image_tag == '' }}
run: |
docker buildx build --push --platform linux/amd64 -t ${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:latest -t ${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:${{ steps.version.outputs.value }}-sillot .
# Check if the channel input contains '&', if not, it's a single tag
if [[ "${{ github.event.inputs.channel }}" == *" & "* ]]; then
# Split the channel input by ' & ' to get an array of tags
IFS=' & ' read -ra TAGS <<< "${{ github.event.inputs.channel }}"
else
# Use the channel input as a single tag
TAGS=("${{ github.event.inputs.channel }}")
fi
# Construct the -t options for the docker buildx command
TAG_ARGS=()
for TAG in "${TAGS[@]}"; do
TAG_ARGS+=("-t" "${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:$TAG")
TAG_ARGS+=("-t" "${{ env.docker_hub_owner }}/${{ env.docker_hub_repo }}:$TAG-${{ steps.version.outputs.value }}")
done
# Run the docker buildx command once with all the -t options
docker buildx build --push --platform linux/amd64 \
--file ${{ needs.setup.outputs.docker_file }} \
"${TAG_ARGS[@]}" \
.

- name: 📤 Update Docker Hub Description
uses: peter-evans/dockerhub-description@v4
Expand Down
10 changes: 2 additions & 8 deletions app/package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
{
"name": "sillot",
"name": "sillot-gibbet",
"version": "0.35.24072117",
"syv": "3.1.2",
"sypv": "[3.0.16, 3.0.17, 3.1.0, 3.1.1]",
"description": "Build Your Eternal Digital Garden",
"homepage": "https://sillot.db.sc.cn",
"repository": "https://github.com/Hi-Windom/Sillot",
Expand All @@ -12,7 +10,6 @@
"pnpm": ">=9.1.0"
},
"packageManager": "pnpm@9.5.0",
"actionInstallCommand": "pnpm install --no-frozen-lockfile",
"scripts": {
"test": "echo 'Test your sister day by day'",
"sp": "pnpm store prune",
Expand Down Expand Up @@ -161,8 +158,5 @@
"electron-store": "^10.0.0",
"monaco-editor": "^0.50.0",
"monaco-editor-nls": "^3.1.0"
},
"resolutions": {
"lodash": "4.17.21"
}
}
}
4 changes: 4 additions & 0 deletions docs/starlight/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ export default defineConfig({
label: "汐洛宝典",
autogenerate: { directory: "汐洛宝典" },
},
{
label: "发行说明",
autogenerate: { directory: "发行说明" },
},
{
label: "依赖更新",
autogenerate: { directory: "依赖更新" },
Expand Down
12 changes: 12 additions & 0 deletions docs/starlight/src/components/BannerTopArchived.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
import "../styles/banner_top.css";
import { Icon } from '@astrojs/starlight/components';
---

<div class="flash flash-warn flash-full border-top-0 text-center text-bold py-2">
<div class="banner-content ">
<Icon name="warning" size="1.2rem" />
<span class="split-w"/>
此文章已由所有者于 2024-7-22 归档
</div>
</div>
12 changes: 12 additions & 0 deletions docs/starlight/src/components/BannerTopPrLock.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
import "../styles/banner_top.css";
import { Icon } from '@astrojs/starlight/components';
---

<div class="flash flash-warn flash-full border-top-0 text-center text-bold py-2">
<div class="banner-content ">
<Icon name="seti:lock" size="1.2rem" />
<span class="split-w"/>
此文章已锁定,只能由所有者与管理员编辑
</div>
</div>
12 changes: 12 additions & 0 deletions docs/starlight/src/components/BannerTopPrNeed.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
import "../styles/banner_top.css";
import { Icon } from '@astrojs/starlight/components';
---

<div class="flash flash-green flash-full border-top-0 text-center text-bold py-2">
<div class="banner-content ">
<Icon name="github" size="1.2rem" />
<span class="split-w"/>
此文章尚未完善,欢迎参与贡献
</div>
</div>
6 changes: 0 additions & 6 deletions docs/starlight/src/components/GithubLabels.astro

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
title: 94to114
---

import BannerTopArchived from '@components/BannerTopArchived.astro';

<BannerTopArchived />

Chromium 94 功能冻结于2021年7月29日,已经不满足新彖乄要求。
2024年7月15日,汐洛彖夲肜矩阵v0.35将要求提升至 114(2023年4月11日功能冻结)。

Expand All @@ -22,7 +26,7 @@ Chromium 94 功能冻结于2021年7月29日,已经不满足新彖乄要求。
> 由不支持变更为完全支持( 104 开始)

语法改进,使使用具有“范围”类型(如宽度或高度)的功能的媒体查询不那么冗长。可以与普通的数学比较运算符一起使用。
例如: @media (100px <= width <= 1900px) 等价于 @media (min-width: 100px) and (max-width: 1900px)
例如: @media (100px \<= width \<= 1900px) 等价于 @media (min-width: 100px) and (max-width: 1900px)

### LCHLab 颜色值 | LCH and Lab color values

Expand Down
129 changes: 129 additions & 0 deletions docs/starlight/src/content/docs/发行说明/channels.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
title: 发行渠道
sidebar:
# 为链接设置自定义顺序,数字越小显示在上方(全局的,这将影响父层级排序)
order: 0
# 为链接添加徽章
badge:
text: 必读
variant: tip
---

import { Aside } from '@astrojs/starlight/components';
import { Card, CardGrid } from '@astrojs/starlight/components';
import BannerTopPrLock from '@components/BannerTopPrLock.astro';

<BannerTopPrLock />

<Aside>stable rc beta alpha S RC B A 是版本号保留字段,不应在渠道中使用</Aside>

渠道制将是汐洛宝典的默认发行方式,渠道将决定用户可以使用的特性,以及特性更新的周期。docker hub 率先支持, github 将在后续支持(部分渠道工作流将转移至下游)。

<Aside type="tip" title="发行说明">

编写发行说明的渠道有:新彖乄渠道、洛可可渠道、先锋渠道。

</Aside>

## 新彖乄渠道

> 新彖乄渠道是海文东标准的一部分

<Card title="T" icon="seti:happenings">
【汐洛】全矩阵经过周期观察验证后才会推送新彖乄渠道更新,仅包含已冻结的特性,由洛可可渠道裁剪未冻结的特性后传递,适合新彖乄用户。

在 docker hub ,新彖乄渠道使用 `T` 标签。

版本号更新 0.100.*-T -> 0.200.*-T ,重大修复版本可例外,更新周期很长(6月左右)
</Card>

## 洛可可渠道

> 洛可可渠道是海文东标准的一部分

<Card title="Rococo & R" icon="seti:plan">
【汐洛·洛可可】洛可可渠道包括已冻结的特性和已稳定的未冻结特性,由先锋渠道禁用实验性特性后传递,适合大多数用户。

在 docker hub ,洛可可渠道使用 `Rococo` 和 `R` 标签,额外使用 `latest` 这一标签。

功能版本号更新 0.110.* -> 0.120.* ,重大修复版本可例外,更新周期较长(31天左右)
</Card>


## 先锋渠道

> 先锋渠道是海文东标准的一部分

<Card title="Pioneer & P" icon="seti:plan">
【汐洛·先锋】先锋渠道,包括实验性特性,由开发者渠道裁剪开发测试套件等后传递,适合喜欢探索尝鲜的用户。

在 docker hub,先锋渠道使用 `Pioneer` 和 `P` 标签。

功能版本号更新 0.100.* -> 0.101.* ,重大修复版本可例外,更新周期较短(13天左右)
</Card>

## 开发者渠道

> 开发者渠道是海文东标准的一部分

<Card title="Dev & D" icon="seti:plan">
【汐洛·开发者】开发者渠道,包括实验性特性,且包括开发测试套件等,由金丝雀渠道优化后传递,面向所有开发者。

在 docker hub,开发者渠道使用 `Dev` 和 `D` 标签。

版本号更新 0.100.* -> 0.100.* ,更新周期较短(5天左右)
</Card>

## 金丝雀渠道

> 金丝雀渠道是海文东标准的一部分

<Card title="Canary & C" icon="seti:plan">
【汐洛·金丝雀】金丝雀渠道,包含了垃圾代码,面向内部开发者。

在 docker hub,金丝雀渠道使用 `Canary` 和 `C` 标签。

版本号更新 0.100.* -> 0.100.* ,无更新周期。
</Card>

## 神罚渠道

> 神罚渠道是海文东标准的一部分

<Card title="Emo & E" icon="seti:plan">
【汐洛·神罚】神罚渠道,通常用于情绪测试,基本上可以确定是有问题的,因此仅面向神,正常人请勿使用。

在 docker hub ,神罚渠道使用 `Emo` 和 `E` 标签。

版本号更新 0.100.*-E1 -> 0.100.*-E2 ,无更新周期。
</Card>

## 其他渠道

<Card title="Gibbet & G" icon="seti:plan">
【汐洛·绞架】绞架渠道,仅包括汐洛绞架,更新周期很长,适合喜欢小而美的用户。

版本号更新与可可渠道一致。
</Card>
<Card title="Salvation & S" icon="seti:plan">
【汐洛·救赎】救赎渠道,移除了汐洛绞架,更新周期很长,适合喜欢小而美的用户。

版本号更新与可可渠道一致。
</Card>


## 渠道在汐洛的基本实现

> TODO

### 业务拆分

### 特性的冻结

### 实验性特性

### 独立发行说明

### 版本号判断

……
14 changes: 14 additions & 0 deletions docs/starlight/src/content/docs/汐洛宝典/快速开始.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
---
title: 快速开始
sidebar:
# 为链接设置自定义顺序,数字越小显示在上方(全局的,这将影响父层级排序)
order: 0
# 为链接添加徽章
badge:
text: 必读
variant: tip
---
import {
sillotNoteName_yobeCe,
Expand All @@ -26,6 +33,7 @@ import {
lnco_doCe
} from '../../../Const'
import { Steps } from '@astrojs/starlight/components';
import { Aside } from '@astrojs/starlight/components';

## 🦢 {sillot_yobeCe}缘起

Expand Down Expand Up @@ -98,3 +106,9 @@ import { Steps } from '@astrojs/starlight/components';
{sillotMatrixName_yobeCe}没有收费计划,但这不意味着用户可以免费使用{sillotMatrixName_yobeCe}的全部功能,因为有些收费特性来自供应链上游(例如思源笔记)或者授权认证服务。{sillotMatrixName_yobeCe}尊重开源生态与他人劳动成果,不会对集成的开源功能私自收费,也不会破解供应链上游提供的付费功能给用户(但保留开发者内部测试时暂时破解的权利)。

## 🙋 {sillotMatrixName_yobeCe}的版本划分与更新节奏是?

见发行说明。

<Aside>
如果您无法证明您的新彖乄用途,我们不会为您的数据安全负责。
</Aside>
Loading

0 comments on commit 6d2d7bd

Please sign in to comment.