Skip to content

Build & Release

Build & Release #252

Workflow file for this run

name: Build & Release
on:
workflow_dispatch:
inputs:
build_only:
description: 'build_only: "true" or empty'
required: false
repository_dispatch:
types: [build-release]
env:
GOPRIVATE: github.com/slingdata-io/*
jobs:
release-python:
needs: [ release-linux-amd64, release-brew, release-scoop ]
runs-on: ubuntu-latest
steps:
- name: Trigger Upload to PyPi
uses: peter-evans/repository-dispatch@v2
with:
token: ${{ secrets.REPO_ACCESS_TOKEN }}
repository: slingdata-io/sling-python
event-type: release-python
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
release-brew:
runs-on: [self-hosted-mac]
timeout-minutes: 20
# runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v1
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.22"
cache: false
- name: Load Secrets
uses: flarco/infisical-action@v3
with:
version: 0.28.1
client_id: ${{ secrets.INFISICAL_CLIENT_ID }}
client_secret: ${{ secrets.INFISICAL_CLIENT_SECRET }}
use_system_python: true
- name: Prep for build
run: bash scripts/ci/prep.mac.sh
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: 'v1.26.2'
args: release --clean --skip=validate -f .goreleaser.mac.yaml --release-notes=.goreleaser.notes.md
- name: Post Tests
run: |
dist/sling_darwin_arm64/sling conns discover local -p '.'
release-scoop:
# runs-on: [self-hosted, Windows]
runs-on: windows-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.22"
cache: true
- name: Load Secrets
uses: flarco/infisical-action@v3
with:
version: 0.28.1
client_id: ${{ secrets.INFISICAL_CLIENT_ID }}
client_secret: ${{ secrets.INFISICAL_CLIENT_SECRET }}
use_system_python: true
- name: Configure Pagefile
uses: al-cheb/[email protected]
with:
minimum-size: 16GB
maximum-size: 16GB
disk-root: "C:"
- name: Prep for build
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
.\scripts\ci\prep.win.ps1
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: 'v1.26.2'
args: release --clean --skip=validate -f .goreleaser.windows.yaml --release-notes=.goreleaser.notes.md
- name: Post Tests
shell: pwsh
run: |
.\dist\sling_windows_amd64_v1\sling.exe conns discover local -p '.'
release-linux-arm64:
runs-on: [self-hosted, Linux, ARM64]
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.22"
cache: false
- name: Load Secrets
uses: flarco/infisical-action@v3
with:
version: 0.28.1
client_id: ${{ secrets.INFISICAL_CLIENT_ID }}
client_secret: ${{ secrets.INFISICAL_CLIENT_SECRET }}
use_system_python: true
- name: Login docker
run: |
echo "$DOCKER_PASSWORD" | docker login -u slingdata --password-stdin
- name: Prep for build
run: bash scripts/ci/prep.linux.sh
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: 'v1.26.2'
args: release --clean --skip=validate -f .goreleaser.linux.arm64.yaml --release-notes=.goreleaser.notes.md
- name: Post Tests
run: |
dist/sling_linux_arm64/sling conns discover local -p '.'
# pushing to docker manually
# could not figure out how to make arm64 work in goreleaser
- name: Push to Docker Manually
run: |
rm -f sling && cp dist/sling_linux_arm64/sling .
export SLING_VERSION=$( ./sling --version | sed 's/Version: //')
docker build -f cmd/sling/Dockerfile.arm64 -t slingdata/sling:$SLING_VERSION-arm64 .
docker tag slingdata/sling:$SLING_VERSION-arm64 slingdata/sling:latest-arm64
docker push slingdata/sling:$SLING_VERSION-arm64
docker push slingdata/sling:latest-arm64
release-linux-amd64:
# runs-on: ubuntu-20.04
runs-on: [self-hosted, Linux, X64, ubuntu-16]
needs: [ release-linux-arm64 ] # for multi-platform docker image
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: "1.22"
cache: false
- name: Load Secrets
uses: flarco/infisical-action@v3
with:
version: 0.28.1
client_id: ${{ secrets.INFISICAL_CLIENT_ID }}
client_secret: ${{ secrets.INFISICAL_CLIENT_SECRET }}
use_system_python: true
- name: Login docker
run: |
echo "$DOCKER_PASSWORD" | docker login -u slingdata --password-stdin
- name: Prep for build
run: bash scripts/ci/prep.linux.sh
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3
with:
distribution: goreleaser
version: 'v1.26.2'
args: release --clean --skip=validate -f .goreleaser.linux.amd64.yaml --release-notes=.goreleaser.notes.md
- name: Post Tests
run: |
dist/sling_linux_amd64_v1/sling conns discover local -p '.'
- name: Dispatch test-sling-action
uses: peter-evans/repository-dispatch@v2
with:
event-type: test-sling-action