v1.10.0 #125
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }}' |