Toggle switch port #418
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: Docker Build Action | |
on: | |
pull_request: | |
branches: | |
- master | |
release: | |
types: | |
- published | |
push: | |
branches: | |
- master | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
GCS_BUCKET: images.metal-pod.io | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
cache: false | |
- name: Lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
args: --build-tags integration -p bugs -p unused --timeout=5m | |
- name: Test | |
run: | | |
make test lint-structs | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
os: | |
- linux | |
- windows | |
- darwin | |
arch: | |
- amd64 | |
- arm64 | |
exclude: | |
- os: linux | |
arch: arm64 | |
- os: windows | |
arch: arm64 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Fetch tags # fetch-tags does not work | |
run: git fetch --prune --unshallow --tags | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
- uses: google-github-actions/auth@v2 | |
with: | |
credentials_json: '${{ secrets.GCP_SA_KEY }}' | |
- name: Set up Cloud SDK | |
uses: google-github-actions/setup-gcloud@v2 | |
- name: Make tag | |
run: | | |
[ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo "TAG_NAME=$(echo $GITHUB_REF | awk -F / '{print $3}')-${GITHUB_HEAD_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'release' ] && echo "TAG_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'push' ] && echo "TAG_NAME=latest" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'pull_request' ] && echo "TARGET_BINARY_LOCATION=pull-requests/$(echo $GITHUB_REF | awk -F / '{print $3}')-${GITHUB_HEAD_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'release' ] && echo "TARGET_BINARY_LOCATION=${GITHUB_REF##*/}" >> $GITHUB_ENV || true | |
[ "${GITHUB_EVENT_NAME}" == 'push' ] && echo "TARGET_BINARY_LOCATION=latest" >> $GITHUB_ENV || true | |
- name: Build | |
run: | | |
make build GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} | |
- name: Log in to the container registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ secrets.DOCKER_REGISTRY_USER }} | |
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} | |
if: ${{ matrix.os == 'linux' && matrix.arch == 'amd64' }} | |
- name: Build and push image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.TAG_NAME }} | |
if: ${{ matrix.os == 'linux' && matrix.arch == 'amd64' }} | |
- name: Prepare upload | |
run: | | |
mkdir -p metalctl/${TARGET_BINARY_LOCATION} | |
sudo chown -R $(id -u):$(id -g) bin | |
cp bin/* metalctl/${TARGET_BINARY_LOCATION}/ | |
- name: Upload image tarballs to GCS | |
run: gsutil -m cp -r -p metalctl gs://$GCS_BUCKET | |
- name: Upload Release Asset | |
uses: softprops/action-gh-release@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
files: | | |
bin/metalctl-* | |
if: ${{ github.event_name == 'release' }} |