diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 090aa1ad..eaa7fb60 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -21,6 +21,38 @@ jobs: name: Run tests run: make test + dist: + needs: tests + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/v') + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Build UI + run: make build-ui + - + name: Build distributables + run: make dist + - + name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-west-1 + - + name: Upload binaries to S3 + run: | + aws s3 sync dist s3://builds.loraserver.io/chirpstack + docker: needs: tests runs-on: ubuntu-latest @@ -57,7 +89,7 @@ jobs: id: docker_build uses: docker/build-push-action@v2 with: - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 push: ${{ startsWith(github.ref, 'refs/tags/v') }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} diff --git a/.gitignore b/.gitignore index 25774d5f..5b38a1d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # hidden files .* +!/chirpstack/.rpm # Log files *.log diff --git a/Makefile b/Makefile index 12529a97..ce4886f5 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,8 @@ build-release: # Build distributable binaries. dist: - docker-compose run --rm chirpstack make dist + docker-compose run --rm chirpstack-build-amd64 make dist + docker-compose run --rm chirpstack-build-arm64 make dist # Builds the UI. build-ui: diff --git a/chirpstack/rpm/chirpstack.env b/chirpstack/.rpm/chirpstack.env similarity index 100% rename from chirpstack/rpm/chirpstack.env rename to chirpstack/.rpm/chirpstack.env diff --git a/chirpstack/rpm/chirpstack.service b/chirpstack/.rpm/chirpstack.service similarity index 100% rename from chirpstack/rpm/chirpstack.service rename to chirpstack/.rpm/chirpstack.service diff --git a/chirpstack/rpm/chirpstack.spec b/chirpstack/.rpm/chirpstack.spec similarity index 100% rename from chirpstack/rpm/chirpstack.spec rename to chirpstack/.rpm/chirpstack.spec diff --git a/chirpstack/rpm/configuration b/chirpstack/.rpm/configuration similarity index 100% rename from chirpstack/rpm/configuration rename to chirpstack/.rpm/configuration diff --git a/chirpstack/Cargo.toml b/chirpstack/Cargo.toml index 2f6eba9f..5b8369f5 100644 --- a/chirpstack/Cargo.toml +++ b/chirpstack/Cargo.toml @@ -122,7 +122,6 @@ systemd-units = { enable = true } [package.metadata.rpm] package = "chirpstack" -config = "rpm" [package.metadata.rpm.files] "configuration/" = { path = "/etc/chirpstack/" } diff --git a/chirpstack/Makefile b/chirpstack/Makefile index b64c458a..b123f188 100644 --- a/chirpstack/Makefile +++ b/chirpstack/Makefile @@ -12,16 +12,17 @@ release: dist: release-deb release-rpm release-targz release-deb: - mkdir -p /chirpstack/dist/deb + mkdir -p /chirpstack/dist cargo deb - cp /target/debian/*.deb /chirpstack/dist/deb + cp /target/debian/*.deb /chirpstack/dist release-rpm: - mkdir -p /chirpstack/dist/rpm + mkdir -p /chirpstack/dist cargo rpm build - find /target/release/rpmbuild/RPMS -type f -exec cp {} /chirpstack/dist/rpm \; + find /target/release/rpmbuild/RPMS -type f -exec cp {} /chirpstack/dist \; release-targz: + mkdir -p /chirpstack/dist tar -czvf /chirpstack/dist/chirpstack_$(PKG_VERSION)_$(TARGET_ARCH).tar.gz -C /target/release chirpstack test: diff --git a/docker-compose.yml b/docker-compose.yml index f0769598..6a624c81 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ services: chirpstack: image: chirpstack/chirpstack-dev-cache:latest + platform: linux/amd64 volumes: - ./:/chirpstack depends_on: @@ -15,6 +16,18 @@ services: ports: - "8080:8080" + chirpstack-build-amd64: + image: chirpstack/chirpstack-dev-cache:latest + platform: linux/amd64 + volumes: + - ./:/chirpstack + + chirpstack-build-arm64: + image: chirpstack/chirpstack-dev-cache:latest + platform: linux/arm64 + volumes: + - ./:/chirpstack + chirpstack-ui: build: context: ./ui