This commit is contained in:
104
example/linux/woodpecker.yml
Normal file
104
example/linux/woodpecker.yml
Normal file
@@ -0,0 +1,104 @@
|
||||
# .woodpecker.yml
|
||||
labels:
|
||||
platform: linux/amd64
|
||||
|
||||
when:
|
||||
event: [push, manual]
|
||||
|
||||
steps:
|
||||
# 第一步:构建项目(示例)
|
||||
- name: build
|
||||
image: node:18-alpine
|
||||
commands:
|
||||
- echo "Building project..."
|
||||
- mkdir -p dist/assets
|
||||
- echo '<!DOCTYPE html><html><body><h1>Hello World</h1></body></html>' > dist/index.html
|
||||
- echo 'body { font-family: Arial; }' > dist/assets/style.css
|
||||
- echo 'console.log("App loaded");' > dist/assets/app.js
|
||||
- echo "Build complete!"
|
||||
- ls -R dist/
|
||||
|
||||
# 第二步:上传单个日志文件
|
||||
- name: upload-build-log
|
||||
image: alpine:latest
|
||||
environment:
|
||||
AWS_ACCESS_KEY_ID:
|
||||
from_secret: AWS_ACCESS_KEY_ID
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
from_secret: AWS_SECRET_ACCESS_KEY
|
||||
S3_BUCKET:
|
||||
from_secret: S3_BUCKET
|
||||
S3_ENDPOINT:
|
||||
from_secret: S3_ENDPOINT
|
||||
commands:
|
||||
- |
|
||||
# 安装 plugin-s3(如果镜像中没有)
|
||||
# 或使用已安装的镜像
|
||||
|
||||
# 创建构建日志
|
||||
date > build.log
|
||||
echo "Build completed successfully" >> build.log
|
||||
|
||||
# 上传日志文件
|
||||
export PLUGIN_SOURCE="build.log"
|
||||
export PLUGIN_BUCKET="$S3_BUCKET"
|
||||
export PLUGIN_TARGET="logs/build-${CI_COMMIT_SHA:0:8}.log"
|
||||
export PLUGIN_ENDPOINT="$S3_ENDPOINT"
|
||||
export PLUGIN_PATH_STYLE=true
|
||||
plugin-s3
|
||||
|
||||
echo "✅ Build log uploaded to s3://$S3_BUCKET/logs/"
|
||||
|
||||
# 第三步:上传整个 dist 文件夹
|
||||
- name: upload-dist-folder
|
||||
image: alpine:latest
|
||||
environment:
|
||||
AWS_ACCESS_KEY_ID:
|
||||
from_secret: AWS_ACCESS_KEY_ID
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
from_secret: AWS_SECRET_ACCESS_KEY
|
||||
S3_BUCKET:
|
||||
from_secret: S3_BUCKET
|
||||
S3_ENDPOINT:
|
||||
from_secret: S3_ENDPOINT
|
||||
commands:
|
||||
- |
|
||||
# 上传整个 dist 目录
|
||||
export PLUGIN_SOURCE="dist/**/*"
|
||||
export PLUGIN_BUCKET="$S3_BUCKET"
|
||||
export PLUGIN_TARGET="website/${CI_COMMIT_BRANCH}/"
|
||||
export PLUGIN_ENDPOINT="$S3_ENDPOINT"
|
||||
export PLUGIN_PATH_STYLE=true
|
||||
export PLUGIN_STRIP_PREFIX="dist/"
|
||||
export PLUGIN_ACL="public-read"
|
||||
plugin-s3
|
||||
|
||||
echo "✅ Website deployed to s3://$S3_BUCKET/website/${CI_COMMIT_BRANCH}/"
|
||||
|
||||
# 第四步:上传构建产物(压缩包)
|
||||
- name: upload-artifacts
|
||||
image: alpine:latest
|
||||
environment:
|
||||
AWS_ACCESS_KEY_ID:
|
||||
from_secret: AWS_ACCESS_KEY_ID
|
||||
AWS_SECRET_ACCESS_KEY:
|
||||
from_secret: AWS_SECRET_ACCESS_KEY
|
||||
S3_BUCKET:
|
||||
from_secret: S3_BUCKET
|
||||
S3_ENDPOINT:
|
||||
from_secret: S3_ENDPOINT
|
||||
commands:
|
||||
- |
|
||||
# 创建压缩包
|
||||
apk add --no-cache zip
|
||||
zip -r dist-${CI_COMMIT_SHA:0:8}.zip dist/
|
||||
|
||||
# 上传压缩包
|
||||
export PLUGIN_SOURCE="dist-*.zip"
|
||||
export PLUGIN_BUCKET="$S3_BUCKET"
|
||||
export PLUGIN_TARGET="releases/${CI_COMMIT_BRANCH}/"
|
||||
export PLUGIN_ENDPOINT="$S3_ENDPOINT"
|
||||
export PLUGIN_PATH_STYLE=true
|
||||
plugin-s3
|
||||
|
||||
echo "✅ Artifacts uploaded to s3://$S3_BUCKET/releases/${CI_COMMIT_BRANCH}/"
|
||||
Reference in New Issue
Block a user