Skip to content

Build - 81/merge

Build - 81/merge #19

Workflow file for this run

name: Build
run-name: Build - ${{ github.ref_name }}
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_call:
inputs:
ref:
required: false
type: string
default: ${{ github.ref }}
env:
GO_VERSION: '1.22'
RUBY_VERSION: '3.4'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Set up ko
uses: ko-build/setup-ko@v0.9
- name: Go format check
run: |
if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then
echo "Go code is not formatted, run 'make fmt' to format code."
exit 1;
fi
- name: Run unit tests
run: |
make test
- name: Run vet
run: |
make vet
- name: Run goreleaser
uses: goreleaser/goreleaser-action@v6
with:
version: '~> v2'
args: release --skip validate --skip archive --clean --snapshot
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
KO_DOCKER_REPO: goreleaser.ko.local
- name: Save docker image
run: |
docker save goreleaser.ko.local/server:latest > gemfast-PR-${{ github.sha }}.tar
- name: Upload docker image
uses: actions/upload-artifact@v4
with:
name: gemfast-docker
path: gemfast-PR-${{ github.sha }}.tar
if-no-files-found: error
smoke-test:
name: "smoke"
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
pkg: [docker]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v3
with:
repository: rails/rails
path: clones/rails
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
- uses: actions/download-artifact@v4
with:
name: gemfast-${{ matrix.pkg }}
- name: Smoke test
run: ./scripts/run_smoke_tests.sh "${{ matrix.pkg }}"
env:
BUILD_TYPE: "${{ matrix.pkg }}"
cve-test:
name: "cve"
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
pkg: [docker]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
- uses: actions/download-artifact@v4
with:
name: gemfast-${{ matrix.pkg }}
- name: CVE test
run: ./scripts/run_cve_tests.sh "${{ matrix.pkg }}"
env:
BUILD_TYPE: "${{ matrix.pkg }}"
filter-test:
name: "filter"
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
pkg: [docker]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
- uses: actions/download-artifact@v4
with:
name: gemfast-${{ matrix.pkg }}
- name: Filter test
run: ./scripts/run_filter_tests.sh "${{ matrix.pkg }}"
env:
BUILD_TYPE: "${{ matrix.pkg }}"
private-gems-test:
name: "private-gems"
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
pkg: [docker]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
- uses: actions/download-artifact@v4
with:
name: gemfast-${{ matrix.pkg }}
- name: Private gems test
run: ./scripts/run_private_gem_tests.sh "${{ matrix.pkg }}"
env:
BUILD_TYPE: "${{ matrix.pkg }}"
auth-test:
name: "auth"
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
pkg: [docker]
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ env.RUBY_VERSION }}
- uses: actions/download-artifact@v4
with:
name: gemfast-${{ matrix.pkg }}
- name: Private gems test
run: ./scripts/run_auth_tests.sh
env:
BUILD_TYPE: "${{ matrix.pkg }}"