diff --git a/.github/workflows/template_initialization.yaml b/.github/workflows/template_initialization.yaml index c4a2835..798a4db 100644 --- a/.github/workflows/template_initialization.yaml +++ b/.github/workflows/template_initialization.yaml @@ -30,8 +30,10 @@ jobs: IS_AVAILABLE_ON_NPM: ${{steps.id1.outputs.is_available_on_npm}} - uses: actions/checkout@v2 - - run: mv README.template.md README.md - - run: mv LICENSE.template LICENSE + - run: | + mv README.template.md README.md + mv LICENSE.template LICENSE + mv *.yaml .github/workflows/ - name : String replace id: id2 uses: garronej/github_actions_toolkit@v1.9 diff --git a/ci.yaml b/ci.yaml new file mode 100644 index 0000000..e965aa7 --- /dev/null +++ b/ci.yaml @@ -0,0 +1,100 @@ +name: ci +on: + push: + branches: + - develop + pull_request: + branches: + - develop + +jobs: + + test_lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + - run: npm ci + - name: Making sure 'npm run lint' and 'npm run format' does not changes anything. + run: | + npm run lint:check + npm run format:check + test_node: + runs-on: ${{ matrix.os }} + needs: test_lint + strategy: + matrix: + node: [ '14', '13', '12' ] + os: [ windows-latest, ubuntu-latest ] + name: Test with Node v${{ matrix.node }} on ${{ matrix.os }} + steps: + - name: Tell if project is using npm or yarn + id: _1 + uses: garronej/github_actions_toolkit@v1.11 + with: + action_name: tell_if_project_uses_npm_or_yarn + owner: ${{github.repository_owner}} + repo: ${{github.event.repository.name}} + branch: ${{github.ref}} + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + - if: steps._1.npm_or_yarn == 'yarn' + run: | + yarn install --frozen-lockfile + yarn run build + yarn run test + - if: steps._1.npm_or_yarn == 'npm' + run: | + npm ci + npm run build + npm run test + trigger_publish: + name: Trigger publish.yaml workflow if package.json version updated ( and secrets.PAT is set ). + runs-on: ubuntu-latest + env: + PAT: ${{secrets.PAT}} + if: github.event_name == 'push' && github.event.head_commit.author.name != 'ts_ci' + needs: test_node + steps: + + - name: Get version on latest + id: v_latest + uses: garronej/github_actions_toolkit@v1.11 + with: + action_name: get_package_json_version + owner: ${{github.repository_owner}} + repo: ${{github.event.repository.name}} + branch: latest + compare_to_version: '0.0.0' + + - name: Get version on develop + id: v_develop + uses: garronej/github_actions_toolkit@v1.11 + with: + action_name: get_package_json_version + owner: ${{github.repository_owner}} + repo: ${{github.event.repository.name}} + branch: ${{ github.sha }} + compare_to_version: ${{steps.v_latest.outputs.version || '0.0.0'}} + + - name: 'Trigger the ''publish'' workflow' + if: ${{ !!env.PAT && steps.v_develop.outputs.compare_result == '1' }} + uses: garronej/github_actions_toolkit@v1.11 + env: + GITHUB_TOKEN: ${{ secrets.PAT }} + with: + action_name: dispatch_event + owner: ${{github.repository_owner}} + repo: ${{github.event.repository.name}} + event_type: publish + client_payload_json: | + ${{ + format( + '{{"from_version":"{0}","to_version":"{1}","repo":"{2}"}}', + steps.v_latest.outputs.version, + steps.v_develop.outputs.version, + github.event.repository.name + ) + }} \ No newline at end of file diff --git a/.github/workflows/publish.yaml b/publish.yaml similarity index 100% rename from .github/workflows/publish.yaml rename to publish.yaml