mirror of
https://github.com/dragonflydb/dragonfly
synced 2024-11-22 07:33:19 +00:00
8e528f1fbb
* fix(redis_replicaiton_test): fix compare set types Signed-off-by: ashotland <ari@dragonflydb.io> Co-authored-by: ashotland <ari@dragonflydb.io>
125 lines
4.0 KiB
YAML
125 lines
4.0 KiB
YAML
name: docker release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
TAG_NAME:
|
|
description: 'Tag name that the major tag will point to'
|
|
required: true
|
|
PRERELEASE:
|
|
description: 'Whether this is a prerelease'
|
|
type: boolean
|
|
required: true
|
|
|
|
release:
|
|
types: [published]
|
|
|
|
permissions:
|
|
packages: write
|
|
contents: write
|
|
id-token: write
|
|
|
|
env:
|
|
TAG_NAME: ${{ github.event.inputs.TAG_NAME || github.event.release.tag_name }}
|
|
IS_PRERELEASE: ${{ github.event.release.prerelease || github.event.inputs.PRERELEASE }}
|
|
|
|
jobs:
|
|
# This workaround is needed, as it's not possible to reference env.FOOBAR directly at this stage
|
|
# - for ex. https://github.com/actions/runner/issues/1189
|
|
release-container-prereq:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
tag: ${{ steps.release-param.outputs.tag }}
|
|
tag_latest: ${{ steps.release-param.outputs.tag_latest }}
|
|
steps:
|
|
- id: release-param
|
|
run: |
|
|
# If env.IS_PRERELEASE is true, set tag to alpha and do not enable tag_latest
|
|
# If env.IS_PRERELEASE is not true (aka false), don't set an extra tag and enable tag_latest
|
|
echo "::set-output name=tag::${{ env.IS_PRERELEASE == 'true' && 'alpha' }}"
|
|
echo "::set-output name=tag_latest::${{ env.IS_PRERELEASE == 'true' && 'false' || 'true' }}"
|
|
|
|
release-container:
|
|
needs: release-container-prereq
|
|
uses: ./.github/workflows/reusable-container-workflow.yaml
|
|
with:
|
|
build_type: prod
|
|
tag: ${{ needs.release-container-prereq.outputs.tag }}
|
|
tag_latest: ${{ needs.release-container-prereq.outputs.tag_latest == 'true' }}
|
|
image: ghcr.io/${{ github.repository }}
|
|
registry: ghcr.io
|
|
registry_username: ${{ github.repository_owner }}
|
|
fetch_release: true
|
|
release_version: ${{ github.event.inputs.TAG_NAME || github.event.release.tag_name }}
|
|
secrets:
|
|
registry_password: ${{ secrets.GITHUB_TOKEN }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
release:
|
|
needs: [release-container-prereq, release-container]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: print_env
|
|
run: env
|
|
|
|
- name: checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install helm
|
|
uses: azure/setup-helm@v3
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v3
|
|
|
|
- name: Configure Git
|
|
if: env.IS_PRERELEASE != 'true'
|
|
run: |
|
|
git config user.name "$GITHUB_ACTOR"
|
|
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
|
|
|
- name: Update helm chart
|
|
if: env.IS_PRERELEASE != 'true'
|
|
run: |
|
|
git checkout main
|
|
sed -Ei \
|
|
-e 's/^(version\:) .*/\1 '${{ env.TAG_NAME }}'/g' \
|
|
-e 's/^(appVersion\:) .*/\1 "'${{ env.TAG_NAME }}'"/g' \
|
|
contrib/charts/dragonfly/Chart.yaml
|
|
|
|
go test ./contrib/charts/dragonfly/... -update
|
|
|
|
git commit \
|
|
-m 'chore(helm-chart): update to ${{ env.TAG_NAME }}' \
|
|
contrib/charts/dragonfly/Chart.yaml \
|
|
contrib/charts/dragonfly/ci
|
|
|
|
- name: Push Helm chart as OCI to Github
|
|
if: env.IS_PRERELEASE != 'true'
|
|
run: |
|
|
echo "${{ secrets.GITHUB_TOKEN }}" | \
|
|
helm registry login -u ${{ github.actor }} --password-stdin ghcr.io
|
|
|
|
helm package contrib/charts/dragonfly
|
|
|
|
helm push dragonfly-${{ env.TAG_NAME }}.tgz oci://ghcr.io/${{ github.repository }}/helm
|
|
|
|
- name: GitHub Push
|
|
uses: CasperWA/push-protected@v2
|
|
with:
|
|
token: ${{ secrets.DRAGONFLY_TOKEN }}
|
|
branch: main
|
|
|
|
- name: Discord notification
|
|
env:
|
|
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
|
uses: Ilshidur/action-discord@0c4b27844ba47cb1c7bee539c8eead5284ce9fa9
|
|
with:
|
|
args: 'DragonflyDB version [${{ env.TAG_NAME }}](https://github.com/dragonflydb/dragonfly/releases/tag/${{ env.TAG_NAME }}) has been released 🎉'
|
|
|
|
- name: Re-build Docs
|
|
if: env.IS_PRERELEASE != 'true'
|
|
run: |
|
|
curl -s -X POST '${{ secrets.VERCEL_DOCS_WEBHOOK }}'
|