1. 8

  2. 2

    GitHub Actions, now out of beta


    So the problems you had with variables and such won’t be fundamentally fixed.

    1. 1

      Oh, fun?

      I wonder whether that means that this is the last time I could publish an article then while keeping the source repository private.

    2. 2

      Thanks for the writeup! I’ve never heard of Github Actions before, so I did a bit of research before reading. Looks like it’s Github’s very own CI/CD platform, has been in beta for a few months and was released today (13 Nov 2019). Sounds exciting!


      The whole thing has a very ad hoc feel to it, with lack of overall design. The language is strange – why bring Javascript-like property and index syntax into the expression syntax? What’s with the weird type coercion rules?

      This kills it for me. After following that link I’m inclined to agree. Basically Github defines this shiny new “expression syntax” which you invoke with ${{ }}, inside your YAML config. It feels a lot like template strings in Javascript. Just look at the example:

          runs-on: ubuntu-16.04
            - name: Dump GitHub context
                GITHUB_CONTEXT: ${{ toJson(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump job context
                JOB_CONTEXT: ${{ toJson(job) }}
              run: echo "$JOB_CONTEXT"

      First of all the simple example is already nested hell, second of all we have this expression syntax, what is “github”? What is “job”? Oh, they’re just global contexts that you can use in expressions… wait, so the expression syntax defines some constants, and let you convert it to JSON (JSON?? aren’t we writing YAML?), and then we assign it to the env variable, and then we echo the env variable? Why not just have the constant available? Why add a whole new layer of syntax? Seems unnecessarily complicated.