Skip to content

fix(deps): update rust crate tokio to v1.43.0 (#162) #507

fix(deps): update rust crate tokio to v1.43.0 (#162)

fix(deps): update rust crate tokio to v1.43.0 (#162) #507

name: Continuous Delivery / Docker
on:
push:
branches:
- main
pull_request:
release:
types: [published]
jobs:
push_readme:
name: Push README to Docker Hub
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v4
- name: Push README to Docker Hub
uses: christian-korneck/update-container-description-action@v1
env:
DOCKER_USER: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKER_PASS: ${{ secrets.DOCKERHUB_TOKEN }}
with:
destination_container_repo: danonline/autopulse
provider: dockerhub
short_description: '💫 bridge your media server'
readme_file: 'README.md'
build_ui:
name: Build UI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Pull Request suffix
run: |
if [ -n "${{ github.event.number }}" ]; then
echo "PR number: ${{ github.event.number }}"
echo "uitag=ui-pr-${{ github.event.number }}" >> "$GITHUB_OUTPUT"
elif [ -n "${{ github.event.release.tag_name }}" ]; then
echo "Release tag: ${{ github.event.release.tag_name }}"
echo "uitag=ui-${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT"
else
echo "Not a PR branch"
echo "uitag=ui" >> "$GITHUB_OUTPUT"
fi
id: tag
- name: Build and push (ui)
uses: docker/build-push-action@v6
with:
push: true
tags: danonline/autopulse:${{ steps.tag.outputs.uitag }}
context: ui/
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/amd64,linux/arm64
build:
name: Build - ${{ matrix.platform.name }} - ${{ matrix.feature }}
runs-on: ubuntu-latest
strategy:
matrix:
feature:
- full
- postgres
- sqlite
platform:
- name: linux/amd64
target: x86_64-unknown-linux-musl
- name: linux/arm64
target: aarch64-unknown-linux-musl
tag: -arm64
build_args: |
IMAGE_TAG=arm64v8-3.20
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Cargo Cache
if: matrix.feature == 'full'
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-release-${{ matrix.platform.target }}-${{ matrix.feature }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-release-${{ matrix.platform.target }}-full-
- name: Cargo Cache
if: matrix.feature != 'full'
uses: actions/cache/restore@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-release-${{ matrix.platform.target }}-${{ matrix.feature }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-release-${{ matrix.platform.target }}-full-
- name: Pull Request suffix
run: |
if [ -n "${{ github.event.number }}" ]; then
echo "PR number: ${{ github.event.number }}"
echo "tag=pr-${{ github.event.number }}" >> "$GITHUB_OUTPUT"
elif [ -n "${{ github.event.release.tag_name }}" ]; then
echo "Release tag: ${{ github.event.release.tag_name }}"
echo "tag=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT"
else
echo "Not a PR branch"
echo "tag=latest" >> "$GITHUB_OUTPUT"
fi
id: tag
- name: Test binary
uses: houseabsolute/actions-rust-cross@v0
if: matrix.feature == 'full'
with:
command: test
target: ${{ matrix.platform.target }}
args: "--locked --release --features vendored"
strip: true
- name: Build binary
uses: houseabsolute/actions-rust-cross@v0
if: matrix.feature == 'full'
with:
command: build
target: ${{ matrix.platform.target }}
args: "--locked --release --features vendored"
strip: true
- name: Test
uses: houseabsolute/actions-rust-cross@v0
if: matrix.feature != 'full'
with:
command: test
target: ${{ matrix.platform.target }}
args: "--locked --release --no-default-features --features vendored,${{ matrix.feature }}"
- name: Build
uses: houseabsolute/actions-rust-cross@v0
if: matrix.feature != 'full'
with:
command: build
target: ${{ matrix.platform.target }}
args: "--locked --release --no-default-features --features vendored,${{ matrix.feature }}"
strip: true
- name: Copy binary
run: |
cp target/${{ matrix.platform.target }}/release/autopulse ./autopulse
file ./autopulse
ls target/${{ matrix.platform.target }}/release/
# "latest-platform?" tag, full feature-set
- name: Create Docker Image
uses: docker/build-push-action@v6
if: matrix.feature == 'full'
with:
push: true
context: .
tags: |
danonline/autopulse:${{ steps.tag.outputs.tag }}${{ matrix.platform.tag }}
platforms: ${{ matrix.platform.name }}
build-args: ${{ matrix.platform.build_args }}
# "feature-platform?" tag, selected feature-set
- name: Build and push
uses: docker/build-push-action@v6
if: matrix.feature != 'full'
with:
push: true
context: .
tags: |
danonline/autopulse:${{ steps.tag.outputs.tag }}-${{ matrix.feature }}${{ matrix.platform.tag }}
platforms: ${{ matrix.platform.name }}
build-args: ${{ matrix.platform.build_args }}