Build packages #390
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: Build packages | |
# Big chunk of the build process logic is in the mage build targets | |
on: | |
workflow_call: | |
push: | |
branches: [master] | |
tags: | |
- '*' | |
schedule: | |
- cron: '0 2 * * *' | |
env: | |
GITHUB_OWNER: mysteriumnetwork | |
GITHUB_REPO: node | |
GITHUB_SNAPSHOT_REPO: node-builds | |
GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
AWS_EC2_METADATA_DISABLED: true # disable AWS region lookup | |
jobs: | |
setup-env: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
fetch-tags: true | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
- name: Prepare environment | |
run: | | |
RELEASE_BUILD=false | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then RELEASE_BUILD=true; fi | |
RC_BUILD=false | |
if [[ "${GITHUB_REF}" == refs/tags/*-rc* ]]; then RC_BUILD=true; fi | |
SNAPSHOT_BUILD=false | |
if [[ "${GITHUB_REF}" == "refs/heads/master" ]]; then SNAPSHOT_BUILD=true; fi | |
PR_BUILD=false | |
if [[ "${SNAPSHOT_BUILD}" == "false" && "${RELEASE_BUILD}" == "false" ]]; then PR_BUILD=true; fi | |
if [[ "${RELEASE_BUILD}" == "true" ]]; then | |
BUILD_VERSION="${GITHUB_REF#refs/tags/}"; | |
elif [[ "${SNAPSHOT_BUILD}" == "true" ]]; then | |
BUILD_VERSION="$(git describe --abbrev=0 --tags)"-1snapshot-"$(date '+%Y%m%dT%H%M')"-"$(echo ${GITHUB_SHA} | cut -c1-8)"; | |
elif [[ "${PR_BUILD}" == "true" ]]; then | |
BRANCH="${GITHUB_HEAD_REF////-}" | |
if [[ "${BRANCH}" == "" ]]; then BRANCH="${GITHUB_REF_NAME}"; fi | |
BUILD_VERSION="$(git describe --abbrev=0 --tags)"-1branch-"${BRANCH}"; | |
fi | |
cat <<EOT >> env.sh | |
export RELEASE_BUILD=$RELEASE_BUILD; | |
export RC_BUILD=$RC_BUILD; | |
export PR_BUILD=$PR_BUILD; | |
export SNAPSHOT_BUILD=$SNAPSHOT_BUILD; | |
export BUILD_VERSION=$BUILD_VERSION; | |
export BUILD_NUMBER="${{ github.run_id }}"; | |
export BUILD_COMMIT="$(echo ${GITHUB_SHA} | cut -c1-8)"; | |
export BUILD_BRANCH="${GITHUB_REF_NAME}"; | |
EOT | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: env.sh | |
path: env.sh | |
- name: Create bucket | |
if: | | |
github.ref == 'refs/heads/master' || | |
github.ref_type == 'tag' | |
run: | | |
source env.sh | |
go run mage.go -v MakeBucket | |
build-packages: | |
runs-on: ubuntu-latest | |
needs: [setup-env] | |
strategy: | |
max-parallel: 6 | |
matrix: | |
platform: | |
- PackageLinuxRaspberryImage | |
- PackageLinuxAmd64 | |
- PackageLinuxArm | |
- PackageLinuxDebianAmd64 | |
- PackageLinuxDebianArm64 | |
- PackageLinuxDebianArmv6l | |
- PackageLinuxDebianArm | |
- PackageMacOSAmd64 | |
- PackageMacOSArm64 | |
- PackageWindowsAmd64 | |
- PackageAndroid | |
- PackageAndroidProvider | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
- uses: actions/download-artifact@v4 | |
with: | |
name: env.sh | |
- name: Setup FPM | |
run: | | |
sudo apt-get update | |
sudo apt-get install ruby-dev build-essential | |
sudo gem i fpm -f | |
- name: Build package | |
run: | | |
source env.sh | |
unset CI # workaround for "PackageAndroid" target | |
sudo -E go run mage.go -v ${{ matrix.platform }} | |
build-swagger: | |
runs-on: ubuntu-latest | |
needs: [setup-env, build-packages] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
- uses: actions/download-artifact@v4 | |
with: | |
name: env.sh | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build docker | |
run: | | |
source env.sh | |
go run mage.go -v PackageDockerSwaggerRedoc | |
release: | |
needs: [build-packages, build-swagger] | |
uses: ./.github/workflows/release.yml | |
secrets: inherit | |
if: | | |
github.ref == 'refs/heads/master' || | |
github.ref_type == 'tag' | |
cleanup-env: | |
runs-on: ubuntu-latest | |
needs: [release] | |
if: | | |
always() && | |
(github.ref == 'refs/heads/master' || github.ref_type == 'tag') | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.21.x' | |
- uses: actions/download-artifact@v4 | |
with: | |
name: env.sh | |
- name: Remove bucket | |
run: | | |
source env.sh | |
go run mage.go -v RemoveBucket || true # ignore if bucket was not available |