# This workflow builds a container image from a specified artifact and a given # Dockerfile using Buildah and pushes it to a container registry. name: Build a container from an artifact on: workflow_call: inputs: artifact_name: description: "Name of the artifact to download" required: true type: string package-name: description: "Name of the package to build" required: true type: string package-label: description: "Label to use for the package" required: true type: string builder-image: description: "Container image to use for the build" required: false type: string default: gitea.ampenberger.com/campenbe/img-builder:3.21-1.24 dockerfile: description: "Dockerfile to use for the build" required: false type: string default: Dockerfile version: description: "Version string passed to the Docker build as build-arg" required: false type: string default: development git_user: description: "Git user to use for checkout and the container registry" required: false type: string default: campenbe secrets: # Password to log into the container registry PASSWORD: required: true # Token to access the git repository GIT_TOKEN: required: true env: PACKAGE_NAME: ${{ inputs.package-name }} PACKAGE_LABEL: ${{ inputs.package-label }} VERSION: ${{ inputs.version }} LABEL: ${{ inputs.package-label }} ARTIFACT_UPLOAD: ${{ env.ACT_EXEC == 'true' && 'actions/upload-artifact@v2' || 'actions/upload-artifact@v3' }} ARTIFACT_DOWNLOAD: ${{ env.ACT_EXEC == 'true' && 'actions/download-artifact@v2' || 'actions/download-artifact@v3' }} jobs: container: runs-on: ubuntu-latest container: image: ${{inputs.builder-image}} credentials: username: ${{inputs.git_user}} password: ${{secrets.PASSWORD}} steps: - name: Install tools run : | gitea_addr.sh env | sort - name: Fix git access run: | git config --global url."https://git:${{secrets.GIT_TOKEN}}@gitea.ampenberger.com/${{inputs.git_user}}/.insteadOf" git://git.ampenberger.com/ - uses: actions/checkout@v4 with: submodules: false - name: Download the artifact uses: "${{env.ARTIFACT_DOWNLOAD}}" with: name: ${{inputs.artifact_name}} path: build/ - name: Build container run: | find build set -x buildah build -f ${{inputs.dockerfile}} --build-arg GIT_TOKEN=${{secrets.GIT_TOKEN}} --build-arg VERSION=${VERSION} -t gitea.ampenberger.com/${{inputs.git_user}}/${PACKAGE_NAME}:${LABEL} . echo "Built ${PACKAGE_NAME}:${LABEL}" buildah images - name: Publish the container to the registry run: | buildah login -u ${{inputs.git_user}} -p ${{secrets.GIT_TOKEN}} gitea.ampenberger.com buildah push gitea.ampenberger.com/${{inputs.git_user}}/${PACKAGE_NAME}:${LABEL}