Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add workflow to release github-action #1543

Merged
56 changes: 56 additions & 0 deletions .github/workflows/release-action-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Release Github action for CLI

on:
release:
types:
- prereleased
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this only works when you do a manual pre-release.
image

Copy link
Member Author

@akshatnema akshatnema Oct 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, so you can then proceed with the release, once the workflow is successful, right?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But the release is no longer automated if it has to be done manually. Let me correct the misunderstanding pre-release event will only work when a pre-release is done, which is done nowhere as far as I know.


jobs:
release-action-yml:
name: Release github action for cli and update version in action.yml
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: master

- name: Get version without v character
id: version
run: |
VERSION=${{github.event.release.tag_name}}
VERSION_WITHOUT_V=${VERSION:1}
echo "value=${VERSION_WITHOUT_V}" >> $GITHUB_OUTPUT
- name: Release to Docker
run: |
echo ${{env.DOCKER_PASSWORD}} | docker login -u ${{env.DOCKER_USERNAME}} --password-stdin
npm run action:docker:build
docker tag asyncapi/github-action-for-cli:latest asyncapi/github-action-for-cli:${{ steps.version.outputs.value }}
docker push asyncapi/github-action-for-cli:${{ steps.version.outputs.value }}
docker push asyncapi/github-action-for-cli:latest

- name: Update action.yml with version
run: |
VERSION=${{ steps.version.outputs.value }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The update to this action.yml won't be a part of the release though if this is done like this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Shurtu-gal Yeah, do you want to run this workflow as part of pre-release or this update should be done before we build docker image of github-action?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akshatnema pre-release

sed "s/\\\${ version }/${VERSION}/g" action-template.yml > action.yml

- name: Create branch
run: |
git checkout -b update-action-docker-version-${{ github.sha }}

- name: Commit and push
run: |
git config --global user.name asyncapi-bot
git config --global user.email [email protected]
git add action.yml
git commit -m "chore(action): update docker version in action.yml"
git push https://${{ env.GITHUB_TOKEN }}@github.com/asyncapi/cli

- name: Create PR
run: |
gh pr create --title "chore(action): update docker version in action.yml" --body "Updated docker version of github action in action.yml" --head "update-action-docker-version-${{ github.sha }}"
54 changes: 54 additions & 0 deletions action-template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: 'Generator, Validator, Converter and others - all in one for your AsyncAPI docs'
description: 'Use this action to generate docs or code from your AsyncAPI document. Use default templates or provide your custom ones.'
inputs:
cli_version:
description: 'Version of AsyncAPI CLI to be used. This is only needed if you want to test with a specific version of AsyncAPI CLI. Default is latest which is also the recommended option.'
required: false
default: ''
command:
description: 'Command to run. Available commands in action :- generate, validate, convert, optimize and custom. Default is generate. For custom command, provide the whole command as input. List of available commands can be found in https://www.asyncapi.com/docs/tools/cli/usage.'
required: false
default: 'generate'
filepath:
description: 'Path to AsyncAPI document. This input is required if command is set to generate, validate, convert or optimize. Default is ./asyncapi.yaml'
required: false
default: 'asyncapi.yml'
template:
description: 'Template for the generator. Official templates are listed here https://github.com/search?q=topic%3Aasyncapi+topic%3Agenerator+topic%3Atemplate. You can pass template as npm package, url to git repository, link to tar file or local template.'
default: '@asyncapi/[email protected]'
required: false
language:
description: 'Language of the generated code. This input is required if you want to generate models. List of available languages can be found in https://www.asyncapi.com/docs/tools/cli/usage#asyncapi-generate-models-language-file'
required: false
default: ''
output:
description: 'Directory where to put the generated files. Can be used only with generate or convert commands. Default is output.'
required: false
default: 'output'
parameters:
description: 'The command that you use might support and even require specific parameters to be passed to the CLI for the generation. Template parameters should be preceded by -p'
required: false
default: ''
custom_command:
description: 'Custom command to be run. This input is required if command is set to custom.'
required: false
default: ''

runs:
using: 'docker'
# This is the image that will be used to run the action.
# IMPORTANT: The version has to be changed manually in your PRs.
image: 'docker://asyncapi/github-action-for-cli:${ version }'
args:
- ${{ inputs.cli_version }}
- ${{ inputs.command }}
- ${{ inputs.filepath }}
- ${{ inputs.template }}
- ${{ inputs.language }}
- ${{ inputs.output }}
- ${{ inputs.parameters }}
- ${{ inputs.custom_command }}

branding:
icon: 'file-text'
color: purple
Loading