mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 04:17:55 +08:00
375c35c5a1
* chore: update to go 1.22 Only go toolchain version is updated. We compile with go 1.22, but we allow others to compile using language version 1.21 if they wish to. If we also updated the go version in go.mod everyone would be forced to update, as that is enforced as a minimum allowed version. This comment explains the difference well enough https://news.ycombinator.com/item?id=36455759 Signed-off-by: Andrei Aaron <aaaron@luxoft.com> * chore: fix freeBSD AMD64 build Looks like they made some cleanup in the logic allowing buildmode pie on various platforms. Related to https://github.com/golang/go/issues/31544 See the code at: https://cs.opensource.google/go/go/+/master:src/internal/platform/supported.go;l=222-231;drc=d7fcb5cf80953f1d63246f1ae9defa60c5ce2d76;bpv=1;bpt=0 Signed-off-by: Andrei Aaron <aaaron@luxoft.com> --------- Signed-off-by: Andrei Aaron <aaaron@luxoft.com>
131 lines
4.4 KiB
YAML
131 lines
4.4 KiB
YAML
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
release:
|
|
types:
|
|
- published
|
|
name: build
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
build-arch:
|
|
name: Build ZOT multiarch
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
os: [linux, darwin, freebsd]
|
|
arch: [amd64, arm64]
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v4
|
|
- name: Install go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: 1.22.x
|
|
- name: Cache go dependencies
|
|
id: cache-go-dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-mod-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-mod-
|
|
- name: Cache go build output
|
|
id: cache-go-build
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
key: ${{ matrix.os }}-${{ matrix.arch }}-go-build-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ matrix.os }}-${{ matrix.arch }}-go-build-
|
|
- name: Install go dependencies
|
|
if: steps.cache-go-dependencies.outputs.cache-hit != 'true'
|
|
run: |
|
|
cd $GITHUB_WORKSPACE
|
|
go mod download
|
|
- name: Install other dependencies
|
|
run: |
|
|
cd $GITHUB_WORKSPACE
|
|
go install github.com/swaggo/swag/cmd/swag@v1.16.2
|
|
sudo apt-get update
|
|
sudo apt-get install rpm
|
|
sudo apt-get install snapd
|
|
sudo apt-get install libgpgme-dev libassuan-dev libbtrfs-dev libdevmapper-dev pkg-config
|
|
git clone https://github.com/containers/skopeo -b v1.12.0 $GITHUB_WORKSPACE/src/github.com/containers/skopeo
|
|
cd $GITHUB_WORKSPACE/src/github.com/containers/skopeo && \
|
|
make bin/skopeo && \
|
|
sudo cp bin/skopeo /usr/bin && \
|
|
rm -rf $GITHUB_WORKSPACE/src/github.com/containers/skopeo
|
|
cd $GITHUB_WORKSPACE
|
|
curl -Lo notation.tar.gz https://github.com/notaryproject/notation/releases/download/v1.0.0-rc.4/notation_1.0.0-rc.4_linux_amd64.tar.gz
|
|
sudo tar xvzf notation.tar.gz -C /usr/bin notation
|
|
rm -f notation.tar.gz
|
|
- name: Run build
|
|
timeout-minutes: 10
|
|
run: |
|
|
echo "Building for $OS:$ARCH"
|
|
cd $GITHUB_WORKSPACE
|
|
make binary binary-minimal binary-debug cli bench exporter-minimal
|
|
env:
|
|
OS: ${{ matrix.os }}
|
|
ARCH: ${{ matrix.arch }}
|
|
|
|
- name: Generate GraphQL Introspection JSON on Release
|
|
if: github.event_name == 'release' && github.event.action == 'published' && matrix.os == 'linux' && matrix.arch == 'amd64'
|
|
run: |
|
|
bin/zot-linux-amd64 serve examples/config-search.json &
|
|
sleep 10
|
|
curl -X POST -H "Content-Type: application/json" -d @.pkg/debug/githubWorkflows/introspection-query.json http://localhost:5000/v2/_zot/ext/search | jq > bin/zot-gql-introspection-result.json
|
|
pkill zot
|
|
|
|
- if: github.event_name == 'release' && github.event.action == 'published'
|
|
name: Publish artifacts on releases
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
file: bin/z*
|
|
tag: ${{ github.ref }}
|
|
overwrite: true
|
|
file_glob: true
|
|
|
|
release-checksums:
|
|
name: Release Artifact Checksums
|
|
needs: build-arch
|
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
steps:
|
|
- name: Download Release Artifacts
|
|
uses: robinraju/release-downloader@v1.9
|
|
with:
|
|
tag: ${{ github.ref_name }}
|
|
fileName: "z*"
|
|
- name: Generate checksum
|
|
uses: jmgilman/actions-generate-checksum@v1
|
|
with:
|
|
patterns: z*
|
|
method: sha256
|
|
output: checksums.sha256.txt
|
|
- name: Add wildcard character prefix to filenames in checksum file
|
|
run: sed -i 's! ! \*!g' checksums.sha256.txt
|
|
- name: Publish checksums on releases
|
|
uses: svenstaro/upload-release-action@v2
|
|
with:
|
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
file: checksums.sha256.txt
|
|
tag: ${{ github.ref }}
|
|
overwrite: true
|