2021-02-24 12:23:02 +00:00
name : Push images to DockerHub
# Controls when the action will run.
on :
push :
# Publish `master` as Docker `latest` and `git_revision` images.
branches :
- master
release :
# Publish released commit as Docker `latest` and `git_revision` images.
types :
- published
# Allows to run this workflow manually from the Actions tab.
workflow_dispatch :
2021-02-25 13:52:25 +00:00
inputs :
ref :
2021-11-25 08:32:44 +00:00
description: 'Ref to build Docker images for Ubuntu and Windows Server Core [default: latest master; examples : v0.92.0, 0a4ff9d3e4a9ab432fd5812eb18c98e03b5a7432]'
2021-02-25 13:52:25 +00:00
required : false
default : ''
push_image :
2021-11-25 08:32:44 +00:00
description: 'Push images to DockerHub [default: false; examples : true , false ] '
2021-02-25 13:52:25 +00:00
required : false
default : 'false'
2022-03-21 15:31:38 +00:00
use_latest_tag :
description: 'Use `latest` tag while pushing images to DockerHub (applied to Ubuntu image only) [default: false; examples : true , false ] '
required : false
default : 'false'
2021-02-24 12:23:02 +00:00
# Environment variables.
env :
GO111MODULE : "on"
# A workflow run.
jobs :
2021-11-25 08:32:44 +00:00
tests_ubuntu :
name : Run Ubuntu-based tests before publishing
2021-11-09 11:02:22 +00:00
runs-on : ubuntu-20.04
2021-02-24 12:23:02 +00:00
steps :
2021-12-03 09:25:10 +00:00
- uses : actions/checkout@v2
2021-02-25 13:52:25 +00:00
with :
ref : ${{ github.event.inputs.ref }}
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth : 0
2021-02-24 12:23:02 +00:00
- name : Sync VM submodule
run : |
git submodule sync
git submodule update --init
- name : Set up Go
uses : actions/setup-go@v2
with :
2022-02-22 16:37:27 +00:00
go-version : 1.18
2021-02-24 12:23:02 +00:00
- name : Restore go modules from cache
uses : actions/cache@v2
with :
2021-02-26 09:10:10 +00:00
path : /home/runner/go/pkg/mod
2021-02-24 12:23:02 +00:00
key : deps-${{ hashFiles('go.sum') }}
- name : Update Go modules
2021-02-26 09:10:10 +00:00
run : go mod download -json
2021-02-24 12:23:02 +00:00
- name : Run tests
run : make test
2021-11-25 08:32:44 +00:00
publish_ubuntu :
2021-02-24 12:23:02 +00:00
# Ensure test job passes before pushing image.
2021-11-25 08:32:44 +00:00
needs : tests_ubuntu
name : Publish Ubuntu-based image to DockerHub
2021-11-09 11:02:22 +00:00
runs-on : ubuntu-20.04
2021-02-24 12:23:02 +00:00
steps :
2021-12-03 09:25:10 +00:00
- uses : actions/checkout@v2
2021-02-25 13:52:25 +00:00
with :
ref : ${{ github.event.inputs.ref }}
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth : 0
2021-11-25 08:32:44 +00:00
- name : Build image
run : make image
- name : Build image with 'latest' tag
2022-03-21 15:31:38 +00:00
if : ${{ (github.event_name == 'release' && github.event.release.target_commitish == 'master') || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true' && github.event.inputs.use_latest_tag == 'true') }}
2021-11-25 08:32:44 +00:00
run : make image-latest
- name : Login to DockerHub
uses : docker/login-action@v1
with :
username : ${{ secrets.DOCKERHUB_USERNAME }}
password : ${{ secrets.DOCKERHUB_PASSWORD }}
- name : Push image to registry
if : ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }}
run : make image-push
- name : Push image with 'latest' tag to registry
2022-03-21 15:31:38 +00:00
if : ${{ (github.event_name == 'release' && github.event.release.target_commitish == 'master') || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true' && github.event.inputs.use_latest_tag == 'true') }}
2021-11-25 08:32:44 +00:00
run : make image-push-latest
tests_wsc :
name : Run WindowsServerCore-based tests before publishing
runs-on : windows-2022
steps :
2021-12-03 09:25:10 +00:00
- uses : actions/checkout@v2
2021-11-25 08:32:44 +00:00
with :
ref : ${{ github.event.inputs.ref }}
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth : 0
- name : Sync VM submodule
run : |
git submodule sync
git submodule update --init
2021-02-24 12:23:02 +00:00
- name : Set up Go
uses : actions/setup-go@v2
with :
2022-02-22 16:37:27 +00:00
go-version : 1.18
2021-02-24 12:23:02 +00:00
- name : Restore go modules from cache
uses : actions/cache@v2
with :
2021-02-26 09:10:10 +00:00
path : /home/runner/go/pkg/mod
2021-02-24 12:23:02 +00:00
key : deps-${{ hashFiles('go.sum') }}
- name : Update Go modules
2021-02-26 09:10:10 +00:00
run : go mod download -json
2021-02-24 12:23:02 +00:00
2021-11-25 08:32:44 +00:00
- name : Run tests
run : make test
publish_wsc :
# Ensure test job passes before pushing image.
needs : tests_wsc
name : Publish WindowsServerCore-based image to DockerHub
runs-on : windows-2022
steps :
2021-12-03 09:25:10 +00:00
- uses : actions/checkout@v2
2021-11-25 08:32:44 +00:00
with :
ref : ${{ github.event.inputs.ref }}
# Allows to fetch all history for all branches and tags. Need this for proper versioning.
fetch-depth : 0
2021-02-24 12:23:02 +00:00
2022-02-09 16:40:05 +00:00
- name : Show docker images
run : docker images
2021-11-25 08:32:44 +00:00
- name : Build image
run : make image-wsc
2021-02-25 14:32:51 +00:00
2021-02-24 12:23:02 +00:00
- name : Login to DockerHub
uses : docker/login-action@v1
with :
username : ${{ secrets.DOCKERHUB_USERNAME }}
password : ${{ secrets.DOCKERHUB_PASSWORD }}
2021-02-25 14:32:51 +00:00
- name : Push image to registry
2021-02-25 13:52:25 +00:00
if : ${{ github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && github.event.inputs.push_image == 'true') }}
2021-11-25 08:32:44 +00:00
run : make image-wsc-push