.github/workflows/deploy-RELEASE-slim.yml #2
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
--- | |
################################# | |
################################# | |
## Deploy Release Docker Image ## | |
################################# | |
################################# | |
# | |
# Documentation: | |
# https://help.github.com/en/articles/workflow-syntax-for-github-actions | |
# | |
####################################### | |
# Start the job on all push to master # | |
####################################### | |
on: | |
# Start when a release is published | |
release: | |
types: ['published'] | |
############### | |
# Set the Job # | |
############### | |
jobs: | |
deploy: | |
# Name the Job | |
name: Deploy Docker Image - Release - SLIM | |
# Set the agent to run on | |
runs-on: ubuntu-latest | |
##################################################################### | |
# Only run if Admin start job and it was the Release Issue template # | |
##################################################################### | |
if: ${{ github.actor == 'admiralawkbar' || github.actor == 'jwiebalk' || | |
github.actor == 'IAmHughes' || github.actor == 'nemchik' || | |
github.actor == 'Hanse00' || github.actor == 'github-actions' || | |
github.actor == 'GaboFDC' || github.actor == 'ferrarimarco' }} | |
################## | |
# Load all steps # | |
################## | |
steps: | |
########################## | |
# Checkout the code base # | |
########################## | |
- name: Checkout Code | |
uses: actions/[email protected] | |
######################### | |
# Update deployment API # | |
######################### | |
- name: Start deployment | |
uses: bobheadxi/[email protected] | |
id: deployment | |
with: | |
step: start | |
token: ${{ secrets.GITHUB_TOKEN }} | |
env: Release-SLIM | |
######################## | |
# Get the current date # | |
######################## | |
- name: Get current date | |
run: echo "BUILD_DATE=\"$(date -u +'%Y-%m-%dT%H:%M:%SZ')\" >> ${GITHUB_ENV}" | |
######################## | |
# Setup Docker build X # | |
######################## | |
- name: Setup BuildX | |
uses: docker/[email protected] | |
############################### | |
# Login to DockerHub registry # | |
############################### | |
- name: Login to DockerHub | |
uses: docker/[email protected] | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
###################################### | |
# Login to GitHub Container registry # | |
###################################### | |
- name: Login to GitHub Container Registry | |
uses: docker/[email protected] | |
with: | |
username: ${{ secrets.GCR_USERNAME }} | |
password: ${{ secrets.GCR_TOKEN }} | |
registry: ghcr.io | |
########################### | |
# Get the current release # | |
########################### | |
- name: Get current Release number | |
# shellcheck disable=SC2062 | |
run: | | |
echo "RELEASE_VERSION=$(echo ${{ github.event.release.name }} \ | |
| grep -E -o "v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+")" \ | |
>> "${GITHUB_ENV}" | |
################ | |
# Docker cache # | |
################ | |
- name: Cache Docker layers | |
uses: actions/cache@v2 | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-single-buildx-slim | |
restore-keys: | | |
${{ runner.os }}-single-buildx | |
########################################### | |
# Build and Push containers to registries # | |
########################################### | |
- name: Build and push - SLIM | |
uses: docker/[email protected] | |
with: | |
context: . | |
file: ./Dockerfile-slim | |
build-args: | | |
BUILD_DATE=${{ env.BUILD_DATE }} | |
BUILD_REVISION=${{ github.sha }} | |
BUILD_VERSION=${{ github.sha }} | |
push: true | |
tags: | | |
github/super-linter:slim-latest | |
github/super-linter:slim-v4 | |
"github/super-linter:slim-${{ env.RELEASE_VERSION }}" | |
ghcr.io/github/super-linter:slim-latest | |
ghcr.io/github/super-linter:slim-v4 | |
"ghcr.io/github/super-linter:slim-${{ env.RELEASE_VERSION }}" | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache-new | |
# Temp fix | |
# https://github.com/docker/build-push-action/issues/252 | |
# https://github.com/moby/buildkit/issues/1896 | |
############# | |
# Fix Cache # | |
############# | |
- name: Move cache | |
run: | | |
rm -rf /tmp/.buildx-cache | |
mv /tmp/.buildx-cache-new /tmp/.buildx-cache | |
######################### | |
# Update Deployment API # | |
######################### | |
- name: Update deployment status | |
uses: bobheadxi/[email protected] | |
if: always() | |
with: | |
step: finish | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status }} | |
deployment_id: ${{ steps.deployment.outputs.deployment_id }} | |
env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }} | |
####################################################### | |
# Create a GitHub Issue with the info from this build # | |
####################################################### | |
- name: Create GitHub Issue for failure | |
if: failure() | |
uses: actions/github-script@v5 | |
id: create-issue | |
with: | |
# https://octokit.github.io/rest.js/v18#issues-create | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const create = await github.issues.create({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
title: "Failed to deploy release to production", | |
body: "Automation has failed us! Failed to push release ${{ env.RELEASE_VERSION }}" | |
}) | |
console.log('create', create) | |
return create.data.number | |
############################ | |
# Assign admins on failure # | |
############################ | |
- name: Assign Admins on failure | |
uses: actions/github-script@v5 | |
if: failure() | |
with: | |
# https://octokit.github.io/rest.js/v18#issues-create | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
github.issues.addAssignees({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: "${{ steps.create-issue.outputs.result }}", | |
assignees: [ | |
'admiralawkbar', | |
'jwiebalk', | |
'IAmHughes', | |
'nemchik', | |
'Hanse00', | |
'GaboFDC', | |
'ferrarimarco' | |
] | |
}) |