diff --git a/.github/workflows/__test-action-dependencies-cache.yml b/.github/workflows/__test-action-dependencies-cache.yml index 825b64d..c4af43c 100644 --- a/.github/workflows/__test-action-dependencies-cache.yml +++ b/.github/workflows/__test-action-dependencies-cache.yml @@ -28,24 +28,27 @@ jobs: steps: # jscpd:ignore-start - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Arrange - Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - id: setup-node + - name: Arrange - Setup Node.js runtime + id: arrange-setup-node uses: ./actions/setup-node with: working-directory: ${{ matrix.working-directory }} - - name: Check that package manager is the expected one - id: check-package-manager + - name: Arrange - Verify expected package manager + id: arrange-check-package-manager run: | - if [[ "${{ steps.setup-node.outputs.run-script-command }}" != "${{ matrix.package-manager }}"* ]]; then + if [[ "${{ steps.arrange-setup-node.outputs.run-script-command }}" != "${{ matrix.package-manager }}"* ]]; then echo "Package manager is not ${{ matrix.package-manager }}" exit 1 fi # jscpd:ignore-end - - id: get-dependencies-cache + - name: Act - Run "dependencies-cache" action + id: act-get-dependencies-cache uses: ./actions/dependencies-cache with: working-directory: ${{ matrix.working-directory }} @@ -57,7 +60,7 @@ jobs: storybook unknown - - name: Check "dependencies-cache" configured cache + - name: Assert - Check "dependencies-cache" configured cache uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | diff --git a/.github/workflows/__test-action-get-package-manager.yml b/.github/workflows/__test-action-get-package-manager.yml index c276d42..87fb1be 100644 --- a/.github/workflows/__test-action-get-package-manager.yml +++ b/.github/workflows/__test-action-get-package-manager.yml @@ -42,31 +42,33 @@ jobs: install-command: yarn install --frozen-lockfile run-script-command: yarn steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Arrange - Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - id: get-package-manager + - name: Act - Run "get-package-manager" action + id: act-get-package-manager uses: ./actions/get-package-manager with: working-directory: ${{ matrix.working-directory }} - - name: Check "get-package-manager" outputs + - name: Assert - Check "get-package-manager" outputs run: | - if [ "${{ steps.get-package-manager.outputs.package-manager }}" != '${{ matrix.package-manager }}' ]; then + if [ "${{ steps.act-get-package-manager.outputs.package-manager }}" != '${{ matrix.package-manager }}' ]; then echo "get-package-manager outputs result is not valid" exit 1 fi - if [ "${{ steps.get-package-manager.outputs.cache-dependency-path }}" != '${{ matrix.cache-dependency-path }}' ]; then + if [ "${{ steps.act-get-package-manager.outputs.cache-dependency-path }}" != '${{ matrix.cache-dependency-path }}' ]; then echo "get-package-manager outputs cache-dependency-path is not valid" exit 1 fi - if [ "${{ steps.get-package-manager.outputs.install-command }}" != '${{ matrix.install-command }}' ]; then + if [ "${{ steps.act-get-package-manager.outputs.install-command }}" != '${{ matrix.install-command }}' ]; then echo "get-package-manager outputs install-command is not valid" exit 1 fi - if [ "${{ steps.get-package-manager.outputs.run-script-command }}" != '${{ matrix.run-script-command }}' ]; then + if [ "${{ steps.act-get-package-manager.outputs.run-script-command }}" != '${{ matrix.run-script-command }}' ]; then echo "get-package-manager outputs run-script-command is not valid" exit 1 fi diff --git a/.github/workflows/__test-action-has-installed-dependencies.yml b/.github/workflows/__test-action-has-installed-dependencies.yml index 7938554..d669d02 100644 --- a/.github/workflows/__test-action-has-installed-dependencies.yml +++ b/.github/workflows/__test-action-has-installed-dependencies.yml @@ -30,22 +30,25 @@ jobs: package-manager: yarn lock-file: yarn.lock steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Arrange - Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - id: setup-node + - name: Arrange - Setup Node.js runtime + id: arrange-setup-node uses: ./actions/setup-node with: working-directory: ${{ matrix.working-directory }} - - name: Check that package manager is the expected one - id: check-package-manager + - name: Arrange - Verify expected package manager + id: arrange-check-package-manager run: | - if [[ "${{ steps.setup-node.outputs.run-script-command }}" != "${{ matrix.package-manager }}"* ]]; then + if [[ "${{ steps.arrange-setup-node.outputs.run-script-command }}" != "${{ matrix.package-manager }}"* ]]; then echo "Package manager is not ${{ matrix.package-manager }}" exit 1 fi - - id: has-installed-dependencies + - name: Act - Run "has-installed-dependencies" action + id: act-has-installed-dependencies uses: ./actions/has-installed-dependencies with: working-directory: ${{ matrix.working-directory }} @@ -57,13 +60,15 @@ jobs: storybook unknown - - name: Check "has-installed-dependencies" outputs + - name: Assert - Check "has-installed-dependencies" outputs uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + env: + INSTALLED_DEPENDENCIES: ${{ steps.act-has-installed-dependencies.outputs.installed-dependencies }} with: script: | const assert = require("assert"); - const installedDependenciesOutput = `${{ steps.has-installed-dependencies.outputs.installed-dependencies }}`; + const installedDependenciesOutput = process.env.INSTALLED_DEPENDENCIES; assert(installedDependenciesOutput.length, `"installed-dependencies" output is empty`); // Check if is valid JSON diff --git a/.github/workflows/__test-action-package.yml b/.github/workflows/__test-action-package.yml index 89d7fc5..0ae41cb 100644 --- a/.github/workflows/__test-action-package.yml +++ b/.github/workflows/__test-action-package.yml @@ -16,34 +16,76 @@ jobs: include: - working-directory: tests/npm artifact-suffix: npm + install-command: npm install --force --legacy-peer-deps --no-audit --no-fund --loglevel=warn - working-directory: tests/pnpm artifact-suffix: pnpm + install-command: pnpm install - working-directory: tests/pnpm-package-manager artifact-suffix: pnpm-package-manager + install-command: pnpm install - working-directory: tests/yarn artifact-suffix: yarn + install-command: yarn add steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Arrange - Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - id: package + - name: Act - Run "package" action + id: act-package uses: ./actions/package with: working-directory: ${{ matrix.working-directory }} artifact-name: package-tarball-${{ matrix.artifact-suffix }} - - name: Check "package" outputs + - name: Assert - Check "package" outputs + env: + PACKAGE_TARBALL_PATH: ${{ steps.act-package.outputs.package-tarball-path }} + PACKAGE_TARBALL_ARTIFACT_ID: ${{ steps.act-package.outputs.package-tarball-artifact-id }} run: | - if [ -z "${{ steps.package.outputs.package-tarball-path }}" ]; then + if [ -z "$PACKAGE_TARBALL_PATH" ]; then echo "package-tarball-path output is empty" exit 1 fi - if [ ! -f "${{ steps.package.outputs.package-tarball-path }}" ]; then + if [ ! -f "$PACKAGE_TARBALL_PATH" ]; then echo "Generated package tarball does not exist" exit 1 fi - if [ -z "${{ steps.package.outputs.package-tarball-artifact-id }}" ]; then + if [ -z "$PACKAGE_TARBALL_ARTIFACT_ID" ]; then echo "package-tarball-artifact-id output is empty" exit 1 fi + + - name: Arrange - Configure Node.js version + run: echo "lts/*" > .nvmrc + working-directory: ${{ matrix.working-directory }} + + - name: Arrange - Setup Node.js runtime + id: arrange-setup-node + uses: ./actions/setup-node + with: + working-directory: ${{ matrix.working-directory }} + + - name: Assert - Download package tarball artifact by ID + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0 + with: + artifact-ids: ${{ steps.act-package.outputs.package-tarball-artifact-id }} + path: ${{ runner.temp }} + skip-decompress: true + + - name: Assert - Check downloaded package tarball artifact + env: + TARBALL_PATH: ${{ steps.act-package.outputs.package-tarball-path }} + INSTALL_COMMAND: ${{ matrix.install-command }} + working-directory: ${{ runner.temp }} + run: | + tarball_name="$(basename "$TARBALL_PATH")" + + if [ ! -f "./$tarball_name" ]; then + echo "Downloaded package tarball artifact does not exist" + exit 1 + fi + + # Install the tarball to verify it's a valid npm package + $INSTALL_COMMAND "./$tarball_name" diff --git a/.github/workflows/__test-action-setup-node.yml b/.github/workflows/__test-action-setup-node.yml index f13b213..bb90d14 100644 --- a/.github/workflows/__test-action-setup-node.yml +++ b/.github/workflows/__test-action-setup-node.yml @@ -15,38 +15,36 @@ jobs: matrix: include: - working-directory: tests/npm - package-manager: npm - lock-file: package-lock.json run-script-command: npm run - working-directory: tests/pnpm - package-manager: pnpm - lock-file: pnpm-lock.yaml run-script-command: pnpm - working-directory: tests/pnpm-package-manager - package-manager: pnpm - lock-file: pnpm-lock.yaml run-script-command: pnpm - working-directory: tests/yarn - package-manager: yarn - lock-file: yarn.lock run-script-command: yarn steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Arrange - Checkout sources + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - run: echo "lts/*" > .nvmrc + - name: Arrange - Configure Node.js version + run: echo "lts/*" > .nvmrc working-directory: ${{ matrix.working-directory }} - - id: setup-node + - name: Act - Run "setup-node" action + id: act-setup-node uses: ./actions/setup-node with: working-directory: ${{ matrix.working-directory }} - - name: Check "setup-node" outputs + - name: Assert - Check "setup-node" outputs + env: + RUN_SCRIPT_COMMAND: ${{ steps.act-setup-node.outputs.run-script-command }} + EXPECTED_RUN_SCRIPT_COMMAND: ${{ matrix.run-script-command }} run: | - if [ "${{ steps.setup-node.outputs.run-script-command }}" != "${{ matrix.run-script-command }}" ]; then - echo "get-package-manager outputs run-script-command is not valid" + if [ "$RUN_SCRIPT_COMMAND" != "$EXPECTED_RUN_SCRIPT_COMMAND" ]; then + echo "setup-node outputs run-script-command is not valid" exit 1 fi diff --git a/.github/workflows/__test-workflow-continuous-integration.yml b/.github/workflows/__test-workflow-continuous-integration.yml index c4d7640..918ca85 100644 --- a/.github/workflows/__test-workflow-continuous-integration.yml +++ b/.github/workflows/__test-workflow-continuous-integration.yml @@ -57,6 +57,7 @@ jobs: {"coverage": "github"} arrange-with-container: + name: Arrange - Build container image for CI workflow permissions: id-token: write contents: read diff --git a/actions/package/README.md b/actions/package/README.md index f8fcaf3..c4e49e8 100644 --- a/actions/package/README.md +++ b/actions/package/README.md @@ -3,7 +3,7 @@ #  GitHub Action: Package