name: Build containers on: workflow_dispatch: push: branches: ["main"] paths: ["containers/**", ".gitea/workflows/build.yaml"] pull_request: branches: ["main"] paths: ["containers/**", ".gitea/workflows/build.yaml"] jobs: changes: runs-on: job-v2 outputs: any_change: ${{ steps.filter.outputs.workflow == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'}} base: ${{ steps.filter.outputs.base == 'true' }} steps: - uses: actions/checkout@v4 - uses: https://github.com/dorny/paths-filter@v3 id: filter with: filters: | workflow: ['.gitea/workflows/build.yaml'] base: ['containers/base/**'] base-image: needs: [changes] if: ${{ needs.changes.outputs.base == 'true' || needs.changes.outputs.any_change == 'true' }} runs-on: job-v2 steps: - uses: actions/checkout@v4 - name: Log in uses: redhat-actions/podman-login@v1 with: registry: git.plabble.org username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Build id: build uses: job79/buildah-build@65b3793a1370c1ccd74a5c0d090d70eb9637a4ef with: image: maurice/base tags: ${{ github.ref_name }} context: ./containers/base containerfiles: ./containers/base/Containerfile - name: Push uses: redhat-actions/push-to-registry@v2 with: image: ${{ steps.build.outputs.image }} tags: ${{ steps.build.outputs.tags }} registry: git.plabble.org username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_TOKEN }} extra-args: | --compression-format=zstd --compression-level=12 # dependent-images: # needs: [changes, base-image] # if: always() && needs.changes.result == 'success' && (needs.base-image.result == 'success' || needs.base-image.result == 'skipped') # runs-on: job-v2 # strategy: # fail-fast: false # matrix: # container: [rust, dotnet, go] # steps: # - name: Check if build needed # id: check # run: | # if [[ "${{ matrix.container }}" == "go" && "${{ needs.changes.outputs.go }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi # if [[ "${{ matrix.container }}" == "rust" && "${{ needs.changes.outputs.rust }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi # if [[ "${{ matrix.container }}" == "dotnet" && "${{ needs.changes.outputs.dotnet }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi # if [[ "${{ needs.changes.outputs.any_change }}" == "true" ]]; then echo "run=true" >> $GITHUB_OUTPUT; fi # - name: Clone repo # if: steps.check.outputs.run == 'true' # uses: actions/checkout@v4 # - name: Log in # if: steps.check.outputs.run == 'true' # uses: redhat-actions/podman-login@v1 # with: # registry: git.plabble.org # username: ${{ secrets.REGISTRY_USERNAME }} # password: ${{ secrets.REGISTRY_TOKEN }} # - name: Build # id: build # if: steps.check.outputs.run == 'true' # uses: job79/buildah-build@65b3793a1370c1ccd74a5c0d090d70eb9637a4ef # with: # image: maurice/${{ matrix.container }} # tags: ${{ github.ref_name }} # context: ./containers/${{ matrix.container }} # containerfiles: ./containers/${{ matrix.container }}/Containerfile # build-args: TAG=${{ github.ref_name }} # - name: Push # if: steps.check.outputs.run == 'true' # uses: redhat-actions/push-to-registry@v2 # with: # image: ${{ steps.build.outputs.image }} # tags: ${{ steps.build.outputs.tags }} # registry: git.plabble.org # username: ${{ secrets.REGISTRY_USERNAME }} # password: ${{ secrets.REGISTRY_TOKEN }} # extra-args: | # --compression-format=zstd # --compression-level=12