name: Build ubuntu images on: schedule: - cron: 0 12 */7 * * push: paths: - '.github/workflows/build-ubuntu.yml' - 'linux/ubuntu/**' branches: - 'master' pull_request: paths: - '.github/workflows/build-ubuntu.yml' - 'linux/ubuntu/**' workflow_dispatch: env: SLUG: ${{ github.repository_owner }}/ubuntu IMAGE: ubuntu PLATFORMS: linux/amd64 NODE: '12' BUILD_REF: ${{ github.sha }} SKIP_TEST: true defaults: run: shell: sh jobs: build-base: runs-on: ubuntu-latest environment: Images env: PLATFORMS: linux/amd64,linux/arm64 strategy: fail-fast: true max-parallel: 4 matrix: TAG: [latest, 20.04, 18.04, 16.04] steps: - name: Login to GitHub Container Registry id: ghcr uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Quay id: quay uses: docker/login-action@v1 with: registry: quay.io username: ${{ secrets.QUAY_USER }} password: ${{ secrets.QUAY_TOKEN }} - name: Login to Docker Hub id: dckr uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_TOKEN }} - name: Print tag run: | if ${{ github.event_name == 'pull_request' }} && ${{ !env.ACT }} ; then echo "PART_TAG=PR-${{ github.event.number }}" >> $GITHUB_ENV elif ${{ !env.ACT }} ; then echo "PART_TAG=$(date +%Y%m%d)" >> $GITHUB_ENV else echo "PART_TAG=dev" >> $GITHUB_ENV fi - name: Set Ubuntu version to RELEASE run: | if [ "latest" = "${{ matrix.TAG }}" ]; then echo "RELEASE_TAG=$(lsb_release -rs)" >> $GITHUB_ENV else echo "RELEASE_TAG=${{ matrix.TAG }}" >> $GITHUB_ENV fi - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - uses: actions/checkout@v2 - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} run: ./build.sh env: TAG: act-${{ matrix.TAG }}-${{ env.PART_TAG }} TYPE: act FROM_IMAGE: buildpack-deps FROM_TAG: ${{ env.RELEASE_TAG }} DISTRO: ${{ env.IMAGE }} BUILD_TAG_VERSION: ${{ env.PART_TAG }} BUILD_TAG: act-${{ matrix.TAG }} - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} run: ./build.sh env: TAG: runner-${{ matrix.TAG }}-${{ env.PART_TAG }} TYPE: runner DISTRO: ${{ env.IMAGE }} FROM_IMAGE: ghcr.io/${{ env.SLUG }} FROM_TAG: act-${{ matrix.TAG }}-${{ env.PART_TAG }} BUILD_TAG_VERSION: ${{ env.PART_TAG }} BUILD_TAG: runner-${{ matrix.TAG }} - uses: actions/setup-go@v2 with: go-version: 1.16 - uses: actions/checkout@v2 with: repository: nektos/act path: act - if: ${{ !env.SKIP_TEST }} env: ACT_TEST_IMAGE: ghcr.io/${{ env.SLUG }}:act-${{ matrix.TAG }}-${{ env.PART_TAG }} run: | cd act/ go test ./... - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} if: ${{ ( github.event_name != 'pull_request' && !env.ACT ) }} run: ./build.sh env: TAG: act-${{ matrix.TAG }} TYPE: act FROM_IMAGE: buildpack-deps FROM_TAG: ${{ env.RELEASE_TAG }} DISTRO: ${{ env.IMAGE }} BUILD_TAG_VERSION: ${{ env.PART_TAG }} BUILD_TAG: act-${{ matrix.TAG }} - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} if: ${{ ( github.event_name != 'pull_request' && !env.ACT ) }} run: ./build.sh shell: sh env: TAG: runner-${{ matrix.TAG }} TYPE: runner DISTRO: ${{ env.IMAGE }} FROM_IMAGE: ghcr.io/${{ env.SLUG }} FROM_TAG: act-${{ matrix.TAG }} BUILD_TAG_VERSION: ${{ env.PART_TAG }} BUILD_TAG: runner-${{ matrix.TAG }} build-flavours: runs-on: ubuntu-latest needs: [build-base] strategy: fail-fast: true max-parallel: 4 matrix: TAG: [latest, 20.04, 18.04, 16.04] TYPE: [js, rust] steps: - name: Login to GitHub Container Registry id: ghcr uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Quay id: quay uses: docker/login-action@v1 with: registry: quay.io username: ${{ secrets.QUAY_USER }} password: ${{ secrets.QUAY_TOKEN }} - name: Login to Docker Hub id: dckr uses: docker/login-action@v1 with: username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_TOKEN }} - name: Print tag run: | if ${{ github.event_name == 'pull_request' }} && ${{ !env.ACT }} ; then echo "PART_TAG=PR-${{ github.event.number }}" >> $GITHUB_ENV elif ${{ !env.ACT }} ; then echo "PART_TAG=$(date +%Y%m%d)" >> $GITHUB_ENV else echo "PART_TAG=dev" >> $GITHUB_ENV fi - name: Set Ubuntu version to RELEASE run: | if [ "latest" = "${{ matrix.TAG }}" ]; then echo "RELEASE_TAG=$(lsb_release -rs)" >> $GITHUB_ENV else echo "RELEASE_TAG=${{ matrix.TAG }}" >> $GITHUB_ENV fi - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - uses: actions/checkout@v2 - name: Build and push ${{ env.SLUG }}:${{ env.TAG }} run: ./build.sh env: TAG: ${{ matrix.TYPE }}-${{ matrix.TAG }}-${{ env.PART_TAG }} TYPE: ${{ matrix.TYPE }} FROM_IMAGE: ghcr.io/${{ env.SLUG }} FROM_TAG: act-${{ matrix.TAG }} DISTRO: ${{ env.IMAGE }} BUILD_TAG_VERSION: ${{ env.PART_TAG }} BUILD_TAG: ${{ matrix.TYPE }}-${{ matrix.TAG }}