Skip to content

Nightly build

Nightly build #417

Workflow file for this run

name: Nightly build
on:
workflow_dispatch:
schedule:
- cron: "30 5 * * *" # 0530 UTC every day
jobs:
# Create snapshot of main branch for nightly build
nightly-snapshot:
name: Create snapshot
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GH_ADMIN_COMMIT_TOKEN }}
- name: Get latest existing tag
uses: WyriHaximus/github-action-get-previous-tag@v1
id: get-latest-tag
- name: Set new proposed version
uses: paulhatch/[email protected]
id: set-version
with:
tag_prefix: "v"
version_format: "${major}.${minor}.${patch}"
major_pattern: "(MAJOR)"
minor_pattern: "(MINOR)"
- name: Add -nightly+(date)-(commit ID) prefix to version
id: set-nightly-version
run: |
echo version=${{ steps.set-version.outputs.version }}-nightly+`date +%F`-`git rev-parse --short HEAD` >> "$GITHUB_OUTPUT"
- name: Generate changelog since last tag
id: generate-changelog
run: |
{
echo 'changelog<<EOF'
git log --format="* %s" ${{ steps.get-latest-tag.outputs.tag }}..HEAD | { grep -v "(IGNORE)" || :; }
echo EOF
} >> "$GITHUB_OUTPUT"
- name: Log new version & changelog
run: |
echo "Proposed new version: $VERSION"
echo "Nightly version: $NIGHTLY_VERSION"
echo "Changelog: $CHANGELOG"
env:
VERSION: ${{ steps.set-version.outputs.version }}
NIGHTLY_VERSION: ${{ steps.set-nightly-version.outputs.version }}
CHANGELOG: ${{ steps.generate-changelog.outputs.changelog }}
- name: Bump c2patool crate version
run: |
sed -i "s/^version = \"[^\"]*\"$/version = \"$VERSION\"/;" Cargo.toml
env:
VERSION: ${{ steps.set-nightly-version.outputs.version }}
- name: Swap in nightly c2pa-rs build
run: |
sed -i "s/^c2pa = { version = \"[^\"]*\",/c2pa = { git = \"https:\\/\\/github.com\\/contentauth\\/c2pa-rs.git\", branch = \"nightly\",/;" Cargo.toml
- name: Update changelog
run: |
(head -8 CHANGELOG.md && echo "## $VERSION" && date "+_%d %B %Y_" && echo "" && (echo "$CHANGELOG" | sed -E 's_\(#([0-9]+)\)_([#\1](https://github.com/contentauth/c2patool/pull/\1)\)_') && tail -n +9 CHANGELOG.md) > CHANGELOG.new.md
mv CHANGELOG.new.md CHANGELOG.md
env:
VERSION: ${{ steps.set-version.outputs.version }}
CHANGELOG: ${{ steps.generate-changelog.outputs.changelog }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: cargo
- name: Create or update Cargo.lock
run: |
cargo update -w
git add -f Cargo.lock
- name: Report differences for "prepare (release)" commit
run: git diff
- name: Commit Cargo.toml, Cargo.lock, and changelog
uses: stefanzweifel/git-auto-commit-action@v4
id: commit
with:
branch: nightly
push_options: '--force'
commit_message: Prepare ${{ steps.set-nightly-version.outputs.version }} release
commit_user_name: Adobe CAI Team
commit_user_email: [email protected]
create_branch: true
publish-nightly-binaries:
name: Publish c2patool nightly binaries
runs-on: ${{ matrix.os }}
needs: nightly-snapshot
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
include:
- os: macos-latest
artifact_name: c2patool_mac_universal.zip
- os: ubuntu-latest
artifact_name: c2patool_linux_intel.tar.gz
- os: windows-latest
artifact_name: c2patool_win_intel.zip
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: nightly
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2
- name: Run cargo check
run: cargo check
- name: Run cargo test --all
run: cargo test --all
- name: Build nightly release artifacts
run: make release
- name: Upload build as artifact
uses: actions/upload-artifact@v3
with:
path: target/${{ matrix.artifact_name }}
name: ${{ matrix.artifact_name }}
retention-days: 15
if-no-files-found: error