name: Build on: push: branches: [ "master" ] tags: - 'v*' pull_request: branches: [ "master" ] env: CARGO_TERM_COLOR: always CARGO_TERM_PROGRESS_WHEN: never jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: awalsh128/cache-apt-pkgs-action@v1.3.0 if: runner.os == 'Linux' with: packages: libudev-dev version: 1.0 - uses: Swatinem/rust-cache@v2.3.0 - name: Build run: cargo build --release --bin kubi --bin kubi-server - name: Create artifact shell: bash run: | mkdir artifact; cp ./target/release/kubi ./artifact; cp ./target/release/kubi-server ./artifact; cp -r ./assets ./artifact; cp ./Server.toml ./artifact; - uses: actions/upload-artifact@v3 with: name: ${{ runner.os }}_${{ runner.arch }} path: ./artifact/* if-no-files-found: error publish-nightly: needs: build permissions: write-all if: (github.event_name == 'push') && (github.ref == 'refs/heads/master') runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/download-artifact@v3 with: path: ./artifacts - uses: rickstaa/action-create-tag@v1 with: tag: nightly tag_exists_error: false force_push_tag: true - name: Create zip files run: | cd ./artifacts; for folder in */; do zip -r "${folder%/}.zip" "$folder"*; rm -rf "$folder"; done; cd ..; - uses: ncipollo/release-action@v1 with: name: nightly tag: nightly allowUpdates: true removeArtifacts: true replacesArtifacts: true prerelease: true generateReleaseNotes: true updateOnlyUnreleased: true artifacts: ./artifacts/* publish-release: needs: build permissions: write-all if: (github.event_name == 'push') && startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v3 with: path: ./artifacts - name: Create zip files run: | cd ./artifacts; for folder in */; do zip -r "${folder%/}.zip" "$folder"; rm -rf "$folder" done; cd ..; - uses: rlespinasse/github-slug-action@v4.4.1 - uses: ncipollo/release-action@v1 with: tag: ${{ env.GITHUB_REF_SLUG_URL }} generateReleaseNotes: true makeLatest: true artifacts: ./artifacts/*