diff --git a/.github/workflows/release-action-docker.yml b/.github/workflows/release-action-docker.yml new file mode 100644 index 00000000000..1301ed0f0b3 --- /dev/null +++ b/.github/workflows/release-action-docker.yml @@ -0,0 +1,56 @@ +name: Release Github action for CLI + +on: + release: + types: + - prereleased + +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 }} + 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 info@asyncapi.io + 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 }}" diff --git a/action-template.yml b/action-template.yml new file mode 100644 index 00000000000..40aba410cbb --- /dev/null +++ b/action-template.yml @@ -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/markdown-template@0.10.0' + 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