diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 5ab759a..f2c4af3 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -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/rust-build.action@v1.4.5 - 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 }} \ No newline at end of file diff --git a/.github/workflows/pr_test.yml b/.github/workflows/pr_test.yml new file mode 100644 index 0000000..0903ff8 --- /dev/null +++ b/.github/workflows/pr_test.yml @@ -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