name: On_Push on: push: branches: - 'main' paths: - .forgejo/**/* - Committee/**/Handovers/* - Minutes/**/* - Committee/**/Budget/* - Events/**/* # so we can manually build the artifacts workflow_dispatch: jobs: changes: runs-on: nix # Required permissions permissions: pull-requests: read # Set job outputs to values from filter step outputs: scripts: ${{ steps.filter.outputs.changes }} steps: # make sure the code is available - uses: https://code.forgejo.org/actions/checkout@v4 - uses: https://forgejo.skynet.ie/Skynet/actions/get_lfs@v3 with: repository: ${{ gitea.repository }} ref_name: ${{ gitea.ref_name }} # For pull requests it's not necessary to checkout the code - uses: https://github.com/dorny/paths-filter@v3 id: filter with: filters: | minutes: - 'Minutes/**/*' events: - 'Events/**/*' handovers: - 'Committee/**/Handovers/*' budgets: - 'Committee/**/Budget/*' # rust code must be formatted for standardisation pdfs: # build it using teh base nixos system, helps with caching runs-on: nix needs: changes strategy: matrix: # script: [ handovers, minutes, budget, events ] script: ${{ fromJSON(needs.changes.outputs.scripts) }} permissions: # needs this to create tags and releases contents: write steps: # the if statements are to only run if there are changes in the sub dir # get the repo first - uses: https://code.forgejo.org/actions/checkout@v4 - uses: https://forgejo.skynet.ie/Skynet/actions/get_lfs@v3 with: repository: ${{ gitea.repository }} ref_name: ${{ gitea.ref_name }} # actual script to run the build process - run: nix run .#${{ matrix.script }} # zip the files so they can be released - run: | mkdir releases zip -r releases/${{ matrix.script }}.zip pdf_${{ matrix.script }} # upload them so they are available at https://forgejo.skynet.ie/Computer_Society/open-goverance/releases/tag/minutes_latest - uses: https://forgejo.skynet.ie/Skynet/actions-forgejo-release@v1 with: token: ${{ secrets.API_TOKEN_FORGEJO }} direction: upload release-dir: releases url: https://forgejo.skynet.ie repo: Computer_Society/open-goverance title: "PDFs of ${{ matrix.script }}" tag: "${{ matrix.script }}_latest" # basically replace an existing release if it exists override: true