--- # https://woodpecker-ci.org/docs/intro when: event: [push, manual] variables: images: - &image_node node:18.16.0 - &image_aws_cli amazon/aws-cli:2.15.50 - &image_drone_cache meltwater/drone-cache:v1.4.0 deploy_envs: &deploy_envs S3_BUCKET: from_secret: S3_BUCKET CLOUDFRONT_DISTRIBUTION: from_secret: CLOUDFRONT_DISTRIBUTION AWS_ACCESS_KEY_ID: from_secret: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY: from_secret: AWS_SECRET_ACCESS_KEY AWS_REGION: from_secret: AWS_REGION cache_settings: &cache_settings access-key: from_secret: CACHE_S3_ACCESS_KEY_ID secret-key: from_secret: CACHE_S3_SECRET_ACCESS_KEY endpoint: from_secret: CACHE_S3_ENDPOINT region: from_secret: CACHE_S3_REGION bucket: from_secret: CACHE_S3_BUCKET path_style: from_secret: CACHE_S3_USE_PATH_STYLE cache_key: '{{ checksum "yarn.lock" }}' archive_format: zstd mount: - 'node_modules' steps: - name: cache/restore image: *image_drone_cache settings: <<: *cache_settings restore: true - name: build/nodejs depends_on: [cache/restore] image: *image_node commands: - corepack enable yarn - yarn install --prefer-offline - yarn run build - name: cache/rebuild depends_on: [build/nodejs] image: *image_drone_cache settings: <<: *cache_settings rebuild: true - name: publish/s3 depends_on: [build/nodejs] when: - branch: main image: *image_aws_cli environment: <<: *deploy_envs commands: - aws s3 sync --delete ./dist "s3://$${S3_BUCKET}/" - name: publish/cloudfront depends_on: [publish/s3] when: - branch: main image: *image_aws_cli environment: <<: *deploy_envs commands: - aws cloudfront create-invalidation --distribution-id "$${CLOUDFRONT_DISTRIBUTION}" --paths '/*'