fix: allow long remote URLs to be parsed #4692
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: Build | |
| permissions: | |
| contents: read | |
| packages: read | |
| actions: write | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened, ready_for_review] | |
| branches: | |
| - main | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| setup-dependencies: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Cache npm dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.npm | |
| node_modules | |
| key: npm-${{ runner.os }}-${{ hashFiles('package-lock.json') }} | |
| restore-keys: | | |
| npm-${{ runner.os }}- | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Compress node_modules | |
| run: tar -czf node_modules.tar.gz node_modules | |
| - name: Upload node_modules for reuse | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: node-modules | |
| path: node_modules.tar.gz | |
| retention-days: 1 | |
| lint: | |
| needs: [setup-dependencies] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Download node_modules | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: node-modules | |
| - name: Extract node_modules | |
| run: tar -xzf node_modules.tar.gz | |
| - name: Run vulnerability audit | |
| # "There is no Vulnerability in Media Viewer after 48.5.4. since it was fixed by patching, but npm audit still reports it.", | |
| # So that switched to audit-ci with allowlist | |
| run: npm run audit-ci | |
| - name: Run linter | |
| run: npm run lint | |
| test-unit: | |
| needs: [setup-dependencies] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Download node_modules | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: node-modules | |
| - name: Extract node_modules | |
| run: tar -xzf node_modules.tar.gz | |
| - name: Run unit tests | |
| run: npm test | |
| build-extension: | |
| needs: [setup-dependencies] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Download node_modules | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: node-modules | |
| - name: Extract node_modules | |
| run: tar -xzf node_modules.tar.gz | |
| - name: Package the extension | |
| run: npm run extension:package | |
| - name: Upload extension package | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: extension-package | |
| path: atlascode-*.vsix | |
| retention-days: 1 | |
| test-e2e: | |
| needs: [build-extension] | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - jira-cloud | |
| - jira-dc | |
| - bitbucket-cloud | |
| - bitbucket-dc | |
| env: | |
| ATLASCODE_FX3_API_KEY: ${{ secrets.ATLASCODE_FX3_API_KEY }} | |
| ATLASCODE_FX3_ENVIRONMENT: ${{ vars.ATLASCODE_FX3_ENVIRONMENT }} | |
| ATLASCODE_FX3_TARGET_APP: ${{ vars.ATLASCODE_FX3_TARGET_APP }} | |
| ATLASCODE_FX3_TIMEOUT: ${{ vars.ATLASCODE_FX3_TIMEOUT }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Download node_modules | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: node-modules | |
| - name: Extract node_modules | |
| run: tar -xzf node_modules.tar.gz | |
| - name: Download extension package | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: extension-package | |
| - name: Generate SSL certs for E2E test | |
| run: npm run test:e2e:sslcerts | |
| - name: Fetch E2E image | |
| run: | | |
| docker pull ghcr.io/atlassian/atlascode-e2e:latest | |
| docker tag ghcr.io/atlassian/atlascode-e2e:latest atlascode-e2e | |
| - name: Run E2E (${{ matrix.target }}) | |
| run: npm run test:e2e:docker | |
| env: | |
| TARGET: ${{ matrix.target }} | |
| - name: Upload E2E artifacts (${{ matrix.target }}) | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: e2e-test-results-${{ matrix.target }} | |
| path: ./test-results | |
| retention-days: 1 | |
| if-no-files-found: ignore | |
| finalize: | |
| needs: [setup-dependencies, lint, test-unit, build-extension, test-e2e] | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - name: Delete node_modules artifact | |
| if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} | |
| uses: geekyeggo/delete-artifact@v5 | |
| with: | |
| name: node-modules | |
| failOnError: false | |
| - name: Delete extension package artifact | |
| if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} | |
| uses: geekyeggo/delete-artifact@v5 | |
| with: | |
| name: extension-package | |
| failOnError: false | |
| - name: Check if all jobs succeeded | |
| run: | | |
| results='${{ toJSON(needs.*.result) }}' | |
| if echo "$results" | jq -e 'any(. != "success")' > /dev/null; then | |
| echo "One or more jobs failed:" | |
| echo " setup-dependencies: ${{ needs.setup-dependencies.result }}" | |
| echo " lint: ${{ needs.lint.result }}" | |
| echo " test-unit: ${{ needs.test-unit.result }}" | |
| echo " build-extension: ${{ needs.build-extension.result }}" | |
| echo " test-e2e: ${{ needs.test-e2e.result }}" | |
| echo "Artifacts are retained for 1 day to allow rerunning failed jobs" | |
| exit 1 | |
| fi | |
| echo "All steps completed successfully" |