gaggle
Release of ElixirScript, a Github Action to run Elixir code in workflow steps
Hi everyone,
I’ve released this new GitHub Actions called Elixir Script, because I wanted a way to script various tasks in my GitHub Actions workflows and wished for a way to use Elixir to do it.
Thus: ElixirScript, a Github Action to run Elixir code in workflow steps.
It works by taking a script as input, which gets run, and then the script’s return is available in outputs.result for later steps to use. Like this:
.github/workflows/example.yml:
- uses: gaggle/elixir_script@v0
id: script
with:
script: |
defmodule Greeter do
def greet(name), do: "Oh hi #{name}!"
end
Greeter.greet("Mark")
- name: Get result
run: echo "${{steps.script.outputs.result}}"
# Echos "Oh hi Mark!"
And the script is run with bindings to the GitHub Actions context that caused the run, so it’s easy to react to run-specific information. For example, :
script: |
"🚀 Pushed to #{context.payload.repository.name} by @#{context.actor}!
I think it’s a pretty easy, very low-friction way of getting to write some of the devopsy glue-code automations in Elixir. And it was a lot of fun to write as I got to learn about Elixir and GitHub Actions
.
Happy to hear any thoughts, feedback, suggestions, etc.
The actual marketplace page is here: Elixir Script · Actions · GitHub Marketplace · GitHub
Most Liked
gaggle
Hi everyone,
I’ve released 0.3.0, introducing a pre-authenticated GitHub client via Tentacat, so it’s now really easy to write scripts that interacts with the GitHub API. Here I get a list of stargazers:
- uses: gaggle/elixir_script@v0
with:
script: |
{200, stargazers, _} = Tentacat.Users.Starring.stargazers(client, "gaggle", "elixir_script")
IO.inspect(Enum.map_join(stargazers, ", ", & &1["login"]), label: "Stargazers")
And it can also cause changes, here I star a repository:
- uses: gaggle/elixir_script@v0
with:
script: |
{204, _, _} = Tentacat.Users.Starring.star(client, "gaggle", "elixir_script")
:ok
You can also pass in a custom Personal Access Token via the GH_TOKEN environment variable, if you need specific permissions the built-in token doesn’t provide:
- uses: gaggle/elixir_script@v0
with:
script: |
IO.puts("client now uses the passed-in custom token")
env:
GH_TOKEN: ${{ secrets.PAT }}
It was really simple to add, so my deepest thanks to Eduardo Gurgel for providing such an easy-to-use GitHub client!
Popular in Discussions
Other popular topics
Chat & Discussions>Discussions
Latest on Elixir Forum
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex










