diff --git a/example/linux/woodpecker.yml b/example/linux/woodpecker.yml new file mode 100644 index 0000000..486f1cc --- /dev/null +++ b/example/linux/woodpecker.yml @@ -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 '

Hello World

' > 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}/" \ No newline at end of file