CIFriends/typescript-action-template

Repository files navigation

Note

Docs: docs..com

This repository contains a template for creating a Action using TypeScript. It includes a set of workflows that automate the process of testing, building, and checking the code.

The main entry point for the action is src/index.ts, which imports and runs the run function from src/main.ts. This function retrieves an input named "who-to-greet" and then sets an output named hello with the value "Hello, !".

The code is written in TypeScript and transpiled to JavaScript for distribution. The tsconfig.json file contains the TypeScript compiler options. The package.json file contains various scripts for formatting, linting, testing, and building the code. The preinstall script ensures that pnpm is used as the package manager.

To use this action in a workflow, you can reference it with the uses keyword and the path to the repository. You can also specify inputs with the with keyword. For example:

steps:
  - name: Example Step
    uses: ./ # Uses an action in the root directory, if you push this repository to , you can use the following: uses: <username>/typescript-action-template@v1
    with:
      who-to-greet: "Mona the Octocat"

This will run the action with the input who-to-greet set to "Mona the Octocat"

Note

Docs: docs..com

To add inputs and outputs to your Action, you need to define them in the action.yml file. Inputs are defined under the inputs field and outputs under the outputs field. Each input or output has a unique ID, a description, and other optional properties. For example, an input could be defined as follows:

inputs:
  my-input:
    description: "Description of the input"
    required: true
    default: "Default value"

And an output could be defined as follows:

outputs:
  my-output:
    description: "Description of the output"

In your TypeScript code, you can use the core.getInput function from the @actions/core package to retrieve the value of an input, and the core.setOutput function to set the value of an output.

Tip

If you don't want to install act on your environment, you can use Codespaces to run the action.

Note

Docs: Nektos

Install Nektos/act and run the following command:

act push -W ./workflows/ci.yml

There are several workflows defined in the ./workflows directory:

  • ci.yml: This workflow runs on every push or pull request to the main branch. It checks out the code, installs dependencies using pnpm, checks the code formatting, lints the code, runs tests, and then runs the action with a greeting.

  • check-dist.yml: This workflow also runs on every push or pull request to the main branch. It checks out the code, installs dependencies, builds the dist/ directory, and then checks if the dist/ directory matches the expected output. If it doesn't, the workflow fails and uploads the expected dist/ directory as a workflow artifact.

  • codeql-analysis.yml: This workflow runs on every push or pull request to the main branch, as well as on a schedule. It checks out the code, initializes CodeQL with the TypeScript language, auto builds the code, and then performs a CodeQL analysis.

The action uses the @actions/core and @actions/ packages as dependencies. The @actions/core package provides functions for getting inputs and setting outputs, among other things. The @actions/ package provides -related functionality.

This project is licensed under Apache-2.0. See the LICENSE file for details.