aymano.osman
2020-10-10 17:51:35

I’ve done exactly this before. It looks like this.

#lang racket ;; github/action (require "define-github-action.rkt") (github-action (name "push") (on (push (branches [ "master" ])) (pull_request (branches [ "master" ]))) (jobs (build (runs-on "ubuntu-latest") (steps (uses "actions/checkout@v1") #; (uses "actions/cache@v2" #:name "Cache racket packages" #:with ((path "~/.racket") (key "racket-packages") (restore-keys "racket-packages"))) (uses "Bogdanp/setup-racket@v0.10" #:name "Setup Racket environment" #:with ([distribution "minimal"] [version "7.8"])) (run "racket build.rkt image") (run #:name "Push to Heroku Container Registry" #:env ([HEROKU_API_KEY "${{ secrets.HEROKU_API_KEY }}"]) "heroku container:login" "docker build -t ..." "docker push ...") (run #:name "Release" #:env ([HEROKU_API_KEY "${{ secrets.HEROKU_API_KEY }}"]) "heroku container:release -a ... web")))))


aymano.osman
2020-10-10 17:53:29

The generated yaml isn’t very pretty. I also didn’t abstract anything. I just did it for fun (and because I hate editing yaml).


aymano.osman
2020-10-10 17:54:57

I’m not sure the approach could be extended to do what you want, but here is a gist with the relevant module https://gist.github.com/aymanosman/6a4a9f97ace1859ec1a62cf3c6adddef