name: Versionsapi cli on: workflow_dispatch: inputs: command: description: Command to run required: true type: choice options: - latest - list - add - remove ref: description: --ref flag required: false type: string stream: description: --stream flag required: false type: string version: description: --version flag required: false type: string kind: description: --kind flag required: false type: string version_path: description: --version-path flag required: false type: string add_latest: description: --latest flag required: false default: false type: boolean add_release: description: --release flag required: false default: false type: boolean rm_all: description: --all flag required: false default: false type: boolean dryrun: description: --dryrun flag required: false default: false type: boolean workflow_call: inputs: command: description: Command to run required: true type: string ref: description: --ref flag required: false type: string stream: description: --stream flag required: false type: string version: description: --version flag required: false type: string kind: description: --kind flag required: false type: string version_path: description: --version-path flag required: false type: string add_latest: description: --latest flag required: false type: boolean add_release: description: --release flag required: false type: boolean rm_all: description: --all flag required: false type: boolean dryrun: description: --dryrun flag required: false default: false type: boolean outputs: output: description: Output of the command value: ${{ jobs.versionsapi.outputs.output }} concurrency: group: versionsapi cancel-in-progress: false jobs: versionsapi: runs-on: ubuntu-22.04 permissions: id-token: write contents: read outputs: output: ${{ steps.run.outputs.output }} steps: - name: Check out repository id: checkout uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 with: ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }} - name: Check required rights id: check-rights shell: bash run: | case "${{ inputs.command }}" in add) echo "Write access to S3 bucket required." echo "write=true" | tee -a "$GITHUB_OUTPUT" echo "No authentication at cloud provider required." echo "auth=false" | tee -a "$GITHUB_OUTPUT" ;; remove) echo "Write access to S3 bucket required." echo "write=true" | tee -a "$GITHUB_OUTPUT" echo "Authentication at cloud provider required." echo "auth=true" | tee -a "$GITHUB_OUTPUT" ;; latest | list) echo "Only read access required." echo "write=false" | tee -a "$GITHUB_OUTPUT" echo "auth=false" | tee -a "$GITHUB_OUTPUT" ;; *) echo "Unknown command '${{ inputs.command }}'." exit 1 ;; esac - name: Login to AWS without write access if: steps.check-rights.outputs.write == 'false' uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1 with: role-to-assume: arn:aws:iam::795746500882:role/GithubConstellationVersionsAPIRead aws-region: eu-central-1 - name: Login to AWS with write access if: steps.check-rights.outputs.write == 'true' && steps.check-rights.outputs.auth == 'false' uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1 with: role-to-assume: arn:aws:iam::795746500882:role/GithubConstellationVersionsAPIWrite aws-region: eu-central-1 - name: Login to AWS with write and image remove access if: steps.check-rights.outputs.write == 'true' && steps.check-rights.outputs.auth == 'true' uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1 with: role-to-assume: arn:aws:iam::795746500882:role/GithubConstellationVersionsAPIRemove aws-region: eu-central-1 - name: Login to Azure if: steps.check-rights.outputs.auth == 'true' uses: ./.github/actions/login_azure with: azure_credentials: ${{ secrets.AZURE_CREDENTIALS }} - name: Login to GCP if: steps.check-rights.outputs.auth == 'true' uses: ./.github/actions/login_gcp with: service_account: "image-deleter@constellation-images.iam.gserviceaccount.com" - name: Execute versionsapi CLI id: run uses: ./.github/actions/versionsapi with: command: ${{ inputs.command }} ref: ${{ inputs.ref }} stream: ${{ inputs.stream }} version: ${{ inputs.version }} kind: ${{ inputs.kind }} version_path: ${{ inputs.version_path }} add_latest: ${{ inputs.add_latest }} add_release: ${{ inputs.add_release }} rm_all: ${{ inputs.rm_all }} dryrun: ${{ inputs.dryrun }}