Add gitea actions
This commit is contained in:
		
							
								
								
									
										304
									
								
								.gitea/workflows
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										304
									
								
								.gitea/workflows
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,304 @@ | ||||
| name: Release | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     tags: | ||||
|       - '*' | ||||
|  | ||||
| env: | ||||
|   # update with the name of the main binary | ||||
|   binary: bevy_github_ci_template | ||||
|   add_binaries_to_github_release: true | ||||
|   #itch_target: <itch.io-username>/<game-name> | ||||
|  | ||||
|   # Before enabling LFS, please take a look at GitHub's documentation for costs and quota limits: | ||||
|   # https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-storage-and-bandwidth-usage | ||||
|   use_git_lfs: false | ||||
|  | ||||
|  | ||||
| jobs: | ||||
|  | ||||
|   # Build for wasm | ||||
|   release-wasm: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: olegtarasov/get-tag@v2.1.2 | ||||
|         id: get_version | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           lfs: ${{ env.use_git_lfs }} | ||||
|       - uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           targets: wasm32-unknown-unknown | ||||
|       - name: install wasm-bindgen-cli | ||||
|         run: | | ||||
|           cargo install wasm-bindgen-cli | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|           cargo build --release --target wasm32-unknown-unknown | ||||
|  | ||||
|       - name: Prepare package | ||||
|         run: | | ||||
|           wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm32-unknown-unknown/release/${{ env.binary }}.wasm | ||||
|           cp -r assets wasm/ || true # Try to copy, but ignore if it can't copy if source directory does not exist  | ||||
|  | ||||
|       - name: Package as a zip | ||||
|         working-directory: ./wasm | ||||
|         run: | | ||||
|           zip --recurse-paths ../${{ env.binary }}.zip . | ||||
|  | ||||
|       - name: Upload binaries to artifacts | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           path: ${{ env.binary }}.zip | ||||
|           name: wasm | ||||
|           retention-days: 1 | ||||
|  | ||||
|       - name: Upload binaries to release | ||||
|         if: ${{ env.add_binaries_to_github_release == 'true' }} | ||||
|         uses: svenstaro/upload-release-action@v2 | ||||
|         with: | ||||
|           repo_token: ${{ secrets.GITHUB_TOKEN }} | ||||
|           file: ${{ env.binary }}.zip | ||||
|           asset_name: ${{ env.binary }}-wasm-${{ steps.get_version.outputs.tag }}.zip | ||||
|           tag: ${{ github.ref }} | ||||
|           overwrite: true | ||||
|  | ||||
|   # Build for Linux | ||||
|   release-linux: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: olegtarasov/get-tag@v2.1.2 | ||||
|         id: get_version | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           lfs: ${{ env.use_git_lfs }} | ||||
|       - uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           targets: x86_64-unknown-linux-gnu | ||||
|       - name: install dependencies | ||||
|         run: | | ||||
|           sudo apt-get update; sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|           cargo build --release --target x86_64-unknown-linux-gnu | ||||
|  | ||||
|       - name: Prepare package | ||||
|         run: | | ||||
|           mkdir linux | ||||
|           cp target/x86_64-unknown-linux-gnu/release/${{ env.binary }} linux/ | ||||
|           cp -r assets linux/ || true # Try to copy, but ignore if it can't copy if source directory does not exist | ||||
|  | ||||
|       - name: Package as a zip | ||||
|         working-directory: ./linux | ||||
|         run: | | ||||
|           zip --recurse-paths ../${{ env.binary }}.zip . | ||||
|  | ||||
|       - name: Upload binaries to artifacts | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           path: ${{ env.binary }}.zip | ||||
|           name: linux | ||||
|           retention-days: 1 | ||||
|  | ||||
|       - name: Upload binaries to release | ||||
|         if: ${{ env.add_binaries_to_github_release == 'true' }} | ||||
|         uses: svenstaro/upload-release-action@v2 | ||||
|         with: | ||||
|           repo_token: ${{ secrets.GITHUB_TOKEN }} | ||||
|           file: ${{ env.binary }}.zip | ||||
|           asset_name: ${{ env.binary }}-linux-${{ steps.get_version.outputs.tag }}.zip | ||||
|           tag: ${{ github.ref }} | ||||
|           overwrite: true | ||||
|  | ||||
|   # Build for Windows | ||||
|   release-windows: | ||||
|     runs-on: windows-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: olegtarasov/get-tag@v2.1.2 | ||||
|         id: get_version | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           lfs: ${{ env.use_git_lfs }} | ||||
|       - uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           targets: x86_64-pc-windows-msvc | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|           cargo build --release --target x86_64-pc-windows-msvc | ||||
|  | ||||
|       - name: Prepare package | ||||
|         run: | | ||||
|           mkdir windows | ||||
|           cp target/x86_64-pc-windows-msvc/release/${{ env.binary }}.exe windows/ | ||||
|           mkdir assets -ea 0 # create the assets directory if it does not exist, it will get ignored in the zip if empty | ||||
|           cp -r assets windows/ | ||||
|  | ||||
|       - name: Package as a zip | ||||
|         run: | | ||||
|           Compress-Archive -Path windows/* -DestinationPath ${{ env.binary }}.zip | ||||
|  | ||||
|       - name: Upload binaries to artifacts | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           path: ${{ env.binary }}.zip | ||||
|           name: windows | ||||
|           retention-days: 1 | ||||
|  | ||||
|       - name: Upload binaries to release | ||||
|         if: ${{ env.add_binaries_to_github_release == 'true' }} | ||||
|         uses: svenstaro/upload-release-action@v2 | ||||
|         with: | ||||
|           repo_token: ${{ secrets.GITHUB_TOKEN }} | ||||
|           file: ${{ env.binary }}.zip | ||||
|           asset_name: ${{ env.binary }}-windows-${{ steps.get_version.outputs.tag }}.zip | ||||
|           tag: ${{ github.ref }} | ||||
|           overwrite: true | ||||
|  | ||||
|   # Build for MacOS x86_64 | ||||
|   release-macOS-intel: | ||||
|     runs-on: macOS-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: olegtarasov/get-tag@v2.1.2 | ||||
|         id: get_version | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           lfs: ${{ env.use_git_lfs }} | ||||
|       - uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           targets: x86_64-apple-darwin | ||||
|       - name: Environment Setup | ||||
|         run: | | ||||
|           export CFLAGS="-fno-stack-check" | ||||
|           export MACOSX_DEPLOYMENT_TARGET="10.9" | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|           cargo build --release --target x86_64-apple-darwin | ||||
|  | ||||
|       - name: Prepare Package | ||||
|         run: | | ||||
|           mkdir -p ${{ env.binary }}.app/Contents/MacOS | ||||
|           cp target/x86_64-apple-darwin/release/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/ | ||||
|           cp -r assets ${{ env.binary }}.app/Contents/MacOS/ || true # Try to copy, but ignore if it can't copy if source directory does not exist | ||||
|           hdiutil create -fs HFS+ -volname "${{ env.binary }}" -srcfolder ${{ env.binary }}.app ${{ env.binary }}-macOS-intel.dmg | ||||
|  | ||||
|       - name: Upload binaries to artifacts | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           path: ${{ env.binary }}-macOS-intel.dmg | ||||
|           name: macOS-intel | ||||
|           retention-days: 1 | ||||
|  | ||||
|       - name: Upload binaries to release | ||||
|         if: ${{ env.add_binaries_to_github_release == 'true' }} | ||||
|         uses: svenstaro/upload-release-action@v2 | ||||
|         with: | ||||
|           repo_token: ${{ secrets.GITHUB_TOKEN }} | ||||
|           file:  ${{ env.binary }}-macOS-intel.dmg | ||||
|           asset_name: ${{ env.binary }}-macOS-intel-${{ steps.get_version.outputs.tag }}.dmg | ||||
|           tag: ${{ github.ref }} | ||||
|           overwrite: true | ||||
|  | ||||
|   # Build for MacOS Apple Silicon | ||||
|   release-macOS-apple-silicon: | ||||
|     runs-on: macOS-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: olegtarasov/get-tag@v2.1.2 | ||||
|         id: get_version | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           lfs: ${{ env.use_git_lfs }} | ||||
|       - uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           targets: aarch64-apple-darwin | ||||
|       - name: Environment  | ||||
|         # macOS 11 was the first version to support ARM | ||||
|         run: | | ||||
|           export MACOSX_DEPLOYMENT_TARGET="11" | ||||
|  | ||||
|       - name: Build | ||||
|         run: | | ||||
|           cargo build --release --target aarch64-apple-darwin | ||||
|  | ||||
|       - name: Prepare Package | ||||
|         run: | | ||||
|           mkdir -p ${{ env.binary }}.app/Contents/MacOS | ||||
|           cp target/aarch64-apple-darwin/release/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/ | ||||
|           cp -r assets ${{ env.binary }}.app/Contents/MacOS/ || true # Try to copy, but ignore if it can't copy if source directory does not exist | ||||
|           hdiutil create -fs HFS+ -volname "${{ env.binary }}-macOS-apple-silicon" -srcfolder ${{ env.binary }}.app ${{ env.binary }}-macOS-apple-silicon.dmg | ||||
|  | ||||
|       - name: Upload binaries to artifacts | ||||
|         uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           path: ${{ env.binary }}-macOS-apple-silicon.dmg | ||||
|           name: macOS-apple-silicon | ||||
|           retention-days: 1 | ||||
|  | ||||
|       - name: Upload binaries to release | ||||
|         if: ${{ env.add_binaries_to_github_release == 'true' }} | ||||
|         uses: svenstaro/upload-release-action@v2 | ||||
|         with: | ||||
|           repo_token: ${{ secrets.GITHUB_TOKEN }} | ||||
|           file: ${{ env.binary }}-macOS-apple-silicon.dmg | ||||
|           asset_name: ${{ env.binary }}-macOS-apple-silicon-${{ steps.get_version.outputs.tag }}.dmg | ||||
|           tag: ${{ github.ref }} | ||||
|           overwrite: true | ||||
|  | ||||
|   check-if-upload-to-itch-is-configured: | ||||
|     runs-on: ubuntu-latest | ||||
|     outputs: | ||||
|       should-upload: ${{ steps.check-env.outputs.has-itch-target }} | ||||
|     steps: | ||||
|       - id: check-env | ||||
|         run: | | ||||
|           if [[ -z "$itch_target" ]]; then | ||||
|             echo "has-itch-target=no" >> $GITHUB_OUTPUT | ||||
|           else | ||||
|             echo "has-itch-target=yes" >> $GITHUB_OUTPUT | ||||
|           fi | ||||
|  | ||||
|   upload-to-itch: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: | ||||
|       - check-if-upload-to-itch-is-configured | ||||
|       - release-wasm | ||||
|       - release-linux | ||||
|       - release-windows | ||||
|       - release-macOS-intel | ||||
|       - release-macOS-apple-silicon | ||||
|     if: ${{ needs.check-if-upload-to-itch-is-configured.outputs.should-upload == 'yes' }} | ||||
|  | ||||
|     steps: | ||||
|       - name: Download artifacts | ||||
|         uses: actions/download-artifact@v3 | ||||
|         with: | ||||
|           path: ./builds | ||||
|  | ||||
|       - name: Install butler | ||||
|         run: | | ||||
|           curl -L -o butler.zip https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default | ||||
|           unzip butler.zip | ||||
|           chmod +x butler | ||||
|           ./butler -V | ||||
|       - uses: olegtarasov/get-tag@v2.1.2 | ||||
|         id: get_version | ||||
|       - name: Upload to itch.io | ||||
|         env: | ||||
|           BUTLER_API_KEY: ${{ secrets.BUTLER_CREDENTIALS }} | ||||
|         run: | | ||||
|           for channel in $(ls builds); do | ||||
|             ./butler push \ | ||||
|                 --fix-permissions \ | ||||
|                 --userversion="${{ steps.get_version.outputs.tag }}" \ | ||||
|                 builds/$channel/* \ | ||||
|                 ${{ env.itch_target }}:$channel | ||||
|           done | ||||
							
								
								
									
										78
									
								
								.gitea/workfows/ci.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								.gitea/workfows/ci.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| name: CI | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: [main] | ||||
|   pull_request: | ||||
|     branches: [main] | ||||
|  | ||||
| env: | ||||
|   CARGO_TERM_COLOR: always | ||||
|  | ||||
| jobs: | ||||
|   # Run cargo test | ||||
|   test: | ||||
|     name: Test Suite | ||||
|     runs-on: ubuntu-latest | ||||
|     timeout-minutes: 30 | ||||
|     steps: | ||||
|       - name: Checkout sources | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Cache | ||||
|         uses: actions/cache@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             ~/.cargo/bin/ | ||||
|             ~/.cargo/registry/index/ | ||||
|             ~/.cargo/registry/cache/ | ||||
|             ~/.cargo/git/db/ | ||||
|             target/ | ||||
|           key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.toml') }} | ||||
|       - name: Install stable toolchain | ||||
|         uses: dtolnay/rust-toolchain@stable | ||||
|       - name: Install Dependencies | ||||
|         run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev | ||||
|       - name: Run cargo test | ||||
|         run: cargo test | ||||
|  | ||||
|   # Run cargo clippy -- -D warnings | ||||
|   clippy_check: | ||||
|     name: Clippy | ||||
|     runs-on: ubuntu-latest | ||||
|     timeout-minutes: 30 | ||||
|     steps: | ||||
|       - name: Checkout sources | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Cache | ||||
|         uses: actions/cache@v4 | ||||
|         with: | ||||
|           path: | | ||||
|             ~/.cargo/bin/ | ||||
|             ~/.cargo/registry/index/ | ||||
|             ~/.cargo/registry/cache/ | ||||
|             ~/.cargo/git/db/ | ||||
|             target/ | ||||
|           key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('**/Cargo.toml') }} | ||||
|       - name: Install stable toolchain | ||||
|         uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           components: clippy | ||||
|       - name: Install Dependencies | ||||
|         run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev | ||||
|       - name: Run clippy | ||||
|         run: cargo clippy -- -D warnings | ||||
|  | ||||
|   # Run cargo fmt --all -- --check | ||||
|   format: | ||||
|     name: Format | ||||
|     runs-on: ubuntu-latest | ||||
|     timeout-minutes: 30 | ||||
|     steps: | ||||
|       - name: Checkout sources | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Install stable toolchain | ||||
|         uses: dtolnay/rust-toolchain@stable | ||||
|         with: | ||||
|           components: rustfmt | ||||
|       - name: Run cargo fmt | ||||
|         run: cargo fmt --all -- --check | ||||
		Reference in New Issue
	
	Block a user