name: "Create Gitea Release" # This workflow is triggered manually from the Gitea Actions UI on: workflow_dispatch: inputs: RELEASE_TAG: description: 'The release tag to create, formatted as v{Major}.{Minor}.{Patch}' required: true jobs: release: name: "Release" runs-on: "ubuntu-latest" steps: # Step 1: Check out the repository source code and its submodules. # The TOKEN_GITEA is used here to grant permission for the later 'git push'. - name: Checkout source uses: "actions/checkout@v4" with: token: ${{ secrets.TOKEN_GITEA }} submodules: true # Step 2: Create a new release branch, update the submodule to the specified tag, # and push the new branch to the Gitea repository. - name: Create Branch and Update Submodule run: | # Configure git user for the commit git config user.email "actions@gitea.local" git config user.name "Gitea Actions" # Create the new release branch git checkout -b 'release-${{ inputs.RELEASE_TAG }}' # Enter the submodule directory, fetch the latest tags, and check out the correct one. # This points the submodule to the specific commit associated with the release tag. (cd calcom && git fetch --tags origin && git checkout 'refs/tags/${{ inputs.RELEASE_TAG }}') # Stage and commit the change to the submodule pointer git add calcom git commit -m "Update submodule to Cal.com version ${{ inputs.RELEASE_TAG }}" # Push the newly created release branch to the remote Gitea repository git push origin 'release-${{ inputs.RELEASE_TAG }}' # Step 3: Call the Gitea API to create the official release object. # This uses the same API token to authorize the action. - name: "Create Gitea Release" env: GITEA_TOKEN: ${{ secrets.TOKEN_GITEA }} GITEA_API_URL: https://git.nethery.dev/api/v1 OWNER: ${{ gitea.repository_owner }} REPO: ${{ gitea.repository_name }} run: | # Determine if the tag indicates a pre-release is_prerelease=false if [[ "${{ inputs.RELEASE_TAG }}" == *"-rc"* || "${{ inputs.RELEASE_TAG }}" == *"-beta"* ]]; then is_prerelease=true fi echo "Creating release ${{ inputs.RELEASE_TAG }}..." echo "Is prerelease: $is_prerelease" # Use curl to send a POST request to the Gitea API's 'create release' endpoint curl --fail --silent --show-error -L -X POST \ -H "accept: application/json" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ "${GITEA_API_URL}/repos/${OWNER}/${REPO}/releases" \ -d '{ "tag_name": "${{ inputs.RELEASE_TAG }}", "target_commitish": "release-${{ inputs.RELEASE_TAG }}", "name": "${{ inputs.RELEASE_TAG }}", "body": "For Cal.com release details, see: https://github.com/calcom/cal.com/releases/tag/${{ inputs.RELEASE_TAG }}", "prerelease": '${is_prerelease}' }'