forked from TrueCloudLab/neoneo-go
613f6e4350
1. Build privnet image for WSC. 2. Automatically define OS to build image and privnet image. 3. Unify image building code for Ubuntu and WSC.
169 lines
5.2 KiB
YAML
169 lines
5.2 KiB
YAML
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:
|
|
inputs:
|
|
ref:
|
|
description: 'Ref to build Docker images for Ubuntu and Windows Server Core [default: latest master; examples: v0.92.0, 0a4ff9d3e4a9ab432fd5812eb18c98e03b5a7432]'
|
|
required: false
|
|
default: ''
|
|
push_image:
|
|
description: 'Push images to DockerHub [default: false; examples: true, false]'
|
|
required: false
|
|
default: 'false'
|
|
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'
|
|
|
|
# Environment variables.
|
|
env:
|
|
GO111MODULE: "on"
|
|
|
|
# A workflow run.
|
|
jobs:
|
|
tests_ubuntu:
|
|
name: Run Ubuntu-based tests before publishing
|
|
runs-on: ubuntu-20.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
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
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
- name: Restore go modules from cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: /home/runner/go/pkg/mod
|
|
key: deps-${{ hashFiles('go.sum') }}
|
|
|
|
- name: Update Go modules
|
|
run: go mod download -json
|
|
|
|
- name: Run tests
|
|
run: make test
|
|
publish_ubuntu:
|
|
# Ensure test job passes before pushing image.
|
|
needs: tests_ubuntu
|
|
name: Publish Ubuntu-based image to DockerHub
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
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: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
- name: Build image
|
|
run: make image
|
|
|
|
- name: Build image with 'latest' tag
|
|
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') }}
|
|
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
|
|
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') }}
|
|
run: make image-push-latest
|
|
|
|
tests_wsc:
|
|
name: Run WindowsServerCore-based tests before publishing
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
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
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
- name: Restore go modules from cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: /home/runner/go/pkg/mod
|
|
key: deps-${{ hashFiles('go.sum') }}
|
|
|
|
- name: Update Go modules
|
|
run: go mod download -json
|
|
|
|
- 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:
|
|
- uses: actions/checkout@v2
|
|
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: Show docker images
|
|
run: docker images
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.18
|
|
|
|
- name: Build image
|
|
run: make image
|
|
|
|
- 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
|