GitHub Actions
From Christoph's Personal Wiki
GitHub Actions is a service provided by GitHub that allows building continuous integration and continuous deployment (CI/CD) pipelines for testing, releasing, and deploying software without the use of third-party websites/platforms.
Introduction
GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository or deploy merged pull requests to production.
There are different components of GitHub Actions:
- Workflows
- A workflow is a configurable automated process that will run one or more jobs.
- Events
- An event is a specific activity in a repository that triggers a workflow run. For example, activity can originate from GitHub when someone creates a pull request, opens an issue, or pushes a commit to a repository.
- Jobs
- A job is a set of steps in a workflow
- Actions
- Performs frequently repeated task. An action can for example pull your git repository from GitHub,
- Runners
- A runner is a server that runs your workflows when they’re triggered.
Examples
Basic
$ cat .github/workflows/basic.yaml name: Shell Commands on: [push] jobs: run-shell-commands: runs-on: ubuntu-latest steps: - name: echo a string run: echo "Hello, World!" - name: multiline script run: | node -v npm -v - name: python command run: | import platform print (platform.processor()) shell: python
- Using the GitHub CLI:
$ gh workflow view ? Select a workflow Shell Commands (simple.yaml) Shell Commands - simple.yaml ID: 13613098 Total runs 1 Recent runs ✓ initial commit of .github/workflows/simple.yaml Shell Commands master push 1280462255 To see more runs for this workflow, try: gh run list --workflow simple.yaml To see the YAML for this workflow, try: gh workflow view simple.yaml --yaml $ gh workflow view simple.yaml --yaml Shell Commands - simple.yaml ID: 13613098 name: Shell Commands on: [push] jobs: run-shell-command: runs-on: ubuntu-latest steps: - name: echo a string run: echo "Hello World" - name: multiline script run: | node -v npm -v - name: python Command run: | import platform print (platform.processor()) shell: python $ gh run list --workflow simple.yaml STATUS NAME WORKFLOW BRANCH EVENT ID ELAPSED AGE ✓ initial commit of .github/workflows/simple.yaml Shell Commands master push 1280462255 15s 15d For details on a run, try: gh run view <run-id> $ gh run view 1280462255 ✓ master Shell Commands · 1280462255 Triggered via push about 16 days ago JOBS ✓ run-shell-command in 1s (ID 3726651254) For more information about a job, try: gh run view --job=<job-id> View this run on GitHub: https://github.com/christophchamp/github-actions/actions/runs/1280462255
External links
- Official GitHub Actions documentation
- Understanding GitHub Actions
- About GitHub-hosted runners
- Enabling debug logging
- List of packages installed on Ubuntu by default
- Christoph Champ's GitHub Actions demos
- GitHub Actions YAML Extension — for VS Code