Skip to content

Commit

Permalink
Merge pull request #83 from caibirdme/dev
Browse files Browse the repository at this point in the history
ci: add workflow that can build docker image automatically when MR is…
  • Loading branch information
caibirdme authored Aug 1, 2024
2 parents 8e3bf6b + aa4e48e commit f95f657
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions .github/workflows/auto-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Rust CI

on:
pull_request:
types: [closed]

jobs:
check_changes:
runs-on: ubuntu-latest
# exec only when PR is merged
if: github.event.pull_request.merged == true
outputs:
rust_changed: ${{ steps.check_rust_changes.outputs.rust_changed }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check for Rust file changes
id: check_rust_changes
run: |
git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} > changes.txt
if grep -qE '\.rs$|Cargo\.toml' changes.txt; then
echo "rust_changed=true" >> $GITHUB_OUTPUT
else
echo "rust_changed=false" >> $GITHUB_OUTPUT
fi
rust_ci:
needs: check_changes
if: needs.check_changes.outputs.rust_changed == 'true'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
matrix:
target: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl]
steps:
- uses: actions/checkout@v4

- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.80.0
profile: minimal
override: true
target: ${{ matrix.target }}

- name: Install cross
run: cargo install cross

- name: Build with cross
run: cross build --target ${{ matrix.target }} --release

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:latest-${{ matrix.target }}
file: docker/${{ matrix.target }}/Dockerfile
no_changes:
needs: check_changes
if: needs.check_changes.outputs.rust_changed == 'false'
runs-on: ubuntu-latest
steps:
- name: No Rust changes
run: echo "No changes to Rust files or Cargo.toml, skipping CI."

0 comments on commit f95f657

Please sign in to comment.