From fe07a19c4e68e298bcb3ca7f5b682aad1eebe667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?= Date: Sat, 2 Nov 2024 06:07:35 -0300 Subject: [PATCH] ci: Add first version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Patrick José Pereira --- .github/workflows/ci.yml | 79 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8841e30 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,79 @@ +name: CI + +on: + workflow_dispatch: + pull_request: + push: + +jobs: + deploy-blueos-extension: + runs-on: ubuntu-latest + env: + PLATFORMS: "linux/arm/v7,linux/arm64/v8" + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + + steps: + - name: Login to Docker Hub + if: success() && github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - name: Prepare + id: prepare + run: | + # Deploy image with the name of the branch, if the build is a git tag, replace tag with the tag name. + # If git tag matches semver, append latest tag to the push. + DOCKER_IMAGE=${DOCKER_USERNAME:-bluerobotics}/blueos-jupyter + VERSION=${GITHUB_REF##*/} + if [[ $GITHUB_REF == refs/tags/* ]]; then + VERSION=${GITHUB_REF#refs/tags/} + fi + TAGS="--tag ${DOCKER_IMAGE}:${VERSION}" + if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then + TAGS="$TAGS --tag ${DOCKER_IMAGE}:latest" + fi + echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT + echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "buildx_args=${TAGS} --file Dockerfile ." >> $GITHUB_OUTPUT + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + with: + platforms: all + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + version: latest + + - name: Docker Buildx (build) + run: | + docker buildx build \ + --output "type=image,push=false" \ + --platform $PLATFORMS \ + ${{ steps.prepare.outputs.buildx_args }} + + - name: Docker Buildx (push) + if: success() && github.event_name != 'pull_request' + run: | + docker buildx build \ + --output "type=image,push=true" \ + --platform $PLATFORMS \ + ${{ steps.prepare.outputs.buildx_args }} + + - name: Inspect image + if: always() && github.event_name != 'pull_request' + run: | + docker buildx imagetools \ + inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} \ No newline at end of file