Skip to content

Build with latest Go #245

Build with latest Go

Build with latest Go #245

Workflow file for this run

---
name: Build
on: [push]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
ui:
env:
GONOSUMDB: "github.com/moby/moby"
name: Build UI
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Build
run: |
make build_ui
- uses: actions/upload-artifact@v2
with:
name: ui
path: |
./ui/build
build:
env:
GONOSUMDB: "github.com/moby/moby"
GO111MODULE: "on"
name: Build Application
runs-on: ubuntu-latest
needs: ui
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.21.5
- uses: actions/download-artifact@v2
with:
name: ui
path: ui/build
- name: Get dependencies
run: |
go get -v -t ./...
- name: Unit Test
run: |
go test -v ./...
- name: Build
run: |
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/linux/amd64/fake-service
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o bin/linux/arm64/fake-service
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -o bin/linux/arm6/fake-service
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o bin/linux/arm7/fake-service
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o bin/darwin/amd64/fake-service
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o bin/darwin/arm64/fake-service
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o bin/windows/fake-service.exe
- uses: actions/upload-artifact@v2
with:
name: binaries
path: |
./bin
release:
env:
GONOSUMDB: "github.com/moby/moby"
name: Release Application
needs: build
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
if: contains(github.ref, 'dev') || contains(github.ref, 'v')
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: binaries
path: bin
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Setup Docker Multi-Arch Builder
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name multi
docker buildx use multi
docker buildx inspect --bootstrap
- name: Build and push Docker
run: |
docker buildx build --platform linux/arm64,linux/amd64 \
-t nicholasjackson/fake-service:${GITHUB_REF##*/} \
-f ./Dockerfile \
./bin \
--push
- name: Build and push Docker VM
run: |
docker buildx build --platform linux/arm64,linux/amd64 \
-t nicholasjackson/fake-service:vm-${GITHUB_REF##*/} \
-f ./Dockerfile-VM \
. \
--push
- name: Log in to the Container registry for Github
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker Github
run: |
docker buildx build --platform linux/arm64,linux/amd64 \
-t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${GITHUB_REF##*/} \
-f ./Dockerfile \
./bin \
--push
- name: Zip binaries
run: |
zip -j fake_service_linux_amd64.zip ./bin/linux/amd64/fake-service
zip -j fake_service_linux_arm64.zip ./bin/linux/arm64/fake-service
zip -j fake_service_linux_arm6.zip ./bin/linux/arm6/fake-service
zip -j fake_service_linux_arm7.zip ./bin/linux/arm7/fake-service
zip -j fake_service_darwin_amd64.zip ./bin/darwin/amd64/fake-service
zip -j fake_service_darwin_arm64.zip ./bin/darwin/arm64/fake-service
zip -j fake_service_windows_amd64.zip ./bin/windows/fake-service.exe
- name: Create Release
id: create_release
if: contains(github.ref, 'v0')
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Upload Release Asset Linux Amd64
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_linux_amd64.zip
asset_name: fake_service_linux_amd64.zip
asset_content_type: application/zip
- name: Upload Release Asset Linux Arm6
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_linux_arm6.zip
asset_name: fake_service_linux_arm6.zip
asset_content_type: application/zip
- name: Upload Release Asset Linux Arm7
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_linux_arm7.zip
asset_name: fake_service_linux_arm7.zip
asset_content_type: application/zip
- name: Upload Release Asset Linux Arm64
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_linux_arm64.zip
asset_name: fake_service_linux_arm64.zip
asset_content_type: application/zip
- name: Upload Release Asset Darwin Amd64
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_darwin_amd64.zip
asset_name: fake_service_darwin_amd64.zip
asset_content_type: application/zip
- name: Upload Release Asset Darwin Arm64
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_darwin_arm64.zip
asset_name: fake_service_darwin_arm64.zip
asset_content_type: application/zip
- name: Upload Release Asset Windows Amd64
if: contains(github.ref, 'v0')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./fake_service_windows_amd64.zip
asset_name: fake_service_windows_amd64.zip
asset_content_type: application/zip