name: 'deploy' description: 'deploy' inputs: environment: required: true type: string tag: required: true type: string migrate: type: bool default: false secrets: required: false type: string appName: type: string required: true optionName: type: string required: true tests: type: bool default: false vault: type: bool default: false runs: using: 'composite' steps: - name: Argo Login uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: login options: ${{ vars.ARGO_HOST }} --username ${{ vars.ARGO_USER }} --password ${{ fromJSON(inputs.secrets).ARGO_PASSWORD }} - name: Change tag name uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: app set ${{ inputs.environment }} --parameter ${{ inputs.optionName }}=${{ inputs.tag }} - name: Sync changes if: ${{ inputs.migrate == 'true' }} uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: app sync ${{ inputs.environment }} --resource apps:Deployment:${{ inputs.appName }} - name: Migrate if: ${{ inputs.migrate == 'true' }} uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: app actions run ${{ inputs.environment }} migrate --kind Deployment --resource-name ${{ inputs.appName }} - name: Sync related deployments shell: bash run: | for name in $(argocd app resources ${{ inputs.environment }} | grep Deploy | grep ${{ inputs.appName }} | awk '{print($4)}'); do echo "Syncing $name" argocd app sync ${{ inputs.environment }} --resource apps:Deployment:$name; done - name: Refresh secret if: ${{ inputs.vault == 'true' }} uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: app actions run ${{ inputs.environment }} refresh --kind ExternalSecret --resource-name vault-${{ inputs.appName }} - name: Restart service uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: app actions run ${{ inputs.environment }} restart --kind Deployment --resource-name ${{ inputs.appName }} - name: Run Tests if: ${{ inputs.tests == 'true' }} uses: clowdhaus/argo-cd-action/@main with: version: 3.1.3 command: app actions run ${{ inputs.environment }} run-tests --kind Deployment --resource-name ${{ inputs.appName }}