# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) Contributors to the OpenEXR Project.

#
# Releases are signed via https://github.com/sigstore/sigstore-python.
# See https://docs.sigstore.dev for information about sigstore.
#
# This action creates a .tar.gz of the complete Imath source tree at
# the given release tag, signs it via sigstore, and uploads the
# .tar.gz and the associated .tar.gz.sigstore credential bundle.
#
# To verify a downloaded release at a given tag:
# 
#   % pip install sigstore
#   % sigstore verify github --cert-identity https://github.com/AcademySoftwareFoundation/Imath/.github/workflows/release-sign.yml@refs/tags/<tag> Imath-<tag>.tar.gz
#

name: Sign Release

on:
  release:
    types: [published]

permissions:
  contents: read
  
jobs:
  release:
    name: Sign & upload release artifacts
    runs-on: ubuntu-latest

    env:
       TAG: ${{ github.ref_name }}
    permissions:
      contents: write
      id-token: write
      repository-projects: write
       
    steps:
      - name: Set Prefix
        # The tag name begins with a 'v', e.g. "v3.2.4", but the prefix
        # should omit the 'v', so the tarball "Imath-3.2.4.tar.gz"
        # extracts files into "Imath-v3.2.4/...".  This matches
        # the GitHub release page autogenerated artifact conventions.
        run: |
          echo IMATH_PREFIX=Imath-${TAG//v}/ >> $GITHUB_ENV
          echo IMATH_TARBALL=Imath-${TAG//v}.tar.gz >> $GITHUB_ENV
        shell: bash

      - name: Checkout
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

      - name: Create archive
        run: git archive --format=tar.gz -o ${IMATH_TARBALL} --prefix ${IMATH_PREFIX} ${TAG}

      - name: Sign archive with Sigstore
        uses: sigstore/gh-action-sigstore-python@790bc6befb9d733738f18d8f895854b453640ec9 # v3.5.0
        with:
          inputs: ${{ env.IMATH_TARBALL }}
          upload-signing-artifacts: false
          release-signing-artifacts: false

      - name: Upload release archive
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh release upload ${TAG} ${IMATH_TARBALL} ${IMATH_TARBALL}.sigstore.json

