Update docker/build-push-action action to v6 #749
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Forms Backend | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
lint: | |
name: Linting | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install Python Dependencies | |
uses: HassanAbouelela/actions/setup-python@setup-python_v1.6.0 | |
with: | |
python_version: "3.12" | |
install_args: "--only dev" | |
- name: Run pre-commit hooks | |
run: SKIP=ruff-lint pre-commit run --all-files | |
# Run `ruff` using github formatting to enable automatic inline annotations. | |
- name: Run ruff | |
run: "ruff check --output-format=github ." | |
# Prepare the Pull Request Payload artifact. If this fails, we | |
# we fail silently using the `continue-on-error` option. It's | |
# nice if this succeeds, but if it fails for any reason, it | |
# does not mean that our lint-test checks failed. | |
- name: Prepare Pull Request Payload artifact | |
id: prepare-artifact | |
if: always() && github.event_name == 'pull_request' | |
continue-on-error: true | |
run: cat $GITHUB_EVENT_PATH | jq '.pull_request' > pull_request_payload.json | |
# This only makes sense if the previous step succeeded. To | |
# get the original outcome of the previous step before the | |
# `continue-on-error` conclusion is applied, we use the | |
# `.outcome` value. This step also fails silently. | |
- name: Upload a Build Artifact | |
if: always() && steps.prepare-artifact.outcome == 'success' | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pull-request-payload | |
path: pull_request_payload.json | |
build: | |
name: Build & Push | |
runs-on: ubuntu-latest | |
needs: [lint] | |
if: github.ref == 'refs/heads/main' && github.event_name == 'push' | |
steps: | |
- name: Create SHA Container Tag | |
id: sha_tag | |
run: | | |
tag=$(cut -c 1-7 <<< $GITHUB_SHA) | |
echo "::set-output name=tag::$tag" | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Docker BuildX | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Github Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: ./Dockerfile | |
push: true | |
cache-from: type=registry,ref=ghcr.io/python-discord/forms-backend:latest | |
cache-to: type=inline | |
tags: | | |
ghcr.io/python-discord/forms-backend:latest | |
ghcr.io/python-discord/forms-backend:${{ steps.sha_tag.outputs.tag }} | |
build-args: | | |
git_sha=${{ github.sha }} | |
deploy: | |
name: Deployment | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- name: Create SHA Container Tag | |
id: sha_tag | |
run: | | |
tag=$(cut -c 1-7 <<< $GITHUB_SHA) | |
echo "::set-output name=tag::$tag" | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Authenticate with Kubernetes | |
uses: azure/k8s-set-context@v4 | |
with: | |
method: kubeconfig | |
kubeconfig: ${{ secrets.KUBECONFIG }} | |
- name: Deploy to Kubernetes | |
uses: Azure/k8s-deploy@v5 | |
with: | |
namespace: forms | |
manifests: | | |
deployment.yaml | |
images: "ghcr.io/python-discord/forms-backend:${{ steps.sha_tag.outputs.tag }}" | |
kubectl-version: "latest" |