ci.yml 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. name: CI
  2. on:
  3. workflow_dispatch:
  4. push:
  5. branches: [ "main" ]
  6. pull_request:
  7. branches: [ "*" ]
  8. jobs:
  9. docker:
  10. runs-on: ubuntu-latest
  11. strategy:
  12. matrix:
  13. alpine: [ "3.16.9", "3.17.7", "3.18.6", "3.19.1" ]
  14. variant: [ "", "openrc" ]
  15. latest: [ false ]
  16. include:
  17. - alpine: "3.19.1"
  18. variant: ""
  19. latest: true
  20. - alpine: "3.19.1"
  21. variant: "openrc"
  22. latest: true
  23. steps:
  24. - name: Checkout
  25. uses: actions/checkout@v4
  26. - uses: actions/github-script@v7
  27. id: alpine-minor-version
  28. with:
  29. # The script returns 1.15 from 1.15.10
  30. script: return "${{ matrix.alpine }}".substr(0, "${{ matrix.alpine }}".lastIndexOf("."))
  31. result-encoding: string
  32. - name: Docker metadata
  33. id: meta
  34. uses: docker/metadata-action@v5
  35. with:
  36. labels: |
  37. maintainer=The Dockage Authors
  38. images: |
  39. dockage/alpine
  40. flavor: |
  41. latest=false
  42. suffix=${{ format(matrix.variant != '' && '-{0}' || '', matrix.variant) }}
  43. tags: |
  44. ### versioning strategy
  45. # dockage/alpine:3.16.2
  46. # dockage/alpine:3.16
  47. # dockage/alpine:3
  48. # dockage/alpine:3.16.2-openrc
  49. # dockage/alpine:3.16-openrc
  50. # dockage/alpine:3-openrc
  51. # dockage/alpine:latest
  52. type=semver,pattern={{version}},value=${{ matrix.alpine }}
  53. type=semver,pattern={{major}}.{{minor}},value=${{ matrix.alpine }}
  54. type=semver,pattern={{major}},value=${{ matrix.alpine }},enable=${{ matrix.latest }}
  55. type=raw,value=latest,suffix=,enable=${{ matrix.latest && matrix.variant == '' }}
  56. - name: Login to DockerHub
  57. uses: docker/login-action@v3
  58. with:
  59. username: ${{ secrets.DOCKERHUB_USERNAME }}
  60. password: ${{ secrets.DOCKERHUB_TOKEN }}
  61. - name: Set up Docker Buildx
  62. uses: docker/setup-buildx-action@v3
  63. - name: Build images
  64. uses: docker/bake-action@v4
  65. with:
  66. push: ${{ github.ref_name == github.event.repository.default_branch }}
  67. targets: ${{ matrix.variant }}
  68. sbom: true
  69. files: |
  70. ./docker-bake.hcl
  71. ${{ steps.meta.outputs.bake-file }}
  72. env:
  73. CONTEXT: ${{steps.alpine-minor-version.outputs.result}}
  74. - name: Docker Hub Description
  75. uses: peter-evans/dockerhub-description@v4
  76. if: ${{ github.event_name == 'push' && github.ref_name == github.event.repository.default_branch }}
  77. with:
  78. username: ${{ secrets.DOCKERHUB_USERNAME }}
  79. password: ${{ secrets.DOCKERHUB_TOKEN }}
  80. short-description: ${{ github.event.repository.description }}