Skip to content

Commit

Permalink
cross-build-check
Browse files Browse the repository at this point in the history
  • Loading branch information
EliMoshkovich committed Oct 3, 2024
1 parent 0cd6abe commit f7373f0
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 78 deletions.
159 changes: 81 additions & 78 deletions .github/workflows/build_release.yml
Original file line number Diff line number Diff line change
@@ -1,94 +1,97 @@
name: Cedar-agent and Docker Build
name: Cedar-agent cross-build and Docker Build

on:
pull_request:
branches:
- main
release:
types: [published]
on: push
# release:
# types: [published]

jobs:
# On PR: Run Cargo tests, build, and update
pr_checks:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true

- name: Run cargo update
run: cargo update
env:
# The project name specified in Cargo.toml
PROJECT_NAME: cedar-agent

- name: Run cargo test
run: cargo test

- name: Run cargo build
run: cargo build

# On Release: Publish Cargo package, build and push Docker image
release:
if: github.event_name == 'release'
runs-on: ubuntu-latest
timeout-minutes: 70
jobs:
build-cross-package:
# Set the job to run on the platform specified by the matrix below
runs-on: ${{ matrix.runner }}

# Define the build matrix for cross-compilation
strategy:
matrix:
include:
- name: linux-amd64
runner: ubuntu-latest
target: x86_64-unknown-linux-gnu
# ------- Lets keep this commented out for now for future optional use
# - name: win-amd64
# runner: windows-latest
# target: x86_64-pc-windows-msvc
# - name: macos-amd64
# runner: macos-latest
# target: x86_64-apple-darwin
- name: macos-arm64
runner: macos-latest
target: aarch64-apple-darwin

steps:
- name: Checkout repository
- name: Checkout
uses: actions/checkout@v3

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

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

- name: Login to DockerHub
uses: docker/login-action@v3

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

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

- name: Setup Cache
uses: Swatinem/rust-cache@v2

- name: Update Cargo.toml version
run: |
sed -i '/\[package\]/,/^version = /s/^version = .*/version = \"${{ github.event.release.tag_name }}\"/' Cargo.toml
cat Cargo.toml
- name: Build Binary
run: cargo build --verbose --locked --release --target ${{ matrix.target }}

- name: Dry run cargo publish
run: cargo publish --dry-run --allow-dirty

- name: Publishing Rust build artifacts
uses: rust-build/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.TOKEN_GITHUB }}
run: cargo publish --dry-run --allow-dirty --target ${{ matrix.target }}

- uses: taiki-e/upload-rust-binary-action@v1
with:
RUSTTARGET: x86_64-unknown-linux-musl
bin: cedar-agent-${{ github.event.release.tag_name }}
token: ${{ secrets.TOKEN_GITHUB }}

- name: Publish package to crates.io
run: cargo publish --token ${CRATES_TOKEN}
env:
CRATES_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
# - name: Publish package to crates.io
# run: cargo publish --token ${CRATES_TOKEN}
# env:
# CRATES_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

# docker-build-push:
# runs-on: ubuntu-latest
# timeout-minutes: 70
# needs: build-cross-package
# steps:
# - name: Checkout repository
# uses: actions/checkout@v3

# - name: Set up QEMU
# uses: docker/setup-qemu-action@v3

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

# - name: Login to DockerHub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build & Push cedar-agent
uses: docker/build-push-action@v4
with:
file: Dockerfile
platforms: linux/amd64,linux/arm64
push: true
cache-from: type=registry,ref=permitio/cedar-agent:latest
cache-to: type=inline
tags: |
permitio/cedar-agent:latest
permitio/cedar-agent:${{ github.event.release.tag_name }}
# - name: Build & Push cedar-agent
# uses: docker/build-push-action@v4
# with:
# file: Dockerfile
# platforms: linux/amd64,linux/arm64
# push: true
# cache-from: type=registry,ref=permitio/cedar-agent:latest
# cache-to: type=inline
# tags: |
# permitio/cedar-agent:latest
# permitio/cedar-agent:${{ github.event.release.tag_name }}
30 changes: 30 additions & 0 deletions .github/workflows/pr_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Cedar-agent - PR test

on:
pull_request:
branches:
- main

jobs:
pr_checks:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true

- name: Run cargo update
run: cargo update

- name: Run cargo test
run: cargo test

- name: Run cargo build
run: cargo build

0 comments on commit f7373f0

Please sign in to comment.