feat: adding latch-command #61
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Test: latch register" | |
| on: | |
| pull_request: | |
| branches: | |
| - "*" | |
| push: | |
| branches: | |
| - "develop" | |
| - "main" | |
| workflow_call: | |
| concurrency: | |
| group: latch-register-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| register: | |
| runs-on: ubuntu-24.04 | |
| name: "Test: latch register" | |
| environment: github-actions-register | |
| steps: | |
| - run: echo "::group::Setting up..." | |
| shell: bash | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - id: install | |
| name: Install Latch | |
| uses: ./ | |
| - name: update wf version | |
| run: echo "$(git rev-parse HEAD)-1" > ./tests/test-setup-latch-register/version | |
| - run: echo "::endgroup::" | |
| shell: bash | |
| # Tests vanilla register | |
| - run: echo "::group::Test remote registration succeeds..." | |
| shell: bash | |
| - id: latch | |
| name: test remote registration succeeds | |
| uses: ./ | |
| with: | |
| register: true | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| - name: Print outputs | |
| shell: bash | |
| run: | | |
| echo latch-version: ${{ steps.latch.outputs.latch-version }} | |
| echo register-version: ${{ steps.latch.outputs.register-version }} | |
| echo already-registered: ${{ steps.latch.outputs.already-registered }} | |
| - name: check already registered | |
| shell: bash | |
| run: | | |
| if [[ "${{ steps.latch.outputs.already-registered }}" == "true" ]]; then | |
| echo "Error: workflow was already registered"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| rm -v tests/test-setup-latch-register/.latch/Dockerfile | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # FIXME: update this test when https://github.com/latchbio/latch/issues/534 is fixed | |
| # Tests using register-remote false | |
| # FIXME: uncomment me when local registration works | |
| - run: echo "::group::Test local registration fails..." | |
| shell: bash | |
| - id: register-remote | |
| name: test local registration fails | |
| # FIXME: remove me when local registration works | |
| continue-on-error: true | |
| uses: ./ | |
| with: | |
| register: true | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| register-remote: false | |
| - name: check failure | |
| shell: bash | |
| run: | | |
| # FIXME: remove me when local registration works | |
| if [[ "${{ steps.register-remote.outcome }}" != "failure" ]]; then | |
| echo "Error: local registration did not fail'"; | |
| echo "Is https://github.com/latchbio/latch/issues/534 fixed?"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| # FIXME: uncomment me when local registration works | |
| #if [[ "${{ steps.register-remote.outputs.already-registered }}" == "true" ]]; then | |
| # echo "Error: workflow was not already registered with 'already-registered-do-not-fail: false'"; | |
| # echo -e "❌\n::endgroup::" | |
| # exit 1; | |
| #fi | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests already-registered-do-not-fail=true succeeds | |
| - run: echo "::group::Test already-registered-do-not-fail=true should succeed..." | |
| shell: bash | |
| - id: already-registered-do-not-fail-true | |
| name: test already-registered-do-not-fail=true should succeed | |
| uses: ./ | |
| with: | |
| register: true | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| already-registered-do-not-fail: true | |
| - name: check already registered | |
| shell: bash | |
| run: | | |
| if [[ "${{ steps.already-registered-do-not-fail-true.outputs.already-registered }}" == "false" ]]; then | |
| echo "Error: workflow was not already registered with 'already-registered-do-not-fail: true'"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests already-registered-do-not-fail=false fails | |
| - run: echo "::group::Test already-registered-do-not-fail=false should fail.." | |
| shell: bash | |
| - id: already-registered-do-not-fail-false | |
| name: test already-registered-do-not-fail=false should fail | |
| continue-on-error: true | |
| uses: ./ | |
| with: | |
| register: true | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| already-registered-do-not-fail: false | |
| - name: check already registered failure | |
| run: | | |
| if [[ "${{ steps.already-registered-do-not-fail-false.outputs.already-registered }}" == "false" ]]; then | |
| echo "Error: workflow was not already registered with 'already-registered-do-not-fail: false'"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| if [[ "${{ steps.already-registered-do-not-fail-false.outcome }}" != "failure" ]]; then | |
| echo "Error: registration existing workflow did not fail with 'already-registered-do-not-fail: false'"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests register with mark-as-release | |
| - run: echo "::group::Test register with mark-as-release..." | |
| shell: bash | |
| - id: register-with-mark-as-release | |
| name: test register with mark-as-release | |
| uses: ./ | |
| with: | |
| register: true | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| already-registered-do-not-fail: true | |
| mark-as-release: true | |
| - name: Print outputs | |
| shell: bash | |
| run: | | |
| echo latch-version: ${{ steps.register-with-mark-as-release.outputs.latch-version }} | |
| echo register-version: ${{ steps.register-with-mark-as-release.outputs.register-version }} | |
| echo already-registered: ${{ steps.register-with-mark-as-release.outputs.already-registered }} | |
| - name: check success | |
| shell: bash | |
| run: | | |
| if [[ "${{ steps.register-with-mark-as-release.outcome }}" != "success" ]]; then | |
| echo "Error: workflow failed"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests mark-as-release without register should fail | |
| - run: echo "::group::Test mark-as-release without register should fail..." | |
| shell: bash | |
| - id: mark-as-release-without-register | |
| name: test mark-as-release without register should fail | |
| continue-on-error: true | |
| uses: ./ | |
| with: | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| already-registered-do-not-fail: true | |
| mark-as-release: true | |
| - name: check mark-as-release without register failure | |
| run: | | |
| if [[ "${{ steps.mark-as-release-without-register.outcome }}" != "failure" ]]; then | |
| echo "Error: mark-as-release without register did not fail"; | |
| exit 1; | |
| fi | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests skipping the latch install succeeds when latch is available on the PATH | |
| - run: echo "::group::Test skipping latch install..." | |
| shell: bash | |
| - id: skip-install-success | |
| name: test skipping latch install | |
| uses: ./ | |
| with: | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| skip-install: true | |
| - name: Print outputs | |
| shell: bash | |
| run: | | |
| echo latch-version: ${{ steps.skip-install-success.outputs.latch-version }} | |
| echo register-version: ${{ steps.skip-install-success.outputs.register-version }} | |
| echo already-registered: ${{ steps.skip-install-success.outputs.already-registered }} | |
| - name: check success | |
| shell: bash | |
| run: | | |
| if [[ "${{ steps.skip-install-success.outcome }}" != "success" ]]; then | |
| echo "Error: workflow failed"; | |
| exit 1; | |
| fi | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests skipping the latch install fails when latch is not available on the PATH | |
| - run: echo "::group::Test skipping latch install fails when latch is not available on the PATH..." | |
| shell: bash | |
| - name: uninstall latch | |
| shell: bash | |
| run: | | |
| python3 -m pip uninstall --yes latch | |
| - id: skip-install-failure | |
| name: test skipping latch install fails when latch is not available on the PATH | |
| continue-on-error: true | |
| uses: ./ | |
| with: | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| skip-install: true | |
| - name: check failure | |
| shell: bash | |
| run: | | |
| if [[ "${{ steps.skip-install-failure.outcome }}" != "failure" ]]; then | |
| echo "Error: workflow succeeded"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| - name: reinstall latch | |
| shell: bash | |
| run: | | |
| python3 -m pip install latch | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash | |
| # Tests specifying a different latch command | |
| - run: echo "::group::Test different latch command..." | |
| shell: bash | |
| - name: move the latch executable | |
| id: latch-command-move | |
| shell: bash | |
| run: | | |
| latch_src=$(which latch) | |
| latch_dst=$(which latch).moved | |
| mv -v "${latch_src}" "${latch_dst}" | |
| echo "latch-src=${latch_src}" >> $GITHUB_OUTPUT; | |
| echo "latch-dst=${latch_dst}" >> $GITHUB_OUTPUT; | |
| - id: latch-diff-command | |
| name: test different latch command | |
| uses: ./ | |
| with: | |
| register: true | |
| latch-workspace: ${{ secrets.LATCH_WORKSPACE }} | |
| latch-token: ${{ secrets.LATCH_TOKEN }} | |
| register-pkg-root: ./tests/test-setup-latch-register | |
| skip-install: true | |
| latch-command: ${{ steps.latch-command-move.outputs.latch-src }} | |
| - name: Print outputs | |
| shell: bash | |
| run: | | |
| echo latch-version: ${{ steps.latch-diff-command.outputs.latch-version }} | |
| echo register-version: ${{ steps.latch-diff-command.outputs.register-version }} | |
| echo already-registered: ${{ steps.latch-diff-command.outputs.already-registered }} | |
| - name: check success | |
| shell: bash | |
| run: | | |
| if [[ "${{ steps.latch-diff-command.outcome }}" != "success" ]]; then | |
| echo "Error: workflow failed"; | |
| echo -e "❌\n::endgroup::" | |
| exit 1; | |
| fi | |
| - name: move the latch executable back | |
| shell: bash | |
| run: | | |
| latch_src="${{ steps.latch-command-move.outputs.latch-src }}"; | |
| latch_dst="${{ steps.latch-command-move.outputs.latch-dst }}"; | |
| mv -v "${latch_dst}" "${latch_src}"; | |
| - run: echo -e "✅\n::endgroup::" | |
| shell: bash |