sqlite-web 0.7.2
gitea.db
action_run_job
Create
Query
access
access_token
action
action_artifact
action_run
action_run_index
action_run_job
action_runner
action_runner_token
action_schedule
action_schedule_spec
action_task
action_task_output
action_task_step
action_tasks_version
action_variable
app_state
attachment
auth_token
badge
branch
collaboration
comment
commit_status
commit_status_index
commit_status_summary
commit_sync_log
commit_sync_status
dbfs_data
dbfs_meta
deploy_key
email_address
email_hash
external_login_user
follow
gpg_key
gpg_key_import
hook_task
issue
issue_assignees
issue_content_history
issue_dependency
issue_index
issue_label
issue_pin
issue_user
issue_watch
label
language_stat
lfs_lock
lfs_meta_object
login_source
milestone
mirror
notice
notification
oauth2_application
oauth2_authorization_code
oauth2_grant
org_user
package
package_blob
package_blob_upload
package_cleanup_rule
package_file
package_property
package_version
project
project_board
project_issue
protected_branch
protected_tag
public_key
pull_auto_merge
pull_request
push_mirror
reaction
release
renamed_branch
repo_archiver
repo_hidden_file
repo_indexer_status
repo_license
repo_redirect
repo_topic
repo_transfer
repo_unit
repository
review
review_state
secret
session
sqlite_sequence
star
stopwatch
system_setting
task
team
team_invite
team_repo
team_unit
team_user
topic
tracked_time
two_factor
upload
user
user_badge
user_blocking
user_open_id
user_redirect
user_setting
version
watch
webauthn_credential
webhook
Toggle helper tables
Structure
Content
Query
Insert
Drop
Import
Export
Delete row 7841 from action_run_job
id
7841
run_id
6703
repo_id
6
owner_id
5
commit_sha
e112d45af414e4862c0328abad7c4df74d3c1dbf
is_fork_pull_request
0
name
自动回滚
attempt
0
workflow_payload
name: Deploy "on": push: branc
name: Deploy "on": push: branches: [main] tags: ['v*'] workflow_dispatch: inputs: environment: description: '部署环境' required: true default: 'staging' type: choice options: - staging - production - rollback skip_tests: description: '跳过测试(紧急修复时使用)' required: false default: false type: boolean env: IMAGE_PREFIX: ${{ github.repository_owner }}/juhi NODE_VERSION: "20" PNPM_VERSION: "8" REGISTRY: ghcr.io jobs: auto-rollback: name: 自动回滚 runs-on: ubuntu-latest if: failure() && needs.deploy-production.result == 'failure' steps: - name: 配置 SSH uses: webfactory/ssh-agent@v0.8.0 with: ssh-private-key: ${{ secrets.PRODUCTION_SSH_KEY }} - name: 配置 SSH Known Hosts run: | mkdir -p ~/.ssh echo "${{ secrets.PRODUCTION_SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts - name: 执行自动回滚 run: | ssh $USER@$HOST << 'EOF' cd /opt/juhi echo "==========================================" echo "检测到部署失败,执行自动回滚..." echo "==========================================" # 使用项目回滚脚本 if [ -f "./scripts/rollback.sh" ]; then chmod +x ./scripts/rollback.sh ./scripts/rollback.sh --confirm -y else # 备用回滚逻辑:读取最近一条部署历史 PREV_LINE=$(tail -1 .deploy-history 2>/dev/null) PREV_API_IMAGE=$(echo "$PREV_LINE" | cut -d'|' -f2) PREV_FRONTEND_IMAGE=$(echo "$PREV_LINE" | cut -d'|' -f3) if [ -n "$PREV_API_IMAGE" ] && [ "$PREV_API_IMAGE" != "none" ]; then echo "回滚到: API=$PREV_API_IMAGE, Frontend=$PREV_FRONTEND_IMAGE" export API_IMAGE="$PREV_API_IMAGE" export FRONTEND_IMAGE="$PREV_FRONTEND_IMAGE" docker compose -f docker-compose.prod.yml up -d --no-deps api frontend # 健康检查(带重试) RETRY=0 MAX_RETRY=12 until curl -sf http://localhost:3000/health > /dev/null 2>&1; do RETRY=$((RETRY + 1)) if [ $RETRY -ge $MAX_RETRY ]; then echo "回滚后健康检查失败(60s),请手动介入" docker compose -f docker-compose.prod.yml logs --tail=30 api exit 1 fi sleep 5 done echo "回滚成功!" else echo "无法获取上一版本信息,需要手动回滚" echo "部署历史:" cat .deploy-history 2>/dev/null || echo "(空)" exit 1 fi fi EOF env: HOST: ${{ secrets.PRODUCTION_HOST }} USER: ${{ secrets.PRODUCTION_USER }} - if: always() name: 发送回滚通知 uses: 8398a7/action-slack@v3 with: custom_payload: | { "attachments": [{ "color": "${{ job.status == 'success' && 'warning' || 'danger' }}", "title": "生产环境自动回滚", "text": "部署失败触发自动回滚\n回滚状态: ${{ job.status }}", "fields": [ { "title": "环境", "value": "Production", "short": true }, { "title": "触发者", "value": "${{ github.actor }}", "short": true }, { "title": "版本", "value": "${{ needs.build-and-push.outputs.version }}", "short": true } ] }] } status: custom webhook_url: ${{ secrets.SLACK_WEBHOOK }} timeout-minutes: "10"
...
job_id
auto-rollback
needs
["deploy-production"]
runs_on
["ubuntu-latest"]
task_id
0
status
3
started
0
stopped
1773832744
created
1773831749
updated
1773832744
raw_concurrency
is_concurrency_evaluated
0
concurrency_group
concurrency_cancel
0
Delete
Cancel