160 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| kind: pipeline
 | |
| type: docker
 | |
| name: default
 | |
| 
 | |
| steps:
 | |
| # Needs a full git clone
 | |
| - name: fetch
 | |
|   image: alpine/git
 | |
|   commands:
 | |
|   - git fetch --tags
 | |
| 
 | |
| # Frontend
 | |
| - name: web_build
 | |
|   image: node:23
 | |
|   depends_on:
 | |
|   - fetch
 | |
|   volumes:
 | |
|     - name: web_app
 | |
|       path: /tmp/web_build
 | |
|   commands:
 | |
|   - cd moneymgr_web
 | |
|   - npm install
 | |
|   - npm run lint
 | |
|   - npm run build
 | |
|   - mv dist /tmp/web_build
 | |
| 
 | |
| # Backend
 | |
| - name: backend_fetch_deps
 | |
|   image: rust
 | |
|   depends_on:
 | |
|   - fetch
 | |
|   volumes:
 | |
|     - name: rust_registry
 | |
|       path: /usr/local/cargo/registry
 | |
|   commands:
 | |
|     - cd moneymgr_backend
 | |
|     - cargo fetch
 | |
| 
 | |
| - name: backend_code_quality
 | |
|   image: rust
 | |
|   volumes:
 | |
|     - name: rust_registry
 | |
|       path: /usr/local/cargo/registry
 | |
|   depends_on:
 | |
|     - backend_fetch_deps
 | |
|   commands:
 | |
|     - cd moneymgr_backend
 | |
|     - rustup component add clippy
 | |
|     - cargo clippy -- -D warnings
 | |
|     - cargo clippy --example api_curl -- -D warnings
 | |
| 
 | |
| - name: backend_test
 | |
|   image: rust
 | |
|   volumes:
 | |
|     - name: rust_registry
 | |
|       path: /usr/local/cargo/registry
 | |
|   depends_on:
 | |
|     - backend_code_quality
 | |
|   commands:
 | |
|     - cd moneymgr_backend
 | |
|     - cargo test
 | |
| 
 | |
| 
 | |
| - name: backend_build
 | |
|   image: rust
 | |
|   when:
 | |
|     event:
 | |
|       - tag
 | |
|   volumes:
 | |
|   - name: rust_registry
 | |
|     path: /usr/local/cargo/registry
 | |
|   - name: web_app
 | |
|     path: /tmp/web_build
 | |
|   - name: release
 | |
|     path: /tmp/release
 | |
|   depends_on:
 | |
|   - backend_test
 | |
|   - web_build
 | |
|   commands:
 | |
|   - cd moneymgr_backend
 | |
|   - mv /tmp/web_build/dist static
 | |
|   - cargo build --release
 | |
|   - cargo build --release --example api_curl
 | |
|   - ls -lah target/release/moneymgr_backend target/release/examples/api_curl
 | |
|   - cp target/release/moneymgr_backend target/release/examples/api_curl /tmp/release
 | |
| 
 | |
| # Mobile app code quality
 | |
| - name: mobile_app_code_quality
 | |
|   image: ghcr.io/cirruslabs/flutter:latest
 | |
|   depends_on:
 | |
|   - fetch
 | |
|   commands:
 | |
|   - echo "Build version:" $(git describe --tags --abbrev=0)
 | |
|   - echo "Build number:" $(git rev-list --count $(git describe --tags --abbrev=0))
 | |
|   - cd moneymgr_mobile
 | |
|   - flutter --disable-analytics
 | |
|   - flutter pub get --enforce-lockfile
 | |
|   - dart run build_runner build
 | |
|   - flutter analyze
 | |
| 
 | |
| # Mobile app build
 | |
| - name: mobile_app_build
 | |
|   image: ghcr.io/cirruslabs/flutter:latest
 | |
|   depends_on:
 | |
|   - backend_build # prevent synchronous backend & frontend build
 | |
|   - mobile_app_code_quality
 | |
|   when:
 | |
|     event:
 | |
|       - tag
 | |
|   environment:
 | |
|     JKS_KEYSTORE:
 | |
|       from_secret: JKS_KEYSTORE
 | |
|     JKS_KEYSTORE_PASSWORD:
 | |
|       from_secret: JKS_KEYSTORE_PASSWORD
 | |
|   volumes:
 | |
|   - name: release
 | |
|     path: /tmp/release
 | |
|   commands:
 | |
|   - cd moneymgr_mobile
 | |
|   - flutter --disable-analytics
 | |
|   - bash android/ci_write_keystore.sh
 | |
|   - flutter pub get --enforce-lockfile
 | |
|   - dart run build_runner build
 | |
|   - flutter build apk
 | |
|     --release
 | |
|     --flavor publish
 | |
|     --build-name $(git describe --tags --abbrev=0)
 | |
|     --split-per-abi
 | |
|     --target-platform android-arm64
 | |
|     --build-number $(git rev-list --count $(git describe --tags --abbrev=0))
 | |
|   - cp build/app/outputs/flutter-apk/app-arm64-v8a-publish-release.apk /tmp/release/moneymgr_mobile_arm64-v8a.apk
 | |
| 
 | |
| # Release
 | |
| - name: gitea_release
 | |
|   image: plugins/gitea-release
 | |
|   depends_on:
 | |
|   - backend_build
 | |
|   - mobile_app_build
 | |
|   when:
 | |
|     event:
 | |
|       - tag
 | |
|   volumes:
 | |
|   - name: release
 | |
|     path: /tmp/release
 | |
|   environment:
 | |
|     PLUGIN_API_KEY:
 | |
|       from_secret: API_KEY
 | |
|   settings:
 | |
|     base_url: https://gitea.communiquons.org
 | |
|     files: /tmp/release/*
 | |
|     checksum: sha512
 | |
| 
 | |
| volumes:
 | |
| - name: rust_registry
 | |
|   temp: {}
 | |
| - name: web_app
 | |
|   temp: {}
 | |
| - name: release
 | |
|   temp: {} |