Update version in compose README. #188
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Build on any push, and release on tag" | |
permissions: | |
contents: "write" | |
on: | |
push: | |
branches: | |
- "*" | |
tags: | |
- "*" | |
jobs: | |
cargo_version: | |
name: Get version number from Cargo.toml | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.awk.outputs.version }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get the version number using awk | |
id: awk | |
run: echo "version=$(awk -F\" '/^version/ {print $2}' Cargo.toml)" >> "$GITHUB_OUTPUT" | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run tests | |
run: cargo test | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Enforce formatting | |
run: cargo fmt --check | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- uses: Swatinem/rust-cache@v2 | |
- name: Linting | |
run: cargo clippy -- -D warnings | |
build: | |
name: Build and upload binary asset | |
needs: | |
- test | |
- fmt | |
- clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build the binary | |
run: make | |
- name: Archive binary | |
uses: actions/upload-artifact@v4 | |
with: | |
name: xtender | |
path: xtender | |
package_rpm: | |
name: Build RPM Package | |
needs: [cargo_version, build] | |
runs-on: ubuntu-latest | |
outputs: | |
package_name: ${{ steps.build_rpm.outputs.package }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download binary artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: xtender | |
- name: Build RPM Package | |
id: build_rpm | |
uses: kentik/[email protected] | |
with: | |
name: geneos-xtender | |
version: ${{ needs.cargo_version.outputs.version }} | |
arch: x86_64 | |
format: rpm | |
package: package_rpm.yaml | |
- name: Archive RPM Package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.build_rpm.outputs.package }} | |
path: ${{ steps.build_rpm.outputs.package }} | |
package_deb: | |
name: Build DEB Package | |
needs: [cargo_version, build] | |
runs-on: ubuntu-latest | |
outputs: | |
package_name: ${{ steps.build_deb.outputs.package }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download binary artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: xtender | |
- name: Build DEB Package | |
id: build_deb | |
uses: kentik/[email protected] | |
with: | |
name: geneos-xtender | |
version: ${{ needs.cargo_version.outputs.version }} | |
arch: x86_64 | |
format: deb | |
package: package_deb.yaml | |
- name: Archive DEB Package | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.build_deb.outputs.package }} | |
path: ${{ steps.build_deb.outputs.package }} | |
bats_tests: | |
name: Bats tests | |
needs: | |
- package_deb | |
- package_rpm | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- "ubuntu:focal" | |
- "oraclelinux:8" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download DEB Package artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ needs.package_deb.outputs.package_name }} | |
- name: Download RPM Package artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ needs.package_rpm.outputs.package_name }} | |
- name: ${{ matrix.image }} - Build bats image | |
run: | | |
docker build --platform linux/amd64 -t bats_tests_${{ matrix.image }} -f tests/integration_tests/Dockerfile --build-arg IMAGE=${{ matrix.image }} . | |
- name: ${{ matrix.image }} - Run bats image | |
run: docker run bats_tests_${{ matrix.image }} | |
release: | |
name: Release | |
needs: | |
- cargo_version | |
- package_deb | |
- package_rpm | |
- bats_tests | |
if: startsWith(github.ref, 'refs/tags/') | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download binary artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: xtender | |
- name: Download DEB Package artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ needs.package_deb.outputs.package_name }} | |
- name: Download RPM Package artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ needs.package_rpm.outputs.package_name }} | |
- name: Create a tar gzipped file of the binary | |
run: tar -czvf geneos-xtender-${{ needs.cargo_version.outputs.version }}-static-linux-amd64.tar.gz xtender | |
- name: Archive release artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-artifacts | |
path: | | |
geneos-xtender-${{ needs.cargo_version.outputs.version }}-static-linux-amd64.tar.gz | |
${{ needs.package_deb.outputs.package_name }} | |
${{ needs.package_rpm.outputs.package_name }} | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
geneos-xtender-${{ needs.cargo_version.outputs.version }}-static-linux-amd64.tar.gz | |
${{ needs.package_deb.outputs.package_name }} | |
${{ needs.package_rpm.outputs.package_name }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |