Skip to content

Release workflow

Release workflow #6

Workflow file for this run

name: release
on:
workflow_dispatch:
pull_request:
jobs:
collect-modules:
runs-on: ubuntu-latest
outputs:
tf-modules: ${{ steps.collect-modules.outputs.tf-modules }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/collect-modules
id: collect-modules
release-module:
runs-on: ubuntu-latest
needs: ["collect-modules"]
permissions:
contents: write
actions: write
strategy:
matrix:
module: ${{fromJson(needs.collect-modules.outputs.tf-modules)}}
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: cloudsmith-io/cloudsmith-cli-action@v1.0.3
with:
api-key: ${{ secrets.CLOUDSMITH_API_TOKEN }}
- name: Fetch tags
run: git fetch --prune --tags
- name: collect module info
id: module-info
run: |
module_path="${{ matrix.module }}"
module_name=$(yq .module.name $module_path/.releaserc.yaml)
module_version=$(yq .module.version $module_path/.releaserc.yaml)
tag_exists=$(git tag -l | grep -q $module_name-$module_version && echo true || echo false)
echo "module_name=$module_name" >> $GITHUB_OUTPUT
echo "module_version=$module_version" >> $GITHUB_OUTPUT
echo "tag_exists=$tag_exists" >> $GITHUB_OUTPUT
- name: release module
if: steps.module-info.outputs.tag_exists == 'false'
run: >
.github/scripts/release-tf-module.sh
--module-path ${{ matrix.module }}
--publish
--tag-push