gaggle

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 :slight_smile:.

Happy to hear any thoughts, feedback, suggestions, etc.

The actual marketplace page is here: Elixir Script · Actions · GitHub Marketplace · GitHub

Most Liked

gaggle

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!

Where Next?

Popular in Discussions Top

sergio
There’s a new TIOBE index report that came out that shows Elixir is still not in the top 50 used languages. It also goes on to call Elix...
New
acrolink
How does the two languages compare when it comes to server side application development? Any experiences or ideas? Thank you.
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
tmbb
This is a post to discuss the new Phoenix LiveView functionality. From Chris’s talk, it appears that they generate all HTML on the serve...
342 18634 126
New
nburkley
AWS re:Invent is on at the moment with some interesting announcements. One new feature in particular is the Lambda Runtime API for AWS La...
New
shishini
I think this twitter post and youtube video didn’t get as much attention as I hoped I am still new to Elixir, so can’t really judge ...
New

Other popular topics Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement