80 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # https://woodpecker-ci.org/docs/intro
 | |
| 
 | |
| when:
 | |
|   event: [push, manual]
 | |
| 
 | |
| variables:
 | |
| 
 | |
|   secrets: &secrets
 | |
|     - S3_BUCKET
 | |
|     - CLOUDFRONT_DISTRIBUTION
 | |
|     - AWS_ACCESS_KEY_ID
 | |
|     - AWS_SECRET_ACCESS_KEY
 | |
|     - AWS_REGION
 | |
| 
 | |
|   cache: &cache_step
 | |
|     image: meltwater/drone-cache:v1.4.0
 | |
|     environment:
 | |
|       AWS_ACCESS_KEY_ID:
 | |
|         from_secret: CACHE_S3_ACCESS_KEY_ID
 | |
|       AWS_SECRET_ACCESS_KEY:
 | |
|         from_secret: CACHE_S3_SECRET_ACCESS_KEY
 | |
| 
 | |
|   cache_settings: &cache_step_settings
 | |
|     cache_key: '{{ .Commit.Branch }}-{{ checksum "yarn.lock" }}'
 | |
|     archive_format: zstd
 | |
|     bucket:
 | |
|       from_secret: CACHE_S3_BUCKET
 | |
|     endpoint:
 | |
|       from_secret: CACHE_S3_ENDPOINT
 | |
|     region:
 | |
|       from_secret: CACHE_S3_REGION
 | |
|     path_style:
 | |
|       from_secret: CACHE_S3_USE_PATH_STYLE
 | |
|     mount:
 | |
|       - 'node_modules'
 | |
| 
 | |
| 
 | |
| steps:
 | |
|   - name: cache/restore
 | |
|     <<: *cache_step
 | |
|     settings:
 | |
|       <<: *cache_step_settings
 | |
|       restore: true
 | |
| 
 | |
| 
 | |
|   - name: build/yarn
 | |
|     depends_on: [ cache/restore ]
 | |
|     image: node:18.16.0
 | |
|     commands:
 | |
|       - yarn install
 | |
|       - yarn build
 | |
| 
 | |
|   - name: cache/rebuild
 | |
|     depends_on: [ build/yarn ]
 | |
|     <<: *cache_step
 | |
|     settings:
 | |
|       <<: *cache_step_settings
 | |
|       rebuild: true
 | |
| 
 | |
| 
 | |
|   - name: publish/s3
 | |
|     depends_on: [ build/yarn ]
 | |
|     when:
 | |
|       - branch: main
 | |
|     image: amazon/aws-cli:2.15.50
 | |
|     commands:
 | |
|       - aws s3 sync --delete ./dist s3://$${S3_BUCKET}/
 | |
|     secrets:
 | |
|       - <<: *secrets
 | |
| 
 | |
|   - name: publish/cloudfront
 | |
|     depends_on: [ publish/s3 ]
 | |
|     when:
 | |
|       - branch: main
 | |
|     image: amazon/aws-cli:2.15.50
 | |
|     commands:
 | |
|       - aws cloudfront create-invalidation --distribution-id $${CLOUDFRONT_DISTRIBUTION} --paths '/*'
 | |
|     secrets:
 | |
|       - <<: *secrets
 |