fix(deps): update rust crate tokio to v1.43.0 (#162) #507
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: 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 }} |