name: STASIS description: | Executes STASIS with arguments inputs: prefix: type: string description: STASIS installation prefix required: false default: "${{ github.workspace }}/.local" artifactory_url: type: string description: Artifactory base address (without /artifactory) required: true default: "" artifactory_repo: type: string description: Artifactory repository path where deliveries are stored required: true default: "some-repo" artifactory_access_key: type: string description: Artifactory access key required: true default: "" mission: type: choice description: Mission name (e.g. hst) options: - hst - jwst - roman - generic required: true default: "generic" build_name: type: string description: Build name (e.g. MYPIPELINE-1.2.3) required: true default: "" destination: type: string description: Path to store an indexed delivery on-disk required: true default: "/path/to/stasis/releases" stasis_args: type: string description: Arguments to pass to STASIS required: false default: "" # program options option_continue_on_error: type: boolean required: false default: false option_config: type: string required: false default: "" option_cpu_limit: type: string required: false default: "" option_pool_status_interval: type: string required: false default: "" option_python: type: string required: false default: "" option_verbose: type: boolean required: false default: "" option_unbuffered: type: boolean required: false default: false option_update_base: type: boolean required: false default: false option_fail_fast: type: boolean required: false default: false option_overwrite: type: boolean required: false default: false option_no_docker: type: boolean required: false default: false option_no_artifactory: type: boolean required: false default: false option_no_artifactory_upload: type: boolean required: false default: false option_no_artifactory_build_info: type: boolean required: false default: false option_no_testing: type: boolean required: false default: false option_no_parallel: type: boolean required: false default: false option_delivery_file: type: string required: true default: "" env: REMOTE_PATHS: "/path/to/somewhere" runs: using: "composite" steps: - name: Set TMPDIR run: | echo TMPDIR=${{ runner.temp }} >> $GITHUB_ENV shell: bash - name: Install SSHFS run: | sudo apt update sudo apt -y install sshfs shell: bash - name: Mount external data areas run: | for remote in $REMOTE_PATHS; do echo mounting $remote done shell: bash - name: Install STASIS id: install-stasis uses: ./.github/actions/stasis_install with: prefix: ${{ github.workspace }}/.local build_type: RelWithDebInfo - name: Enable STASIS run: | echo "PATH=${{ steps.install-stasis.outputs.bindir }}:$PATH" >> $GITHUB_ENV shell: bash - name: Configure program arguments run: | echo "option_continue_on_error=${{ inputs.option_continue_on_error && '--continue-on-error' || '' }}" >> $GITHUB_ENV if [[ -n "${{ inputs.option_config }}" ]]; then echo "option_config=--config=${{ inputs.option_config }}" >> $GITHUB_ENV fi if [[ -n "${{ inputs.option_pool_status_interval }}" ]]; then echo "option_pool_status_interval=--pool-status-interval=${{ inputs.option_pool_status_interval }}" >> $GITHUB_ENV fi if [[ -n "${{ inputs.option_cpu_limit }}" ]]; then echo "option_cpu_limit=--cpu-limit=${{ inputs.option_cpu_limit }}" >> $GITHUB_ENV fi if [[ -n "${{ inputs.option_python }}" ]]; then echo "option_python=--python=${{ inputs.option_python }}" >> $GITHUB_ENV fi if [[ "${{ inputs.option_verbose }}" == "true" ]]; then echo "option_verbose=--verbose" >> $GITHUB_ENV fi if [[ "${{ inputs.option_unbuffered }}" == "true" ]]; then echo "option_unbuffered=--unbuffered" >> $GITHUB_ENV fi if [[ "${{ inputs.option_update_base }}" == "true" ]]; then echo "option_update_base=--update-base" >> $GITHUB_ENV fi if [[ "${{ inputs.option_fail_fast }}" == "true" ]]; then echo "option_fail_fast=--fail-fast" >> $GITHUB_ENV fi if [[ "${{ inputs.option_overwrite }}" == "true" ]]; then echo "option_overwrite=--overwrite" >> $GITHUB_ENV fi if [[ "${{ inputs.option_no_docker }}" == "true" ]]; then echo "option_no_docker=--no-docker" >> $GITHUB_ENV fi if [[ "${{ inputs.option_no_artifactory }}" == "true" ]]; then echo "option_no_artifactory=--no-artifactory" >> $GITHUB_ENV fi if [[ "${{ inputs.option_no_artifactory_upload }}" == "true" ]]; then echo "option_no_artifactory_upload=--no-artifactory-upload" >> $GITHUB_ENV fi if [[ "${{ inputs.option_no_artifactory_build_info }}" == "true" ]]; then echo "option_no_artifactory_build_info=--no-artifactory-build-info" >> $GITHUB_ENV fi if [[ "${{ inputs.option_no_testing }}" == "true" ]]; then echo "option_=--no_testing" >> $GITHUB_ENV fi if [[ "${{ inputs.option_no_parallel }}" == "true" ]]; then echo "option_no_parallel=--no-parallel" >> $GITHUB_ENV fi #if [[ "${{ inputs.option_delivery_file }}" ]]; then # echo "option_delivery_file=--delivery_file" >> $GITHUB_ENV #fi shell: bash - name: Run STASIS with arguments run: | args="" for arg in $(compgen -A variable | grep option_); do args+="${!arg} " done stasis \ $args \ ${{ inputs.stasis_args }} \ ${{ inputs.option_delivery_file }} shell: bash env: #Artifactory service URL (ending in /artifactory) STASIS_JF_ARTIFACTORY_URL: ${{ inputs.artifactory_url }}/artifactory #Artifactory "generic" repository to write to STASIS_JF_REPO: ${{ inputs.artifactory_repo }} STASIS_JF_ACCESS_TOKEN: ${{ inputs.artifactory_access_key }}