Skip to content

chore: release main (#530) #413

chore: release main (#530)

chore: release main (#530) #413

on:
push:
branches:
- main
name: release-please
jobs:
release-please:
runs-on: ubuntu-22.04
permissions:
contents: write
pull-requests: write
outputs:
package-client-released: ${{ steps.release.outputs['libs/client-sdk--release_created'] }}
package-client-tag: ${{ steps.release.outputs['libs/client-sdk--tag_name'] }}
package-server-released: ${{ steps.release.outputs['libs/server-sdk--release_created'] }}
package-server-tag: ${{ steps.release.outputs['libs/server-sdk--tag_name'] }}
package-server-redis-released: ${{ steps.release.outputs['libs/server-sdk-redis-source--release_created'] }}
package-server-redis-tag: ${{ steps.release.outputs['libs/server-sdk-redis-source--tag_name'] }}
package-server-dynamodb-released: ${{ steps.release.outputs['libs/server-sdk-dynamodb-source--release_created'] }}
package-server-dynamodb-tag: ${{ steps.release.outputs['libs/server-sdk-dynamodb-source--tag_name'] }}
package-server-otel-released: ${{ steps.release.outputs['libs/server-sdk-otel--release_created'] }}
package-server-otel-tag: ${{ steps.release.outputs['libs/server-sdk-otel--tag_name'] }}
steps:
# release-please-action v5+ (release-please >= 17) honors `force-tag-creation`
# for draft releases by creating the tag ref via the GitHub API before the
# release object, so a single invocation handles both releases and PRs.
# https://github.com/googleapis/release-please-action/releases/tag/v5.0.0
- uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
release-client:
strategy:
matrix:
# Each of the platforms for which release-artifacts need generated.
os: [ ubuntu-22.04, windows-2022, macos-15-large ]
runs-on: ${{ matrix.os }}
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-client-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- id: release-client
name: Full release of libs/client-sdk
uses: ./.github/actions/sdk-release
with:
# The tag of the release to upload artifacts to.
tag_name: ${{ needs.release-please.outputs.package-client-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/client-sdk'
sdk_cmake_target: 'launchdarkly-cpp-client'
- name: Generate checksums file
env:
HASHES_LINUX: ${{ steps.release-client.outputs.hashes-linux }}
HASHES_WINDOWS: ${{ steps.release-client.outputs.hashes-windows }}
HASHES_MACOS: ${{ steps.release-client.outputs.hashes-macos }}
run: |
# BSD base64 (macOS) uses -D to decode; GNU base64 (Linux/Windows) uses -d.
if [[ "$OSTYPE" == darwin* ]]; then B64_DECODE="base64 -D"; else B64_DECODE="base64 -d"; fi
if [ -n "${HASHES_LINUX}" ]; then
echo "${HASHES_LINUX}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_WINDOWS}" ]; then
echo "${HASHES_WINDOWS}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_MACOS}" ]; then
echo "${HASHES_MACOS}" | $B64_DECODE > checksums.txt
fi
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-client-mac-arm64:
runs-on: macos-15
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-client-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- id: release-client
name: Full release of libs/client-sdk (macOS arm64)
uses: ./.github/actions/sdk-release
with:
tag_name: ${{ needs.release-please.outputs.package-client-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/client-sdk'
sdk_cmake_target: 'launchdarkly-cpp-client'
mac_artifact_arch: 'arm64'
- name: Generate checksums file
env:
HASHES: ${{ steps.release-client.outputs.hashes-macos }}
run: |
# This job always runs on macOS, so use -D (BSD base64 decode).
echo "${HASHES}" | base64 -D > checksums.txt
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-server:
strategy:
matrix:
# Each of the platforms for which release-artifacts need generated.
os: [ ubuntu-22.04, windows-2022, macos-15-large ]
runs-on: ${{ matrix.os }}
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-server-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- id: release-server
name: Full release of libs/server-sdk
uses: ./.github/actions/sdk-release
with:
# The tag of the release to upload artifacts to.
tag_name: ${{ needs.release-please.outputs.package-server-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/server-sdk'
sdk_cmake_target: 'launchdarkly-cpp-server'
- name: Generate checksums file
env:
HASHES_LINUX: ${{ steps.release-server.outputs.hashes-linux }}
HASHES_WINDOWS: ${{ steps.release-server.outputs.hashes-windows }}
HASHES_MACOS: ${{ steps.release-server.outputs.hashes-macos }}
run: |
# BSD base64 (macOS) uses -D to decode; GNU base64 (Linux/Windows) uses -d.
if [[ "$OSTYPE" == darwin* ]]; then B64_DECODE="base64 -D"; else B64_DECODE="base64 -d"; fi
if [ -n "${HASHES_LINUX}" ]; then
echo "${HASHES_LINUX}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_WINDOWS}" ]; then
echo "${HASHES_WINDOWS}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_MACOS}" ]; then
echo "${HASHES_MACOS}" | $B64_DECODE > checksums.txt
fi
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-server-mac-arm64:
runs-on: macos-15
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-server-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- id: release-server
name: Full release of libs/server-sdk (macOS arm64)
uses: ./.github/actions/sdk-release
with:
tag_name: ${{ needs.release-please.outputs.package-server-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/server-sdk'
sdk_cmake_target: 'launchdarkly-cpp-server'
mac_artifact_arch: 'arm64'
- name: Generate checksums file
env:
HASHES: ${{ steps.release-server.outputs.hashes-macos }}
run: |
# This job always runs on macOS, so use -D (BSD base64 decode).
echo "${HASHES}" | base64 -D > checksums.txt
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-server-redis:
strategy:
matrix:
# Each of the platforms for which release-artifacts need generated.
os: [ ubuntu-22.04, windows-2022, macos-15-large ]
runs-on: ${{ matrix.os }}
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-server-redis-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- id: release-server-redis
name: Full release of libs/server-sdk-redis-source
uses: ./.github/actions/sdk-release
with:
# The tag of the release to upload artifacts to.
tag_name: ${{ needs.release-please.outputs.package-server-redis-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/server-sdk-redis-source'
sdk_cmake_target: 'launchdarkly-cpp-server-redis-source'
- name: Generate checksums file
env:
HASHES_LINUX: ${{ steps.release-server-redis.outputs.hashes-linux }}
HASHES_WINDOWS: ${{ steps.release-server-redis.outputs.hashes-windows }}
HASHES_MACOS: ${{ steps.release-server-redis.outputs.hashes-macos }}
run: |
# BSD base64 (macOS) uses -D to decode; GNU base64 (Linux/Windows) uses -d.
if [[ "$OSTYPE" == darwin* ]]; then B64_DECODE="base64 -D"; else B64_DECODE="base64 -d"; fi
if [ -n "${HASHES_LINUX}" ]; then
echo "${HASHES_LINUX}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_WINDOWS}" ]; then
echo "${HASHES_WINDOWS}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_MACOS}" ]; then
echo "${HASHES_MACOS}" | $B64_DECODE > checksums.txt
fi
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-server-redis-mac-arm64:
runs-on: macos-15
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-server-redis-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- id: release-server-redis
name: Full release of libs/server-sdk-redis-source (macOS arm64)
uses: ./.github/actions/sdk-release
with:
tag_name: ${{ needs.release-please.outputs.package-server-redis-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/server-sdk-redis-source'
sdk_cmake_target: 'launchdarkly-cpp-server-redis-source'
mac_artifact_arch: 'arm64'
- name: Generate checksums file
env:
HASHES: ${{ steps.release-server-redis.outputs.hashes-macos }}
run: |
# This job always runs on macOS, so use -D (BSD base64 decode).
echo "${HASHES}" | base64 -D > checksums.txt
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-server-dynamodb:
strategy:
matrix:
# Each of the platforms for which release-artifacts need generated.
os: [ ubuntu-22.04, windows-2022, macos-15-large ]
runs-on: ${{ matrix.os }}
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-server-dynamodb-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- id: release-server-dynamodb
name: Full release of libs/server-sdk-dynamodb-source
uses: ./.github/actions/sdk-release
with:
# The tag of the release to upload artifacts to.
tag_name: ${{ needs.release-please.outputs.package-server-dynamodb-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/server-sdk-dynamodb-source'
sdk_cmake_target: 'launchdarkly-cpp-server-dynamodb-source'
- name: Generate checksums file
env:
HASHES_LINUX: ${{ steps.release-server-dynamodb.outputs.hashes-linux }}
HASHES_WINDOWS: ${{ steps.release-server-dynamodb.outputs.hashes-windows }}
HASHES_MACOS: ${{ steps.release-server-dynamodb.outputs.hashes-macos }}
run: |
# BSD base64 (macOS) uses -D to decode; GNU base64 (Linux/Windows) uses -d.
if [[ "$OSTYPE" == darwin* ]]; then B64_DECODE="base64 -D"; else B64_DECODE="base64 -d"; fi
if [ -n "${HASHES_LINUX}" ]; then
echo "${HASHES_LINUX}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_WINDOWS}" ]; then
echo "${HASHES_WINDOWS}" | $B64_DECODE > checksums.txt
elif [ -n "${HASHES_MACOS}" ]; then
echo "${HASHES_MACOS}" | $B64_DECODE > checksums.txt
fi
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
release-server-dynamodb-mac-arm64:
runs-on: macos-15
needs: [ 'release-please' ]
if: ${{ needs.release-please.outputs.package-server-dynamodb-released == 'true'}}
permissions:
contents: write
attestations: write
id-token: write
steps:
# https://github.com/actions/checkout/releases/tag/v4.3.0
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- id: release-server-dynamodb
name: Full release of libs/server-sdk-dynamodb-source (macOS arm64)
uses: ./.github/actions/sdk-release
with:
tag_name: ${{ needs.release-please.outputs.package-server-dynamodb-tag }}
github_token: ${{secrets.GITHUB_TOKEN}}
sdk_path: 'libs/server-sdk-dynamodb-source'
sdk_cmake_target: 'launchdarkly-cpp-server-dynamodb-source'
mac_artifact_arch: 'arm64'
- name: Generate checksums file
env:
HASHES: ${{ steps.release-server-dynamodb.outputs.hashes-macos }}
run: |
# This job always runs on macOS, so use -D (BSD base64 decode).
echo "${HASHES}" | base64 -D > checksums.txt
shell: bash
# https://github.com/actions/attest/releases/tag/v4.1.0
- name: Attest build provenance
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-checksums: checksums.txt
publish-release-client:
needs: ['release-please', 'release-client', 'release-client-mac-arm64']
if: ${{ needs.release-please.outputs.package-client-released == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Publish release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_NAME: ${{ needs.release-please.outputs.package-client-tag }}
run: >
gh release edit "$TAG_NAME"
--repo ${{ github.repository }}
--draft=false
publish-release-server:
needs: ['release-please', 'release-server', 'release-server-mac-arm64']
if: ${{ needs.release-please.outputs.package-server-released == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Publish release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_NAME: ${{ needs.release-please.outputs.package-server-tag }}
run: >
gh release edit "$TAG_NAME"
--repo ${{ github.repository }}
--draft=false
publish-release-server-redis:
needs: ['release-please', 'release-server-redis', 'release-server-redis-mac-arm64']
if: ${{ needs.release-please.outputs.package-server-redis-released == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Publish release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_NAME: ${{ needs.release-please.outputs.package-server-redis-tag }}
run: >
gh release edit "$TAG_NAME"
--repo ${{ github.repository }}
--draft=false
publish-release-server-dynamodb:
needs: ['release-please', 'release-server-dynamodb', 'release-server-dynamodb-mac-arm64']
if: ${{ needs.release-please.outputs.package-server-dynamodb-released == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Publish release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_NAME: ${{ needs.release-please.outputs.package-server-dynamodb-tag }}
run: >
gh release edit "$TAG_NAME"
--repo ${{ github.repository }}
--draft=false
publish-release-server-otel:
needs: ['release-please']
if: ${{ needs.release-please.outputs.package-server-otel-released == 'true' }}
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Publish release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG_NAME: ${{ needs.release-please.outputs.package-server-otel-tag }}
run: >
gh release edit "$TAG_NAME"
--repo ${{ github.repository }}
--draft=false